实验设计二(模拟网上购书的结账功能)
北京信息科技高校 试验设计报告 课程名称 面对对象程序设计试验设计 题 目 模拟网上购书的结帐功能 指导老师 李 春 强 设计起止日期 2007-8-27 2007-8-31 设计地点 小营校区计算机中心 系 别 计算机信息系统系 专 业 信息平安 学生姓名 宋君易 班级/学号 2009012221 信安0901 成 绩 ___________________ 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或更高版本等; ②开发环境为VC6.0或者TC3.0。 3参考书目 ①C面对对象程序设计第10章 面对对象设计方法与实例 陈维兴等编著 中国铁道出版社 2004年6月第1版 ②C面对对象程序设计 陈维兴等编著 清华高校出版社 2004年6月第1版 5. 试验方法与步骤 includeiostream includestring using namespace std; class buyfolk; class member; class honoured_guest; class buyer { public buyer { nameNull; addrNull; number0; expense0; level0; } void getidint num { numbernum; ifnumber0number20 { level1;} else ifnumber21number40 {level2;} else ifnumber41number60 {level3;} else ifnumber61number80 {level4;} else ifnumber81number100 {level5;} else ifnumber200number300 {} else ifnumber1000number2000 {} else coutError munber please registerendl; } void getbuyname { coutPlease your name endl; cinname; } void getaddress { coutPlease your address endl; cinaddr; } virtual void setpay { getbuyname; getaddress; coutPlease your expense endl; cinexpense; } virtual void display { coutName nameendlAddress addrendlNumber numberendlExpense expenseendl; } protected string name; string addr; int number; int level; double expense; }; class buyfolkpublic buyer { public virtual void display { cout--Welcome layfolk--endl; buyerdisplay; } virtual void setpay { buyersetpay; } }; class memberpublic buyer { public member { } virtual void setpay { buyersetpay; iflevel1 expenseexpense*0.95; iflevel2 expense*0.