一.课程设计目的:
本课程设计是计算机专业重要的实践性环节之一,是在学习完《面向对象程序设计语言(C++)》课程后进行的一次全面的综合练习。本课程设计的目的和任务:
1.巩固和加深学生对C++语言课程的基本知识的理解和掌握
2.掌握C++语言编程和程序调试的基本技能
3.利用C++语言进行面向对象的软件设计方法
4.掌握书写程序设计说明文档的能力
5.提高运用C++语言解决实际问题的能力
二. 课程设计内容:
用C++语言完成一个模拟网上购书结账功能,数据保存在文件中。C++语言全面兼容C语言,它比C语言更加安全、可读性更好、代码结构更合理。所以C++是的该程序开发更加容易。模拟网上购书结账功能可以方便卖书人员更加快速地获取并充分了解自己销售书籍的订单信息,十分有用。
用户在网上购书以后,系统根据购书人的不同类型计算出购书人的费用。
网上购书的一般过程:用户首先输入会员号,然后,选择想要买的书籍放到购书筐中,选择结束后,用户要求系统结帐,系统便计算出费用通知用户。
三. 课程设计要求:
(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定义为虚函数。
进入欢迎界面,输入编号,确定会员身份;
1-100黄金会员;
200-300钻石会员;
1000-2000普通会员;
if(number>=0&&number<=20)
{ level=1;}
else
if(number>=21&&number<=40)
{ level=2;}
else
if(number>=41&&number<=60)
{ level=3;}
else
if(number>=61&&number<=80)
{ level=4;}
else
if(number>=81&&number<=100)
{ level=5;}
确定黄金会员等级;
“黄金会员”购书费的计算方法是:五星级会员按照原价的70%收取, 四星级会员按照原价的80%收取, 三星级会员按照原价的85%收取, 二星级会员按照原价的90%收取, 一星级会员按照原价的95%收取。
程序的源代码
#include<iostream>
#include<string>
using namespace std;
class buyfolk;
class member;
class honoured_guest;
class buyer
{
public:
buyer()
{
name="Null";
addr="Null";
number=0;
expense=0;
level=0;
}
void getid(int num)
{
number=num;
if(number>=0&&number<=20)
{ level=1;}
else
if(number>=21&&number<=40)
{ level=2;}
else
if(number>=41&&number<=60)
{ level=3;}
else
if(number>=61&&number<=80)
{ level=4;}
else
if(number>=81&&number<=100)
{ level=5;}
else
if(number>=200&&number<=300)
{ }
else
if(number>=1000&&number<=2000)
{ }
else
cout<<"Error
munber please register"<<endl;
}
void
getbuyname()
{
cout<<"请输入你的姓名:"<<endl;
cin>>name;
}
void
getaddress()
{
cout<<"请输入你的地址:"<<endl;
cin>>addr;
}
virtual
void setpay()
{
getbuyname();
getaddress();
cout<<"请输入你的未打折消费: "<<endl;
cin>>expense;
}
virtual
void display()
{
cout<<"姓名: "<<name<<endl<<"地址:
"<<addr<<endl<<"编号: "<<number<<endl<<"消费:
"<<expense<<endl;
}
protected:
string name;
string addr;
int number;
int level;
double expense;
};
class buyfolk:public buyer
{
public:
virtual
void display()
{
cout<<"--欢迎您,亲爱的普通会员--"<<endl;
buyer::display();
}
virtual
void setpay()
{
buyer::setpay();
}
};
class member:public buyer
{
public:
member()
{
}
virtual
void setpay()
{
buyer::setpay();
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;
}
virtual
void display()
{
cout<<"--欢迎您,亲爱的黄金会员--"<<endl;
buyer::display();
cout<<"Level:
"<<level<<endl;
}
private:
};
class honoured_guest:public buyer
{
public:
honoured_guest()
{
discount=0;
}
virtual
void setpay()
{
buyer::setpay();
cout<<"请输入你的折扣: "<<endl;
cin>>discount;
expense*=(1-discount);
}
virtual
void display()
{
cout<<"--欢迎您,亲爱的钻石会员--"<<endl;
buyer::display();
cout<<"折扣:"<<discount<<endl;
}
private:
double discount;
};
int main()
{
int number;
buyfolk
b[10];
member
m[10];
honoured_guest
h[10];
int i=0,flag=1,j=0,z=0;
while(flag)
{ cout<<"-------------------------------------------------"
<<endl;
cout<<" ------欢迎进入我们书店------
"<<endl;
cout<<" ----如果你想要退出,请输入886----
"<<endl;
cout<<" ----请输入你的编号----
"<<endl;
cout<<"-------------------------------------------------"
<<endl;
cin>>number;
if(number>=0&&number<=100)
{
cout<<"--欢迎您,亲爱的黄金会员--"<<endl;
m[i].getid(number);
m[i].setpay();
m[i].display();
i++;
cout<<endl<<endl;
}
else
if(number>=200&&number<=300)
{
cout<<"--欢迎您,亲爱的钻石会员--"<<endl;
h[j].getid(number);
h[j].setpay();
h[j].display();
j++;
cout<<endl<<endl;
}
else
if(number>=1000&&number<=2000)
{
cout<<"--欢迎您,亲爱的普通会员--"<<endl;
b[z].getid(number);
b[z].setpay();
b[z].display();
z++;
cout<<endl<<endl;
}
else
if(number==886)
{
flag=0;
cout<<"--欢迎下次光临--"<<endl;
}
else
cout<<"Error
munber please register"<<endl;
}
return 0;
}