实验设计二模拟网上购书的结账功能.docx

上传人:b****5 文档编号:14454169 上传时间:2023-06-23 格式:DOCX 页数:23 大小:194.82KB
下载 相关 举报
实验设计二模拟网上购书的结账功能.docx_第1页
第1页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第2页
第2页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第3页
第3页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第4页
第4页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第5页
第5页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第6页
第6页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第7页
第7页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第8页
第8页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第9页
第9页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第10页
第10页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第11页
第11页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第12页
第12页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第13页
第13页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第14页
第14页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第15页
第15页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第16页
第16页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第17页
第17页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第18页
第18页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第19页
第19页 / 共23页
实验设计二模拟网上购书的结账功能.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验设计二模拟网上购书的结账功能.docx

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

实验设计二模拟网上购书的结账功能.docx

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

北京信息科技大学

实验设计报告

 

课程名称面向对象程序设计实验设计

题目模拟网上购书的结帐功能

指导教师李春强

设计起止日期

设计地点

 

系别信息安全

专业信息安全

学生姓名__李继文________________

班级/学信安1002/2010012713

成绩___________________

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.实验方法与步骤:

界面如下:

(1)这个用户是普通用户:

(2)登陆进去后的界面

(3)查看自己的购物车

(4)结算

(5)用会员用户登陆

会员是有优惠的!

如上图。

(6)用贵宾用户登陆

如上图:

优惠

6.实验总结:

通过这次课设,进一步掌握了c++stl中map这一个容器的使用,并且对于c++stl中的一些算法有了一定的掌握,并且对于模板函数有了一定的了解。

 

附录:

代码如下:

#include

#include

#include

#include

#include

#include

usingnamespacestd;

classbook

{

private:

stringbookname;

floatprice;

stringpress;

public:

book(stringbn,floatp,stringpr)

{

bookname=bn;

price=p;

press=pr;

}

book(){}

stringgetbn()

{

returnbookname;

}

floatgetp()

{

returnprice;

}

voidbdisplay()

{

cout<<"书名:

"<

cout<<"出版社:

"<

cout<<"价格:

"<

}

};

mapbook1;//书的类定义

classbuyer

{

protected:

stringname;

stringaddress;

stringid;

floatmoney;

public:

vectorbi;

voidsum(mapll)

{

money=0;

for(vector:

:

iteratorir=bi.begin();ir!

=bi.end();ir++)

{

money+=ll.find((*ir))->second.getp();

}

}

stringgetbuyname()

{

returnname;

}

stringgetaddress()

{

returnaddress;

}

stringgetid()

{

returnid;

}

floatgetpay()

{

returnmoney;

}

virtualvoidsetpay()

{

money=money;

}

virtualvoiddisplay()

{

}

buyer(stringn,stringa,stringi,floatm,vectorb)

{

name=n;

address=a;

id=i;

money=m;

bi=b;

}

};

classmember:

publicbuyer//会员的定义

{

private:

inthonoured_guest;

public:

member(stringn,stringa,stringi,floatm,vectorb,inth):

buyer(n,a,i,m,b)

{

honoured_guest=h;

}

voidsetpay()

{

switch(honoured_guest)

{

case1:

money=money*0.95;break;

case2:

money=money*0.9;break;

case3:

money=money*0.85;break;

case4:

money=money*0.8;break;

case5:

money=money*0.7;break;

}

}

voiddisplay()

{

cout<<"亲爱的"<

"<

cout<<"你的购书款为:

"<

setpay();

cout<<"优惠后的购书款:

"<

}

};

classhonoured_guest:

publicbuyer

{

private:

floatdisaccont;

public:

honoured_guest(stringn,stringa,stringi,floatm,vectorb,floatd):

buyer(n,a,i,m,b)

{

disaccont=d;

}

voidsetpay()

{

money=money*(1-disaccont);

}

voiddisplay()

{

cout<<"亲爱的贵宾:

"<

cout<<"你的购书价格:

"<

setpay();

cout<<"优惠后的价格为:

"<

}

};

classlayfolk:

publicbuyer//普通用户

{

public:

layfolk(stringn,stringa,stringi,floatm,vectorsc):

buyer(n,a,i,m,sc)

{

}

voidsetpay()

{

money=money;

}

voiddisplay()

{

cout<<"亲爱的用户:

"<

cout<<"你的购书款为:

"<

setpay();

cout<<"你优惠后购书款为:

"<

}

};

classdeal

