实验设计二(模拟网上购书的结账功能)
- 格式:doc
- 大小:417.50 KB
- 文档页数:17
北京信息科技大学实验设计报告课程名称面向对象程序设计实验设计题目模拟网上购书的结帐功能指导教师李春强设计起止日期设计地点系别信息安全专业信息安全学生姓名__李继文________________班级/学信安1002/2010012713成绩___________________附录:代码如下:#include<iostream>#include<string>#include<algorithm>#include<vector>#include<map>#include<windows.h>using namespace std;class book{private:string bookname;float price;string press;public:book(string bn,float p,string pr){bookname=bn;price=p;press=pr;}book(){}string getbn(){return bookname;}float getp(){return price;}void bdisplay(){cout<<"书名:"<<bookname<<endl;cout<<"出版社:"<<press<<endl;cout<<"价格:"<<price<<endl;}};map<string,book>book1; //书的类定义class buyer{protected:string name;string address;string id;float money;public:vector<string>bi;void sum(map<string,book>ll){money=0;for(vector<string>::iterator ir=bi.begin();ir!=bi.end();ir++){money+=ll.find((*ir))->second.getp();}}string getbuyname(){return name;}string getaddress(){return address;}string getid(){return id;}float getpay(){return money;}virtual void setpay(){money=money;}virtual void display(){}buyer(string n,string a,string i,float m,vector<string>b){name=n;address=a;id=i;money=m;bi=b;}};class member:public buyer //会员的定义{private:int honoured_guest;public:member(string n,string a,string i,float m,vector<string>b,int h):buyer(n,a,i,m,b) {honoured_guest=h;}void setpay(){switch( honoured_guest){case 1:money=money*0.95;break;case 2:money=money*0.9;break;case 3:money=money*0.85;break;case 4:money=money*0.8;break;case 5:money=money*0.7;break;}}void display(){cout<<"亲爱的"<< honoured_guest<<"级会员:"<<getbuyname()<<endl;cout<<"你的购书款为:"<<getpay()<<endl;setpay();cout<<"优惠后的购书款:"<<getpay()<<endl;}};class honoured_guest:public buyer{private:float disaccont;public:honoured_guest(string n,string a,string i,float m,vector<string>b,float d):buyer(n,a,i,m,b) {disaccont=d;}void setpay(){money=money*(1-disaccont);}void display(){cout<<"亲爱的贵宾:"<<getbuyname()<<endl;cout<<"你的购书价格:"<<getpay()<<endl;setpay();cout<<"优惠后的价格为:"<<getpay()<<endl;}};class layfolk:public buyer //普通用户{public:layfolk(string n,string a,string i,float m,vector<string>sc):buyer(n,a,i,m,sc){}void setpay(){money=money;}void display(){cout<<"亲爱的用户:"<<getbuyname()<<endl;cout<<"你的购书款为:"<<getpay()<<endl;setpay();cout<<"你优惠后购书款为:"<<getpay()<<endl;}};class deal{private:map<string,book>book1;vector<layfolk>la;vector<member>mb;vector<honoured_guest>hgt;public:deal(map<string,book>m1,vector<layfolk>la1,vector<member>mb1,vector<honoured_guest>hgt1) {book1=m1;la=la1;mb=mb1;hgt=hgt1;}int judge(string ll) //判断登录用户的类型{if(ll.substr(0,2)=="lf")return 1;else if(ll.substr(0,2)=="mb")return 2;else if(ll.substr(0,2)=="hg")return 3;else return 4;}void land(){string cid,cname;vector<layfolk>::iterator it;vector<member>::iterator im;vector<honoured_guest>::iterator ih;bool mybl=true;int flag;do{cout<<"----------------------------------------------"<<endl;cout<<"----------------欢迎你的到来------------------"<<endl;cout<<"----------------------------------------------"<<endl;cout<<"请输入你的账号"<<endl;cin>>cid;cout<<"请输入用户名"<<endl;cin>>cname;switch(judge(cid)){case 1:for(it=la.begin();it!=la.end();it++){if(cname==(*it).getbuyname()&&cid==(*it).getid())break;else continue;}if(it==la.end()){system("CLS");cout<<"输入错误或者没有该账号!请重新输入!"<<endl;continue;}else{cout<<"登陆成功!正在跳转中!请稍候。
!"<<endl;Sleep(1000);system("CLS");bool mybool=true;do{cout<<"请输入你所要执行命令的编号"<<endl;cout<<"1:查看自己的购物车"<<endl;cout<<"2:结算"<<endl;cout<<"3:退出"<<endl;cin>>flag;switch(flag){case 1:for(vector<string>::iteratorio=(*it).bi.begin();io!=(*it).bi.end();io++){map<string,book>::iterator ib=book1.find((*io));ib->second.bdisplay();cout<<"---------------------------------------------"<<endl;}cout<<"返回主菜单请按:1"<<endl;cout<<"退出请按:2"<<endl;cout<<"重新登录请按:3"<<endl;int f1;cin>>f1;switch(f1){case 1:system("CLS");continue;case 2:system("CLS");mybool=false;mybl=false;break;case 3:system("CLS");mybool=false;break;}break;case 2:(*it).sum(book1);(*it).display();cout<<"---------------------------------------------"<<endl;cout<<"返回主菜单请按:1"<<endl;cout<<"退出请按:2"<<endl;cout<<"重新登录请按:3"<<endl;cin>>f1;switch(f1){case 1:system("CLS");continue;case 2:system("CLS");mybool=false;mybl=false;break;case 3:system("CLS");mybool=false;break;}break;case 3:mybool=false;mybl=false;break;}} while (mybool);}break;case 2:for(im=mb.begin();im!=mb.end();im++){if(cname==(*im).getbuyname()&&cid==(*im).getid())break;else continue;}if(im==mb.end()){cout<<"输入错误或者没有该账号!请重新输入!"<<endl;system("CLS");continue;}else{cout<<"登陆成功!正在跳转中!请稍候。