实验设计二(模拟网上购书的结账功能)_第1页
实验设计二(模拟网上购书的结账功能)_第2页
实验设计二(模拟网上购书的结账功能)_第3页
实验设计二(模拟网上购书的结账功能)_第4页
实验设计二(模拟网上购书的结账功能)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京信息科技大学实验设计报告课程名称面向对象程序设计实验设计题 目 模拟网上购书的结帐功能指导教师李春强设计起止日期 设计地点系 另寸 信息安全专 业 信息安全学生姓名 李继文班级 / 学信安 1002/2010012713成 绩 1.课程设计目的:通过本实验使学生利用面向对象程序设计软件开发方法,即软件开发过程划分为明显的几个阶段:问题分析和功能定义、对象设计及实现、核心控制设计、编码与测试、进化等实现模拟网上购书的结帐功 能方面的应用。2. 课程设计内容:用户在网上购书以后,系统根据购书人的不同类型计算出购书人的费用。网上购书的一般过程:用户首先输入会员号,然后,选择想要买的书籍放到购书筐

2、中,选择结束后,用户要求系统结帐,系统便计算出费用通知用户。注:本例并不模拟网上购书的全部过程 ,所以把选择书的过程略去,假设用户已经选定了两本书。3. 课程设计要求:(1) 根据实际情况,确定购书人分为3类:普通人、会员、贵宾。 “普通人”的购书费用按照原价收取; “会员”购书费的计算方法是:五星级会员按照原价的 70%攵取,四星级会员按照原价的 80%攵 取,三星级会员按照原价的 85%攵取,二星级会员按照原价的 90%攵取,一星级会员按照原价的 95%攵 取。 “贵宾”的购书费根据特别指定的折扣率计算机收取的费用,例如折扣率40%,则按照实际书费的60%攵取。(2) 对象(类)的设计 根

3、据(1)分析,需要设计一个基类 buyer和它的3各派生类member(会员)、layfolk(普通人)、honoured_guest(贵宾)。基类中包括的数据成员是姓名、购书人编号、地址、购书金额。member类中除了继承了 buyer的数据,还增加了会员级别:honoured_guest则增加了折扣率一项。 在基类中定义了构造函数和对所有类型的购书人相同的操作,getbuyname()负责取出购书者的姓名;getaddress()负责取出购书者的地址;getpay()负责取出购书者应付出的金额;getid()负责取出购书者的编号。由于对不同购书者的购书额的计算方法不同,所以不能在基类中确定

4、计算方法;又由于各类购书者的数据内容不同,显示的方法也不一样.因此在基类中将setpay和display定义为虚函数。5 4. 实验条件:(1) 主要设备:586或更高机型,256MB或更高的内存,40G或更大的硬盘。(2) 主要软件: 操作系统可为 Windows9X WinMe Win2000或更高版本等; 开发环境为 VC+6.0或者TC+3.0。(3) 参考书目: 纟C+面向对象程序设计 第10章面向对象设计方法与实例陈维兴等编著 中国铁道出版社2004年6月第1版 纟C+面向对象程序设计陈维兴等编著 清华大学出版社2004年6月第1版5. 实验方法与步骤:界面如下:(1) 这个用户是

5、普通用户:(2) 登陆进去后的界面(3) 查看自己的购物车C:U ?e rshtDe5to pcebookebookDebgeboo k.exe幘够底你所 卜晝看自己 异靖算 3:iBH程Jy 編r 社:zhlLd 学卩 fc:9(4)结算 CtUsershtDesktopce bo0kebookDeb u gebooke xf丨回審算出 ii l:ga:康愛的用户alien(5)用会员用户登陆哥.的 所己 台算出H 主冃:* nrid Z 3S9 r 社:9S9 s X L- 0在:2 击价_企价_揺亍命令的编号勾物车1 3 - 请2按 单.请 菜按录 主曹 回岀新 KPn| 回-C:U s

6、e rihtDestopce book、e-boo kDebu gXeooo k.exe会员是有优惠的!如上图(6)用贵宾用户登陆CrUse rshtDeslctopceboci ke bcokDebug? book, exe-1 9 71m 1 :oi勺t :z贵书的Ms ggl:lz:Q:2 亲缩一返退-1: 3 请2拯 单请 Ml 的臂王请登 回岀新如上图:优惠9 6. 实验总结:通过这次课设,进一步掌握了 c+stl中map这一个容器的使用,并且对于 c+stl中的一些 算法有了一定的掌握,并且对于模板函数有了一定的了解。附录:代码如下:#inelude #inelude #inclu

7、de #inelude #include #include using namespacestd;class bookprivate :str ing book name;float price;stri ng press;public :book(str ing bn,float p,stri ng pr)book name=b n;price=p;press=pr;book()stri ng getb n()retur n book name;float getp()return price;void bdisplay()cout 书名: booknameendl;cout 出版社 : p

8、ressendl;cout 价格 : priceendl;mapbook1; / 书的类定义 class buyerprotected :string name;string address;string id;float money;public :vectorbi;void sum(mapll)money=0;for (vector:iterator ir=bi.begin();ir!=bi.end();ir+) money+=ll.find(*ir)-second.getp();string getbuyname()return name;string getaddress()retur

9、n address;string getid()return id;float getpay()return money;virtual void setpay()money=money;virtual void display()buyer(string n,string a,string i, floatm,vectorb)name=n; address=a; id=i; money=m; bi=b;class member: public buyer private :/ 会员的定义int honoured_guestpublic :member(string n,string a,st

10、ring i,floatm,vectorb, int h):buyer(n,a,i,m,b)void setpay()switch ( honoured_guest)case 1:money=money*0.95; break ; case 2:money=money*0.9; break ;case 3:money=money*0.85; break ; case 4:money=money*0.8; break ;case 5:money=money*0.7; break ;void display()cout 亲爱的 honoured_guest 级会员 : getbuyname()en

11、dl; cout 你的购书款为: getpay()endl;setpay();cout 优惠后的购书款: getpay()endl;class honoured_guest: public buyerprivate :float disaccont;public :honoured_guest(string n,string a,string i, float m,vectorb, float d):buyer(n,a,i,m,b) disaccont=d;void setpay()money=money*(1-disaccont);void display()cout 亲爱的贵宾: getb

12、uyname()endl;cout 你的购书价格: getpay()endl;setpay();cout 优惠后的价格为: getpay()endl;class layfolk: public buyer / 普通用户public :layfolk(string n,string a,string i,float m,vectorsc):buyer(n,a,i,m,sc)void setpay() money=money;void display()cout 亲爱的用户 : getbuyname()endl;cout 你的购书款为: getpay()endl;setpay();cout 你优惠

13、后购书款为: getpay()endl;class dealprivate :mapbook1; vectorla;vectormb; vectorhgt;public : deal(mapm1,vectorla1,vectormb1,vectorhgt1) book1=m1;la=la1;mb=mb1;hgt=hgt1;int judge(string ll) / 判断登录用户的类型if (ll.substr(0,2)= lf )return 1;else if (ll.substr(0,2)= mb)return 2;else if (ll.substr(0,2)= hg )return

14、3;else return 4;void land()string cid,cname; vector:iterator it; vector:iterator im;vector:iterator ih;bool mybl= true ;int flag;docout endl;cout 欢迎你的到来 endl;cout endl;cout 请输入你的账号 cid;cout 请输入用户名 cname;switch (judge(cid)case 1:for (it=la.begin();it!=la.end();it+)if (cname=(*it).getbuyname()&cid=(*i

15、t).getid()break ;else continue ;if (it=la.end()system( CLS);cout 输入错误或者没有该账号!请重新输入! endl; continue ; elsecout 登陆成功!正在跳转中!请稍候。! endl;Sleep(1000); system( CLS);bool mybool= true ; docout 请输入你所要执行命令的编号 endl;cout 1: 查看自己的购物车 endl;cout 2: 结算 endl;cout 3: 退出 flag;switch (flag)case 1:for (vector:iterator i

16、o=(*it).bi.begin();io!=(*it).bi.end();io+)map:iterator ib=book1.find(*io); ib-second.bdisplay();cout endl;cout 返回主菜单请按: 1 endl;cout 退出请按: 2 endl;cout 重新登录请按: 3 f1;switch (f1)case 1:system( CLS); continue ;case 2:system( CLS);mybool= false ;mybl= false ;break;case 3:system( CLS);mybool= false ; break

17、 ; break ;case 2:(*it).sum(book1);(*it).display();endl;cout cout 返回主菜单请按: 1 endl;cout 退出请按: 2 endl;cout 重新登录请按: 3 f1;switch (f1)case 1:system( CLS);continue ;case 2:system( CLS);mybool= false ;mybl= false ;break;case 3:system( CLS);mybool=false ; break ;break ;case 3:mybool= false ;mybl= false ; bre

18、ak ; while (mybool); break ;case 2:for (im=mb.begin();im!=mb.end();im+)if (cname=(*im).getbuyname()&cid=(*im).getid() break ;else continue ;if (im=mb.end()cout 输入错误或者没有该账号!请重新输入! endl; system( CLS);continue ;elsecout 登陆成功!正在跳转中!请稍候。! endl; Sleep(1000);system( cls );bool mya=true ;docout 请输入你所要执行命令的编

19、号 endl; cout 1: 查看自己的购物车 endl;cout 2: 结算 endl;cout 3: 退出 flag;switch (flag) case 1:for (vector:iterator io=(*im).bi.begin();io!=(*im).bi.end();io+) map:iterator ib=book1.find(*io); ib-second.bdisplay();13 cout 返回主菜单请按: 1 endl;cout 退出请按: 2 endl;cout 重新登录请按: 3 f1;switch (f1)case 1:system( CLS );contin

20、ue ;case 2:mya= false ;mybl= false ; break ; case 3:system( CLS );mya=false ;break ;break ;case 2:(*im).sum(book1);(*im).display();cout endl;cout 返回主菜单请按: 1 endl; cout 退出请按: 2 endl; cout 重新登录请按: 3 f1;switch (f1)case 1:system( CLS );continue ;case 2:mya= false ;mybl= false ; break ; case 3:system( CL

21、S );mya=false ;break ;break ;case 3:mya= false ;mybl= false ;break; while (mya); break ;case 3:bool myb=true ;for (ih=hgt.begin();ih!=hgt.end();ih+)if (cname=(*ih).getbuyname()&cid=(*ih).getid()break ;else continue ;if (ih=hgt.end()cout 输入错误或者没有该账号!请重新输入! endl; system( CLS);continue ;elsecout 登陆成功!正

22、在跳转中!请稍候。! endl; Sleep(1000);system( cls );docout 请输入你所要执行命令的编号 endl;cout 1: 查看自己的购物车 endl;cout 2: 结算 endl;cout 3: 退出 flag;switch (flag)case 1:for (vector:iterator io=(*ih).bi.begin();io!=(*ih).bi.end();io+)map:iterator ib=book1.find(*io); ib-second.bdisplay();cout endl;17 cout 返回主菜单请按: 1 endl;cout 退出请按: 2 endl;cout 重新登录请按: 3 f1;switch (f1)case 1:system( CLS); continue ;case 2:myb= false ;mybl= false ;break; case 3:system( CLS);myb= false ; break ; break ;case 2:(*ih).sum(book1);(*ih).display();endl;cout cout 返回主菜单请按: 1 endl; cout 退出请按: 2 endl;cout 重新登录请按

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论