实验研究设计二模拟网上购书的结账功能.docx
- 文档编号:8576979
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:11
- 大小:40KB
实验研究设计二模拟网上购书的结账功能.docx
《实验研究设计二模拟网上购书的结账功能.docx》由会员分享,可在线阅读,更多相关《实验研究设计二模拟网上购书的结账功能.docx(11页珍藏版)》请在冰豆网上搜索。
实验研究设计二模拟网上购书的结账功能
北京信息科技大学
实验设计报告
课程名称面向对象程序设计实验设计
题目模拟网上购书的结帐功能
指导教师李春强
设计起止日期
设计地点
系别信息安全
专业____信安1102______________
学生姓名_____王鑫_____________
班级/学号_信安1102__2011012245_____
成绩___________________
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.实验方法与步骤:
#include
#include
usingnamespacestd。
classbuyer
{
public:
buyer(stringn,stringa,ints,intm)
{
name=n。
address=a。
salary=s。
num=m。
}
//getbuyname()负责取出购书者的姓名。
getaddress()负责取出购书者的地址。
getpay()负责取出购书者应付出的金额。
getid()
voidgetbuyname()
{
cout<<"购书人的姓名是:
"< } voidgetaddress() { cout<<"购书人的地址是: "< } voidgetpay() { cout<<"购书者应付的金额: "< } voidgetid() { cout<<"购书者的编号: "< } intexploy() { returnnum。 } virtualvoiddisplay()=0。 virtualvoidsetpay()=0。 private: protected: stringname。 //姓名 intnum。 //购书人编号 stringaddress。 //地址 intsalary。 //购书金额 }。 classmember: publicbuyer//会员 { public: member(stringn,stringa,ints,intm,intl): buyer(n,a,s,m) { level=l。 } virtualvoidsetpay() {cout<<"--欢迎您的光临,member--"< getbuyname()。 getaddress()。 getid()。 getpay()。 cout<<"确定你要买的书么? N/Y"< charc。 cin>>c。 if(c=='y') { if(level==1) salary=salary*0.95。 if(level==2) salary*=0.90。 if(level==3) salary*=0.85。 if(level==4) salary*=0.80。 if(level==5) salary*=0.70。 display()。 } elsecout<<"已经取消交易"< } virtualvoiddisplay() { cout<<"您已经支付"< } private: protected: intlevel。 //级别 }。 classhonoured_guest: publicbuyer// { public: honoured_guest(stringn,stringa,ints,intm,floatf): buyer(n,a,s,m) { discount=f。 } virtualvoidsetpay() { cout<<"--欢迎您的光临honoured_guest--"< getbuyname()。 getaddress()。 getid()。 getpay()。 cout<<"确定你要买的书么? N/Y"< charc。 cin>>c。 if(c=='y') { salary=discount*salary。 display()。 } elsecout<<"已经取消交易"< } virtualvoiddisplay() { cout<<"您已经支付"< } private: protected: floatdiscount。 //折扣率 }。 classlayfolk: publicbuyer//路人 { public: layfolk(stringn,stringa,ints,intm): buyer(n,a,s,m) { } virtualvoidsetpay() { cout<<"--欢迎您的光临layfolkt--"< getbuyname()。 getaddress()。 getid()。 getpay()。 cout<<"确定你要买的书么? N/Y"< charc。 cin>>c。 if(c=='y') { display()。 } elsecout<<"已经取消交易"< } virtualvoiddisplay() { cout<<"您已经支付"< } private: protected: }。 intmain() { inth。 intflag=0。 inti1。 stringn="wangx",w="wangxin",wy="wangxingyu"。 stringb="beijing",c="chongqing",t="tianjin"。 //事先初始化六个数据 layfolka[3]={layfolk(n,b,1000,10),layfolk(w,c,1000,11),layfolk(wy,t,1000,12)}。 memberm[3]={member(n,b,1000,1,4),member(w,c,1000,2,3),member(wy,t,1000,3,2)}。 honoured_guestg[3]={honoured_guest(n,b,1000,1,0.4),honoured_guest(n,b,1000,1,0.4),honoured_guest(n,b,1000,1,0.4)}。 while(true) { cout<<"--欢迎来到书店订购系统--"< cout<<"按任意键进入订购界面,如果您想要退出请按q"< if('q'==getchar())break。 else { cout<<"请输入您的编号"< cin>>h。 for(inti=0。 i<3。 i++) { if(h==a[i].exploy()){flag=1。 i1=i。 break。 } } for(inti=0。 i<3。 i++) { if(h==m[i].exploy()){flag=2。 i1=i。 break。 } } for(inti=0。 i<3。 i++) { if(h==g[i].exploy()){flag=3。 i1=i。 break。 } } if(flag==0)cout<<"查无此编号,请确定以后再输入"< elseif(flag==1)a[i1].setpay()。 elseif(flag==2)m[i1].setpay()。 elseif(flag==3)g[i1].setpay()。 { } } } } 6.实验总结: 通过本实验我学会了利用面向对象程序设计软件开发方法,即软件开发过程划分为明显的几个阶段: 问题分析和功能定义、对象设计及实现、核心控制设计、编码与测试、进化等实现模拟网上购书的结帐功能方面的应用。 大体的课设的过程是如下: 用户在网上购书以后,系统根据购书人的不同类型计算出购书人的费用。 网上购书的一般过程: 用户首先输入会员号,然后,选择想要买的书籍放到购书筐中,选择结束后,用户要求系统结帐,系统便计算出费用通知用户。 附录: 说明: 1.实验过程由学生记录实验的过程,包括画出流程图、操作过程、遇到哪些问题以及如何解决等; 2.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等; 3.源程序(带注释)、代码、具体语句等,若表格空间不足时可作为附录另外附页。 4.程序测试后,将多组测试结果附在程序后。 5.提交报告时请将说明部分去掉。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 研究 设计 模拟 网上 购书 结账 功能