{

private:

mapbook1;

vectorla;

vectormb;

vectorhgt;

public:

deal(mapm1,vectorla1,vectormb1,vectorhgt1)

{

book1=m1;

la=la1;

mb=mb1;

hgt=hgt1;

}

intjudge(stringll)//判断登录用户的类型

{

if(ll.substr(0,2)=="lf")

return1;

elseif(ll.substr(0,2)=="mb")

return2;

elseif(ll.substr(0,2)=="hg")

return3;

elsereturn4;

}

voidland()

{

stringcid,cname;

vector:

:

iteratorit;

vector:

:

iteratorim;

vector:

:

iteratorih;

boolmybl=true;

intflag;

do

{

cout<<"----------------------------------------------"<

cout<<"----------------欢迎你的到来------------------"<

cout<<"----------------------------------------------"<

cout<<"请输入你的账号"<

cin>>cid;

cout<<"请输入用户名"<

cin>>cname;

switch(judge(cid))

{

case1:

for(it=la.begin();it!

=la.end();it++)

{

if(cname==(*it).getbuyname()&&cid==(*it).getid())

break;

elsecontinue;

}

if(it==la.end())

{

system("CLS");

cout<<"输入错误或者没有该账号!

请重新输入!

"<

continue;

}

else

{

cout<<"登陆成功!

正在跳转中!

请稍候。

"<

Sleep(1000);

system("CLS");

boolmybool=true;

do

{

cout<<"请输入你所要执行命令的编号"<

cout<<"1:

查看自己的购物车"<

cout<<"2:

结算"<

cout<<"3:

退出"<

cin>>flag;

switch(flag)

{

case1:

for(vector:

:

iteratorio=(*it).bi.begin();io!

=(*it).bi.end();io++)

{

map:

:

iteratorib=book1.find((*io));

ib->second.bdisplay();

cout<<"---------------------------------------------"<

}

cout<<"返回主菜单请按:

1"<

cout<<"退出请按:

2"<

cout<<"重新登录请按:

3"<

intf1;

cin>>f1;

switch(f1)

{

case1:

system("CLS");continue;

case2:

system("CLS");mybool=false;mybl=false;break;

case3:

system("CLS");mybool=false;break;

}break;

case2:

(*it).sum(book1);

(*it).display();

cout<<"---------------------------------------------"<

cout<<"返回主菜单请按:

1"<

cout<<"退出请按:

2"<

cout<<"重新登录请按:

3"<

cin>>f1;

switch(f1)

{

case1:

system("CLS");

continue;

case2:

system("CLS");mybool=false;mybl=false;break;

case3:

system("CLS");

mybool=false;break;

}

break;

case3:

mybool=false;mybl=false;break;

}

}while(mybool);

}break;

case2:

for(im=mb.begin();im!

=mb.end();im++)

{

if(cname==(*im).getbuyname()&&cid==(*im).getid())

break;

elsecontinue;

}

if(im==mb.end())

{

cout<<"输入错误或者没有该账号!

请重新输入!

"<

system("CLS");

continue;

}

else

{

cout<<"登陆成功!

正在跳转中!

请稍候。

"<

Sleep(1000);

system("cls");

boolmya=true;

do

{

cout<<"请输入你所要执行命令的编号"<

cout<<"1:

查看自己的购物车"<

cout<<"2:

结算"<

cout<<"3:

退出"<

cin>>flag;

switch(flag)

{

case1:

for(vector:

:

iteratorio=(*im).bi.begin();io!

=(*im).bi.end();io++)

{

map:

:

iteratorib=book1.find((*io));

ib->second.bdisplay();

cout<<"---------------------------------------------"<

}

cout<<"返回主菜单请按:

1"<

cout<<"退出请按:

2"<

cout<<"重新登录请按:

3"<

intf1;

cin>>f1;

switch(f1)

{

case1:

system("CLS");

continue;

case2:

mya=false;mybl=false;break;

case3:

system("CLS");

mya=false;

break;

}

break;

case2:

(*im).sum(book1);

(*im).display();

cout<<"---------------------------------------------"<

cout<<"返回主菜单请按:

1"<

cout<<"退出请按:

2"<

cout<<"重新登录请按:

3"<

cin>>f1;

switch(f1)

{

case1:

system("CLS");

continue;

case2:

mya=false;mybl=false;break;

case3:

system("CLS");

mya=false;

break;

}

break;

case3:

mya=false;mybl=false;break;

}

 

}while(mya);

}break;

case3:

boolmyb=true;

for(ih=hgt.begin();ih!

=hgt.end();ih++)

{

if(cname==(*ih).getbuyname()&&cid==(*ih).getid())

break;

elsecontinue;

}

if(ih==hgt.end())

{

cout<<"输入错误或者没有该账号!

请重新输入!

"<

system("CLS");

continue;

}

else

{

cout<<"登陆成功!

正在跳转中!

请稍候。

"<

Sleep(1000);

system("cls");

do

{

cout<<"请输入你所要执行命令的编号"<

cout<<"1:

查看自己的购物车"<

cout<<"2:

结算"<

cout<<"3:

退出"<

cin>>flag;

switch(flag)

{

case1:

for(vector:

:

iteratorio=(*ih).bi.begin();io!

=(*ih).bi.end();io++)

{

map:

:

iteratorib=book1.find((*io));

ib->second.bdisplay();

cout<<"---------------------------------------------"<

}

cout<<"返回主菜单请按:

1"<

cout<<"退出请按:

2"<

cout<<"重新登录请按:

3"<

intf1;

cin>>f1;

switch(f1)

{

case1:

system("CLS");

continue;

case2:

myb=false;mybl=false;break;

case3:

system("CLS");myb=false;break;

}

break;

case2:

(*ih).sum(book1);

(*ih).display();

cout<<"---------------------------------------------"<

cout<<"返回主菜单请按:

1"<

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2