实验设计二模拟网上购书的结账功能Word文档格式.docx
《实验设计二模拟网上购书的结账功能Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验设计二模拟网上购书的结账功能Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
![实验设计二模拟网上购书的结账功能Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/31/cfab443a-a976-447b-a2d9-ae1700afd240/cfab443a-a976-447b-a2d9-ae1700afd2401.gif)
用户首先输入会员号,然后,选择想要买的书籍放到购书筐中,选择结束后,用户要求系统结帐,系统便计算出费用通知用户。
注:
本例并不模拟网上购书的全部过程,所以把选择书的过程略去,假设用户已经选定了两本书。
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.实验方法与步骤:
#include<
iostream>
string>
usingnamespacestd;
classbuyfolk;
classmember;
classhonoured_guest;
classbuyer
{
public:
buyer()
{
name="
Null"
;
addr="
number=0;
expense=0;
level=0;
}
voidgetid(intnum)
number=num;
if(number>
=0&
&
number<
=20)
{level=1;
}
elseif(number>
21&
=40)
{level=2;
41&
=60)
{level=3;
61&
=80)
{level=4;
81&
=100)
{level=5;
=200&
=300)
{}
=1000&
=2000)
else
cout<
<
"
Errormunberpleaseregister"
endl;
voidgetbuyname()
cout<
Pleaseinputyourname:
"
cin>
>
name;
voidgetaddress()
Pleaseinputyouraddress:
addr;
virtualvoidsetpay()
getbuyname();
getaddress();
Pleaseinputyourexpense:
expense;
virtualvoiddisplay()
Name:
name<
endl<
Address:
addr<
Number:
Expense:
expense<
protected:
stringname;
stringaddr;
intnumber;
intlevel;
doubleexpense;
};
classbuyfolk:
publicbuyer
--Welcomelayfolk--"
buyer:
:
display();
setpay();
classmember:
member()
if(level==1)
expense=expense*0.95;
if(level==2)
expense*=0.90;
if(level==3)
expense*=0.85;
if(level==4)
expense*=0.80;
if(level==5)
expense*=0.70;
--Welcomemumbership--"
Level:
level<
private:
classhonoured_guest:
honoured_guest()
discount=0;
Pleaseinputyourdiscount:
discount;
expense*=(1-discount);
--Welcomeguest--"
Discount:
discount<
doublediscount;
intmain()
buyfolkb[10];
memberm[10];
honoured_guesth[10];
inti=0,flag=1,j=0,z=0;
while(flag)
{
--Welcometoourbookstore--"
Ifyourwangtoexit,pleaseinput9999"
Pleaseinputyournumber:
number;
{
m[i].getid(number);
m[i].setpay();
m[i].display();
i++;
}
{
h[j].getid(number);
h[j].setpay();
h[j].display();
j++;
b[z].getid(number);
b[z].setpay();
b[z].display();
z++;
elseif(number==9999)
flag=0;
--Welcomeagain--"
return0;
6.实验总结:
通过这次实验通过我掌握了面向对象程序设计软件开发方法,即通过将软件开发过程划分为明显的几个阶段: