C++实现模拟网上购书的结账系统

一.课程设计目的:

本课程设计是计算机专业重要的实践性环节之一,是在学习完《面向对象程序设计语言(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;
}

  • 11
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦笑的背后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值