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

下载本文档

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

文档简介

1、北京信息科技大学实验设计报告课程名称 面向对象程序设计实验设计题 目 模拟网上购书的结帐功能 指导教师 李 春 强 设计起止日期 设计地点 系 别 信息管理学院 专 业 _信息安全_ _学生姓名 _郭瑞_班级/学号 _ 信安0901/2009012225_ 成 绩 _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首先确定基类成员函数,需要定

5、义两个虚函数setpay和display作为重载。2定义其派生类,member,layfolk,honoured_guest ,完成初始化构造。并且分别定义其私有成员计算对应的会员等级或3者折扣率,然后重新定义虚函数setpay和display4定义book类返回书的编号和价格。5 定义主函数,通过基类指针调用派生类或者自身类对象成员函数的方式实现功能。具体实现代码如下:#includeiostream#includestringusing namespace std;class buyer/基类protected:string name;/姓名int buyerid;/购书人编号string

6、 address;/地址double pay;/购书金额public:buyer();buyer(string n,int b,string a,double p);string getbuyname();/取姓名string getaddress();/取地址double getpay(); /取应付金额int getid();/取购书人编号virtual void display()=0;/显示对象virtual void setpay(double=0)=0;/计算购书金额;class member:public buyer/会员类int grade;/会员级别public:member

7、(string n,int b,int t,string a,double p):buyer(n,b,a,p) grade=t;/构造函数void display();/显示对象void setpay(double p);/计算购书金额;class guest:public buyer/贵宾类double discount_rate;/贵宾折扣率public:guest(string n,int b,double r,string a,double p):buyer(n,b,a,p) discount_rate=r;/构造函数void display();/显示对象void setpay(do

8、uble p);/计算购书金额;class layfolk:public buyer/普通人员类public:layfolk(string n,int b,string a,double p):buyer(n,b,a,p) /构造函数void display();/显示对象void setpay(double p);/计算购书金额;/基类数据初始化buyer:buyer()/基类的构造函数name=;buyerid=0;address=;pay=0;buyer: buyer(string n,int b,string a,double p)/基类的构造函数name=n; buyerid=b;

9、address=a; pay=p;double buyer:getpay()/去购书人金额 return pay; string buyer:getaddress()/去购书人地址 return address; string buyer:getbuyname()/去购书人姓名 return name; int buyer:getid()/去购书人编号 return buyerid;/ member类数据初始化,成员函数的定义void member:display()/会员类的显示函数cout购书人姓名:namet;cout购书人编号:buyeridt;cout购书人为会员,级别:graden

10、;cout地址:addressn;void member:setpay(double p)/会员类的计算购书金额if(grade=1)/会员级别为1pay=0.95*p+pay;else if(grade=2)/会员级别为2pay=0.9*p+pay;else if(grade=3)/会员级别为3pay=0.85*p+pay;else if(grade=4)/会员级别为4pay=0.8*p+pay;else if(grade=5)/会员级别为5pay=0.75*p+pay;elsecout级别错误!;void guest:display()/贵宾类的显示函数cout购书人姓名:namet;co

11、ut购书人编号:buyeridt;cout购书人为贵宾,折扣率为:discount_rate*100%n;cout地址:addressn;void guest:setpay(double p)/贵宾类的计算购书金额pay=pay+(1-discount_rate)*p;void layfolk:display()/普通类的显示函数cout购书人姓名namet;cout购书人编号:buyeridt;cout购书人为普通人n;cout地址:addressn;void layfolk:setpay(double p)/普通类的计算购书金额 pay=pay+p; class book/图书类prote

12、cted:string book_id;/书号string book_name;/书名string auther;/作者string publishing;/出版社double price;/定价public:book();/构造函数book(string b_id,string b_n,string au,string pu,double pr);/*重载构造函数*/void display();string getbook_id();/取书号string getbook_name();/取书名string getauther();/取作者string getpublishing();/取出

13、版社double getprice();/取定价;book:book(string b_id,string b_n,string au,string pu,double pr)book_id=b_id;book_name=b_n; auther=au;publishing=pu;price=pr;book:book()book_id=; book_name=; auther=; publishing=; price=0;void book:display()cout书号:book_idt;cout书名:book_namet;cout作者:authert;cout出版社:publishingt;

14、cout定价:pricen;string book:getbook_id()/取书号 return book_id; string book:getbook_name()/取书名 return book_name; string book:getauther()/取作者 return auther; string book:getpublishing()/取出版社 return publishing; double book:getprice()/取定价 return price; /*int menu() int flag;cout是否继续?:继续为1,不继续为0flag;return fl

15、ag;*/void main()int i=0,buyerid,flag;book *c2;/ 基类指针指向派生类对象!layfolk b1(郭瑞,1,安徽,8);guest b2(丁珊珊,2,0.6,上海,0);member b3(张国荣,3,5,香港,0);buyer *b3=&b1,&b2,&b3; / !/*用指针数组存放了buyer类的3个对象的地址*/book c1(7-302-04504-6,程序设计,留在得,清华,25);book c2(7-402-03889-6,数据结构,华英美,北大,21);c0=&c1;c1=&c2;cout购书人信息endl;for(i=0;idisplay();/ 虚函数的重载!cout图书信息endl;for(i=0;idisplay ();logo:cout请输入购书人的编号:buyerid;flag=0;for(i=0;igetid()=buyerid)flag=1; break;if(!flag)cout编号不存在setpay(c0-getprice ();/计算购书金额bi-setpay(c1-getprice ();coutendl购书人需要付费:getpay()endl;goto logo;6. 实验总结:通过此次试

温馨提示

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

评论

0/150

提交评论