c++实验设计二(模拟网上购书的结账功能)

上传人:第*** 文档编号:31071873 上传时间:2018-02-04 格式:DOC 页数:11 大小:86.50KB
返回 下载 相关 举报
c++实验设计二(模拟网上购书的结账功能)_第1页
第1页 / 共11页
c++实验设计二(模拟网上购书的结账功能)_第2页
第2页 / 共11页
c++实验设计二(模拟网上购书的结账功能)_第3页
第3页 / 共11页
c++实验设计二(模拟网上购书的结账功能)_第4页
第4页 / 共11页
c++实验设计二(模拟网上购书的结账功能)_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《c++实验设计二(模拟网上购书的结账功能)》由会员分享,可在线阅读,更多相关《c++实验设计二(模拟网上购书的结账功能)(11页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

5、1 版C+面向对 象程序设计 陈维兴等编著 清华大学出版社 2004 年 6 月第 1 版5.实验方法与步骤:1 首先确定基类成员函数,需要定义两个虚函数 setpay 和 display 作为重载。2 定义其派生类,member,layfolk,honoured_guest ,完成初始化构造。并且分别定义其私有成员计算对应的会员等级或 3 者折扣率,然后重新定 义虚函数 setpay 和 display4 定义 book类返回书的编号和价格。5 定义主函数,通过基类指针调 用派生类或者自身类对象成 员函数的方式实现功能。具体实现代码如下:#includeiostream#includestr

6、ingusing namespace std;class buyer/基类protected:string name;/姓名int buyerid;/购书人编 号string address;/地址 4 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

7、 void setpay(double=0)=0;/计算购书金额;class member:public buyer/会员类int grade;/会员级别public:member(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

8、,string a,double p):buyer(n,b,a,p) discount_rate=r;/构造函数void display();/显示对象void setpay(double p);/计算购书金额 5 ;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=;buyer

9、id=0;address=;pay=0;buyer: buyer(string n,int b,string a,double p)/基类的构造函数name=n;buyerid=b;address=a;pay=p;double buyer:getpay()/去购书人金额 return pay; string buyer:getaddress()/去购书人地址 return address; string buyer:getbuyname()/去购书人姓名 6 return name; int buyer:getid()/去购书人编号 return buyerid;/ member 类数据初始化

10、,成员函数的定义void member:display()/会员类的显示函数coutflag;return flag;*/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= / !/*用指针数组存放了 buyer 类的 3 个对象的地址*/book c1(7-302-04504-6,程序设计,留在得,清华,25); 10 book c2(7-402-03889-6,数据结构

11、,华英美,北大,21);c0=c1=coutdisplay();/ 虚函数的重载!coutdisplay ();logo:coutbuyerid;flag=0;for(i=0;igetid()=buyerid)flag=1; break;if(!flag)coutsetpay(c0-getprice ();/计算购书金额bi-setpay(c1-getprice ();coutgetpay()endl;goto logo; 11 6.实验总结:通过此次试验,对于虚函数的应用进一步熟悉,特 别是基类指针对于虚函数的调用,同时对于派生类的构造,继承等等知识点进一步巩固,对 C+继承的理念的应用更具体的熟悉。 12 附录: 13 说明:1. 实验过程由学生记录实验的过程,包括画出流程 图、操作 过程、遇到哪些问题以及如何解决等;2. 实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;3. 源程序(带注释)、代码、具体语句等,若表格空间不足时可作为附录另外附页。4. 程序测试后,将多组测试结果附在程序后;5. 提交报告时请将说明部分去掉。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号