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

下载本文档

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

文档简介

北京信息科技大学实验设计报告课程名称 面向对象程序设计实验设计题 目 模拟网上购书的结帐功能 指导教师 李 春 强 设计起止日期 2007-8-27 2007-8-31 设计地点 小营校区计算机中心 系 别 计算机信息系统系 专 业 _学生姓名 _班级/学号 _ 成 绩 _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. 实验方法与步骤:6. 实验总结:附录:#include#includeclass stringfriend ostream& operator(ostream& s,const string& str);/重载(istream& s,string& str);/重载public:string();string(const string& str);void operator=(const string& str);/重载=string();string(char*p);private:short m_length;/字符串长度char* m_data;/字符串开始地址 ;string:string()m_length=1;m_data=new charm_length;memcpy(m_data,m_length);string:string(const string& str)m_length=str.m_length;m_data=new charm_length;memcpy(m_data,str.m_data,m_length);string:string(char *p)m_length=strlen(p)+1;m_data=new charm_length;memcpy(m_data,p,m_length);void string:operator=(const string& str)if(&str!=this) delete m_data; m_length=str.m_length; m_data=new charm_length; memcpy(m_data,str.m_data,m_length);string:string() delete m_data; ostream& operator(ostream& S,const string& str)/运算符重载short i;for(i=0;istr.m_length-1;i+) S(istream&S,string& str)/运算符重载const short buflen=256;char bufbuflen;memset(buf,0,buflen);if(S.peek()=n) S.ignore(); S.getline(buf,buflen,n);str=buf;return S;/strclass.h结束#include class buyer/基类protected: string name;/姓名 int buyerid;/购书人编号 string 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 leaguer_grade;/会员级别public:member(string n,int b,int l,string a,double p):buyer(n,b,a,p) leaguer_grade=1;/构造函数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(double 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; address=a; pay=p;double buyer:getpay()/去购书人金额 return pay; string buyer:getaddress()/去购书人地址 return address; string buyer:getbuyname()/去购书人姓名 return name; int buyer:getid()/去购书人编号 return buyerid;void member:display()/会员类的显示函数cout购书人姓名:namet;cout购书人编号:buyeridt;cout购书人为会员,级别:leaguer_graden;cout地址:addressn;void member:setpay(double p)/会员类的计算购书金额if(leaguer_grade=1)/会员级别为1 pay=0.95*p+pay;else if(leaguer_grade=2)/会员级别为2 pay=0.9*p+pay;else if(leaguer_grade=3)/会员级别为3 pay=0.85*p+pay;else if(leaguer_grade=4)/会员级别为4 pay=0.8*p+pay;else if(leaguer_grade=5)/会员级别为5 pay=0.75*p+pay;else cout级别错误!;void guest:display()/贵宾类的显示函数cout购书人姓名:namet;cout购书人编号: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; /buy.h头文件结束#include class book/图书类protected: 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();/取出版社 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;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; /book.h结束void main()lab:int i=0,buyerid,flag;book *c2;/用指针数组存放book对象的地址layfolk b1(张海玉,1,北京,0);guest b2(田丽芸,2,0.6,上海,0);member b3(蓝婷,3,5,广州,0);buyer *b3=&b1,&b2,&b3;/*用指针数组存放了buyer类的3个对象的地址*/book c1(7-302-04504-6,C语言程序设计,谭浩强,清华,25);book c2(7-402-03889-6,数据结构,严蔚敏,北大,21); c0=&c1; c1=&c2;cout购书人信息endl;for(i=0;idisplay();cout图书信息endl;for(i=0;idisplay ();cout请输入购书人的编号:buyerid;flag=0;for(i=0;igetid()=buyerid) flag=1; break; i

温馨提示

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

评论

0/150

提交评论