实验设计二模拟网上购书的结账功能.docx
- 文档编号:4917597
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:20
- 大小:153.37KB
实验设计二模拟网上购书的结账功能.docx
《实验设计二模拟网上购书的结账功能.docx》由会员分享,可在线阅读,更多相关《实验设计二模拟网上购书的结账功能.docx(20页珍藏版)》请在冰豆网上搜索。
实验设计二模拟网上购书的结账功能
北京信息科技大学
实验设计报告
课程名称面向对象程序设计实验设计
题目模拟网上购书的结帐功能
指导教师李春强
设计起止日期
设计地点
系别信息安全
专业信息安全
学生姓名__李继文________________
班级/学信安1002/2010012713
成绩___________________
1.课程设计目的:
通过本实验使学生利用面向对象程序设计软件开发方法,即软件开发过程划分为明显的几个阶段:
问题分析和功能定义、对象设计及实现、核心控制设计、编码与测试、进化等实现模拟网上购书的结帐功能方面的应用。
2.课程设计内容:
用户在网上购书以后,系统根据购书人的不同类型计算出购书人的费用。
网上购书的一般过程:
用户首先输入会员号,然后,选择想要买的书籍放到购书筐中,选择结束后,用户要求系统结帐,系统便计算出费用通知用户。
注:
本例并不模拟网上购书的全部过程,所以把选择书的过程略去,假设用户已经选定了两本书。
3.课程设计要求:
(1)根据实际情况,确定购书人分为3类:
普通人、会员、贵宾。
①“普通人”的购书费用按照原价收取;
②“会员”购书费的计算方法是:
五星级会员按照原价的70%收取,四星级会员按照原价的80%收取,三星级会员按照原价的85%收取,二星级会员按照原价的90%收取,一星级会员按照原价的95%收取。
③“贵宾”的购书费根据特别指定的折扣率计算机收取的费用,例如折扣率40%,则按照实际书费的60%收取。
(2)对象(类)的设计
①根据
(1)分析,需要设计一个基类buyer和它的3各派生类member(会员)、layfolk(普通人)、honoured_guest(贵宾)。
基类中包括的数据成员是姓名、购书人编号、地址、购书金额。
member类中除了继承了buyer的数据,还增加了会员级别:
honoured_guest则增加了折扣率一项。
②在基类中定义了构造函数和对所有类型的购书人相同的操作,getbuyname()负责取出购书者的姓名;getaddress()负责取出购书者的地址;getpay()负责取出购书者应付出的金额;getid()负责取出购书者的编号。
由于对不同购书者的购书额的计算方法不同,所以不能在基类中确定计算方法;又由于各类购书者的数据内容不同,显示的方法也不一样.因此在基类中将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)登陆进去后的界面
(3)查看自己的购物车
(4)结算
(5)用会员用户登陆
会员是有优惠的!
如上图。
(6)用贵宾用户登陆
如上图:
优惠
6.实验总结:
通过这次课设,进一步掌握了c++stl中map这一个容器的使用,并且对于c++stl中的一些算法有了一定的掌握,并且对于模板函数有了一定的了解。
附录:
代码如下:
#include
#include
#include
#include
#include
#include
usingnamespacestd;
classbook
{
private:
stringbookname;
floatprice;
stringpress;
public:
book(stringbn,floatp,stringpr)
{
bookname=bn;
price=p;
press=pr;
}
book(){}
stringgetbn()
{
returnbookname;
}
floatgetp()
{
returnprice;
}
voidbdisplay()
{
cout<<"书名:
"< cout<<"出版社: "< cout<<"价格: "< } }; map classbuyer { protected: stringname; stringaddress; stringid; floatmoney; public: vector voidsum(map { money=0; for(vector : iteratorir=bi.begin();ir! =bi.end();ir++) { money+=ll.find((*ir))->second.getp(); } } stringgetbuyname() { returnname; } stringgetaddress() { returnaddress; } stringgetid() { returnid; } floatgetpay() { returnmoney; } virtualvoidsetpay() { money=money; } virtualvoiddisplay() { } buyer(stringn,stringa,stringi,floatm,vector { name=n; address=a; id=i; money=m; bi=b; } }; classmember: publicbuyer//会员的定义 { private: inthonoured_guest; public: member(stringn,stringa,stringi,floatm,vector buyer(n,a,i,m,b) { honoured_guest=h; } voidsetpay() { switch(honoured_guest) { case1: money=money*0.95;break; case2: money=money*0.9;break; case3: money=money*0.85;break; case4: money=money*0.8;break; case5: money=money*0.7;break; } } voiddisplay() { cout<<"亲爱的"< "< cout<<"你的购书款为: "< setpay(); cout<<"优惠后的购书款: "< } }; classhonoured_guest: publicbuyer { private: floatdisaccont; public: honoured_guest(stringn,stringa,stringi,floatm,vector buyer(n,a,i,m,b) { disaccont=d; } voidsetpay() { money=money*(1-disaccont); } voiddisplay() { cout<<"亲爱的贵宾: "< cout<<"你的购书价格: "< setpay(); cout<<"优惠后的价格为: "< } }; classlayfolk: publicbuyer//普通用户 { public: layfolk(stringn,stringa,stringi,floatm,vector buyer(n,a,i,m,sc) { } voidsetpay() { money=money; } voiddisplay() { cout<<"亲爱的用户: "< cout<<"你的购书款为: "< setpay(); cout<<"你优惠后购书款为: "< } }; classdeal { private: map vector vector vector public: deal(map { book1=m1; la=la1; mb=mb1; hgt=hgt1; } intjudge(stringll)//判断登录用户的类型 { if(ll.substr(0,2)=="lf") return1; elseif(ll.substr(0,2)=="mb") return2; elseif(ll.substr(0,2)=="hg") return3; elsereturn4; } voidland() { stringcid,cname; vector : iteratorit; vector : iteratorim; vector : iteratorih; boolmybl=true; intflag; do { cout<<"----------------------------------------------"< cout<<"----------------欢迎你的到来------------------"< cout<<"----------------------------------------------"< cout<<"请输入你的账号"< cin>>cid; cout<<"请输入用户名"< cin>>cname; switch(judge(cid)) { case1: for(it=la.begin();it! =la.end();it++) { if(cname==(*it).getbuyname()&&cid==(*it).getid()) break; elsecontinue; } if(it==la.end()) { system("CLS"); cout<<"输入错误或者没有该账号! 请重新输入! "< continue; } else { cout<<"登陆成功! 正在跳转中! 请稍候。 。 。 ! "< Sleep(1000); system("CLS"); boolmybool=true; do { cout<<"请输入你所要执行命令的编号"< cout<<"1: 查看自己的购物车"< cout<<"2: 结算"< cout<<"3: 退出"< cin>>flag; switch(flag) { case1: for(vector : iteratorio=(*it).bi.begin();io! =(*it).bi.end();io++) { map : iteratorib=book1.find((*io)); ib->second.bdisplay(); cout<<"---------------------------------------------"< } cout<<"返回主菜单请按: 1"< cout<<"退出请按: 2"< cout<<"重新登录请按: 3"< intf1; cin>>f1; switch(f1) { case1: system("CLS");continue; case2: system("CLS");mybool=false;mybl=false;break; case3: system("CLS");mybool=false;break; }break; case2: (*it).sum(book1); (*it).display(); cout<<"---------------------------------------------"< cout<<"返回主菜单请按: 1"< cout<<"退出请按: 2"< cout<<"重新登录请按: 3"< cin>>f1; switch(f1) { case1: system("CLS"); continue; case2: system("CLS");mybool=false;mybl=false;break; case3: system("CLS"); mybool=false;break; } break; case3: mybool=false;mybl=false;break; } }while(mybool); }break; case2: for(im=mb.begin();im! =mb.end();im++) { if(cname==(*im).getbuyname()&&cid==(*im).getid()) break; elsecontinue; } if(im==mb.end()) { cout<<"输入错误或者没有该账号! 请重新输入! "< system("CLS"); continue; } else { cout<<"登陆成功! 正在跳转中! 请稍候。 。 。 ! "< Sleep(1000); system("cls"); boolmya=true; do { cout<<"请输入你所要执行命令的编号"< cout<<"1: 查看自己的购物车"< cout<<"2: 结算"< cout<<"3: 退出"< cin>>flag; switch(flag) { case1: for(vector : iteratorio=(*im).bi.begin();io! =(*im).bi.end();io++) { map : iteratorib=book1.find((*io)); ib->second.bdisplay(); cout<<"---------------------------------------------"< } cout<<"返回主菜单请按: 1"< cout<<"退出请按: 2"< cout<<"重新登录请按: 3"< intf1; cin>>f1; switch(f1) { case1: system("CLS"); continue; case2: mya=false;mybl=false;break; case3: system("CLS"); mya=false; break; } break; case2: (*im).sum(book1); (*im).display(); cout<<"---------------------------------------------"< cout<<"返回主菜单请按: 1"< cout<<"退出请按: 2"< cout<<"重新登录请按: 3"< cin>>f1; switch(f1) { case1: system("CLS"); continue; case2: mya=false;mybl=false;break; case3: system("CLS"); mya=false; break; } break; case3: mya=false;mybl=false;break; } }while(mya); }break; case3: boolmyb=true; for(ih=hgt.begin();ih! =hgt.end();ih++) { if(cname==(*ih).getbuyname()&&cid==(*ih).getid()) break; elsecontinue; } if(ih==hgt.end()) { cout<<"输入错误或者没有该账号! 请重新输入! "< system("CLS"); continue; } else { cout<<"登陆成功! 正在跳转中! 请稍候。 。 。 ! "< Sleep(1000); system("cls"); do { cout<<"请输入你所要执行命令的编号"< cout<<"1: 查看自己的购物车"< cout<<"2: 结算"< cout<<"3: 退出"< cin>>flag; switch(flag) { case1: for(vector : iteratorio=(*ih).bi.begin();io! =(*ih).bi.end();io++) { map : iteratorib=book1.find((*io)); ib->second.bdisplay(); cout<<"---------------------------------------------"< } cout<<"返回主菜单请按: 1"< cout<<"退出请按: 2"< cout<<"重新登录请按: 3"< intf1; cin>>f1; switch(f1) { case1: system("CLS"); continue; case2: myb=false;mybl=false;break; case3: system("CLS");myb=false;break; } break; case2: (*ih).sum(book1); (*ih).display(); cout<<"---------------------------------------------"< cout<<"返回主菜单请按:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验设计 模拟 网上 购书 结账 功能