




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中南大学c++实践报告星期三四五实训内容1、模拟网上购书结账功能;实训要求1、给出详细的需求分析和描述,并给出实际需求分析文档和UML描述;2、给出详细设计文档及UML描述;3、根据详细设计的结果,写出完整的C++代码。要注意编码风格与编码规范。4、根据测试理论,写出测试数据并给出详细测试报告;5、对该系统的可扩充性、可修改性和可维护性给出客观的评价。①问题分析与功能定义:本体是一个非常实用的题目。随着互联网技术的飞速发展,网上购物越来越受到大家的喜爱,坐在家中,点点鼠标,就有人把你要的东西送到手中,多惬意呀。现在要解决的问题是:用户网上购书以后,系统根据购书人的不同类型计算出购书人的费用。网上购书的一般过程是:用户首先输入他的会员号,然后,选择想买的书籍放到购书筐中,选择结束以后,用户要求系统结账,系统编辑算出费用通知用户。本例并不像模拟网上购书的全部过程,所以会把选择书的过程省去,假设用户已经选定了两本书。根据实际情况,确定了购书人可分为三类:普通人、会员、贵宾。②对象(类)设计根据上面的分析,需要设计一个基类buyer和它的3个派生类member(会员)、layfolk(普通人)、honoured_guest(贵宾)。基类中包含的数据成员是姓名、购书人编号、地址、购书金额。Member类中除了继承了buyer的数据,还增加了会员级别:honoured_guest则增加了折扣率一项。在基类中定义了构造函数和对所有类型的购书人相同的操作,getbuyname()负责取出购书者的姓名;getaddress()负责取出购书者的地址;getpay()负责取出购书者应付的金额;getid()负责取出购书者的编号。有关购书者的定义类如下:classbuyer{protected:stringname;intbuyerID;stringaddress;doublepay;public:buyer();buyer(stringn,intb,stringa,doublep);stringgetbuyername();stringgetaddress();doublegetpay();intgetid();virtualvoiddisplay()=0;virtualvoidsetpay(double=0)=0;};classmember:publicbuyer{public:member(stringn,intb,intl,stringa,doublep):buyer(n,b,a,p){leaguer_grade=1;}voiddisplay();voidsetpay(doublep);private:intleaguer_grade;};classhonoured_guest:publicbuyer{doublediscount_rate;public:honoured_guest(stringn,intb,doubler,stringa,doublep):buyer(n,b,a,p){discount_rate=r;}voiddisplay();voidsetpay(doublep);};classlayfolk:publicbuyer{public:layfolk(stringn,intb,stringa,doublep):buyer(n,b,a,p){}voiddisplay();voidsetpay(doublep);};由于在计算购书金额的时要知道用户买了那些书以及书的原价,所以必须建立一个类book,帮助完成对数的有关操作。类book的定义如下:classbook{protected:stringbook_ID;stringbook_name;stringauther;stringpublishing;doubleprice;public:book();book(stringb_id,stringb_n,stringau,stringpu,doublepr);voiddisplay();stringgetbook_ID();stringgetbook_name();stringgetauther();stringgetpublishing();doublegetprice();};从book到buyer类的箭头表示:book对象要传消息给buyer对象。classstring{friendostream&operator<<(ostream&S,conststring&Str);friendistream&operator>>(istream&S,string&Str);public:string();string(conststring&Str);voidoperator=(conststring&Str);~string();string(char*p);private:shortm_Length;char*m_Data;};③核心控制设计在主函数中我们要做的操作包括:(1)建立继承了基类buyer的3各类对象。(2)建立两个book对象。(3)请用户输入购书人的编号。(4)通过编号查询到相应的对象。(5)用对象的计算金额的方法计算购书金额。④编码与测试完成前几阶段的工作,现在就可以编码实现程序了。程序中包括了4个文件:buy.h、book..h、strclass.h和buy_book.cpp文件。Buy_book.cpp程序中有main()函数完整程序及相应的说明如下://buy.h文件classbuyer{protected:stringname;intbuyerID;stringaddress;doublepay;public:buyer();buyer(stringn,intb,stringa,doublep);stringgetbuyername();stringgetaddress();doublegetpay();intgetid();virtualvoiddisplay()=0;virtualvoidsetpay(double=0)=0;};classmember:publicbuyer{public:member(stringn,intb,intl,stringa,doublep):buyer(n,b,a,p){leaguer_grade=1;}voiddisplay();voidsetpay(doublep);private:intleaguer_grade;};classhonoured_guest:publicbuyer{doublediscount_rate;public:honoured_guest(stringn,intb,doubler,stringa,doublep):buyer(n,b,a,p){discount_rate=r;}voiddisplay();voidsetpay(doublep);};classlayfolk:publicbuyer{public:layfolk(stringn,intb,stringa,doublep):buyer(n,b,a,p){}voiddisplay();voidsetpay(doublep);};buyer::buyer(){name="";buyerID=0;address="";pay=0;}buyer::buyer(stringn,intb,stringa,doublep){name=n;buyerID=b;address=a;pay=p;}doublebuyer::getpay(){returnpay;}stringbuyer::getaddress(){returnaddress;}stringbuyer::getbuyername(){returnname;}intbuyer::getid(){returnbuyerID;}voidmember::display(){cout<<"购书人姓名:"<<name<<"\";<bdsfid="239"></name<<"\";<>cout<<"购书人编号:"<<buyerid<<"\";<bdsfid="241"></buyerid<<"\";<>cout<<"购书人为会员,级别:"<<leaguer_grade<<"\";<bdsfid="243"></leaguer_grade<<"\";<>cout<<"地址:"<<address<<"\";<bdsfid="245"></address<<"\";<>}voidmember::setpay(doublep){if(leaguer_grade==1)pay=.95*p+pay;elseif(leaguer_grade==2)pay=.90*p+pay;elseif(leaguer_grade==3)pay=.85*p+pay;elseif(leaguer_grade==4)pay=.8*p+pay;elseif(leaguer_grade==5)pay=.7*p+pay;elsecout<<"级别错误!";}voidhonoured_guest::display(){cout<<"购书人姓名:"<<name<<"\";<bdsfid="265"></name<<"\";<>cout<<"购书人编号:"<<buyerid<<"\";<bdsfid="267"></buyerid<<"\";<>cout<<"购书人为贵宾,折扣率为:"<<discount_rate*100<<"%\";<bdsfid="269"></discount_rate*100<<"%\";<>cout<<"地址:"<<address<<"\\";<bdsfid="271"></address<<"\\";<>}voidhonoured_guest::setpay(doublep){pay=pay+(1-discount_rate)*p;}voidlayfolk::display(){cout<<"购书人姓名:"<<name<<"\";<bdsfid="278"></name<<"\";<>cout<<"购书人编号:"<<buyerid<<"\";<bdsfid="280"></buyerid<<"\";<>cout<<"购书人为普通人"<<"\";
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省临沂市兰陵县东苑高级中学2025年高二化学第二学期期末质量检测试题含解析
- 大二理论力考试题库及答案
- 初级人资考试题库及答案
- 城市地理学考试题及答案
- 辰溪一中考试题及答案解析
- 病理第四章考试题及答案
- 北大新生分级考试题目及答案
- 保安初级考试题及答案
- 钣喷质检员考试题及答案
- 河南省范县第一中学2025届高一化学第二学期期末教学质量检测试题含解析
- 部编版五年级上册课内、课外阅读训练(教师+学生)+根据课文内容填空
- 浙江省杭州市(2024年-2025年小学四年级语文)部编版质量测试((上下)学期)试卷及答案
- 【建筑专业】16J914-1公用建筑卫生间(完整)
- DL∕T 1098-2016 间隔捧技术条件和试验方法
- 化学-福建省泉州市2023~2024学年高一下学期期末教学质量监测试题和答案
- AQ/T 2059-2016 磷石膏库安全技术规程(正式版)
- AQ 1011-2005 煤矿在用主通风机系统安全检测检验规范(正式版)
- 2021年广东省深圳实验学校自主招生数学模拟试卷
- (高清版)JTG 3370.1-2018 公路隧道设计规范 第一册 土建工程
- 兽医检验题库与答案
- 新编旅游职业道德 课件 谭为跃 第3-5章 旅行社从业人员道德素养、酒店从业者道德素养、景区点从业人员道德素养
评论
0/150
提交评论