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

下载本文档

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

文档简介

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定义为虚函数。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)这个用户是普通用户:(2)登陆

5、进去后的界面(3)查看自己的购物车(4)结算(5)用会员用户登陆会员是有优惠的!如上图。(6)用贵宾用户登陆如上图:优惠6. 实验总结:通过这次课设,进一步掌握了c+stl中map这一个容器的使用,并且对于c+stl中的一些算法有了一定的掌握,并且对于模板函数有了一定的了解。附录:代码如下:#include#include#include#include#include#includeusing namespace std;class bookprivate:string bookname;float price;string press;public:book(string bn,float

6、 p,string pr)bookname=bn;price=p;press=pr;book()string getbn()return bookname;float getp()return price;void bdisplay()cout书名:booknameendl;cout出版社:pressendl;cout价格:priceendl;mapbook1; /书的类定义class buyerprotected:string name;string address;string id;float money;public:vectorbi; void sum(mapll)money=0;f

7、or(vector:iterator ir=bi.begin();ir!=bi.end();ir+)money+=ll.find(*ir)-second.getp();string getbuyname()return name;string getaddress()return address;string getid()return id;float getpay()return money;virtual void setpay()money=money;virtual void display()buyer(string n,string a,string i,float m,vect

8、orb)name=n;address=a;id=i;money=m;bi=b;class member:public buyer /会员的定义private:int honoured_guest;public:member(string n,string a,string i,float m,vectorb,int h):buyer(n,a,i,m,b)honoured_guest=h;void setpay()switch( honoured_guest)case 1:money=money*0.95;break;case 2:money=money*0.9;break;case 3:mon

9、ey=money*0.85;break;case 4:money=money*0.8;break;case 5:money=money*0.7;break;void display()cout亲爱的 honoured_guest级会员:getbuyname()endl;cout你的购书款为:getpay()endl;setpay();cout优惠后的购书款:getpay()endl;class honoured_guest:public buyerprivate:float disaccont;public:honoured_guest(string n,string a,string i,f

10、loat m,vectorb,float d):buyer(n,a,i,m,b)disaccont=d;void setpay()money=money*(1-disaccont);void display()cout亲爱的贵宾:getbuyname()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)v

11、oid setpay()money=money;void display()cout亲爱的用户:getbuyname()endl;cout你的购书款为:getpay()endl;setpay();cout你优惠后购书款为: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

12、.substr(0,2)=lf)return 1;else if(ll.substr(0,2)=mb)return 2;else if(ll.substr(0,2)=hg)return 3;else return 4;void land()string cid,cname;vector:iterator it;vector:iterator im;vector:iterator ih;bool mybl=true;int flag;do cout-endl;cout-欢迎你的到来-endl;cout-endl;cout请输入你的账号cid;cout请输入用户名cname;switch(judg

13、e(cid)case 1:for(it=la.begin();it!=la.end();it+)if(cname=(*it).getbuyname()&cid=(*it).getid()break;else continue;if(it=la.end()system(CLS);cout输入错误或者没有该账号!请重新输入!endl;continue;else cout登陆成功!正在跳转中!请稍候。!endl;Sleep(1000);system(CLS);bool mybool=true;do cout请输入你所要执行命令的编号endl;cout1:查看自己的购物车endl;cout2:结算en

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

15、 3:system(CLS);mybool=false;break;break;case 2:(*it).sum(book1);(*it).display();cout-endl;cout返回主菜单请按:1endl;cout退出请按:2endl;cout重新登录请按:3f1;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;

16、break; 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;else cout登陆成功!正在跳转中!请稍候。!endl;Sleep(1000);system(cls);bool mya=true;do cout请输入你所要执行命令的编号endl;cout1:查看自己

17、的购物车endl;cout2:结算endl;cout3:退出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();cout-endl;cout返回主菜单请按:1endl;cout退出请按:2endl;cout重新登录请按:3f1;switch(f1)case 1:system(CLS);continue;case 2:mya=false;mybl=false;break;

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

19、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;else cout登陆成功!正在跳转中!请稍候。!endl;Sleep(1000);system(cls);do cout请输入你所要执行命令的编号endl;cout1:查看自己的购物车endl;cout2:结算en

20、dl;cout3:退出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;cout返回主菜单请按:1endl;cout退出请按:2endl;cout重新登录请按:3f1;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();cout-endl;cout返回主菜单请按:1endl;cout退出请按:2endl;cout重新登录请按:3f1;switch(f1)case 1:s

温馨提示

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

最新文档

评论

0/150

提交评论