一.课程设计目的:

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

C++实现模拟网上购书的结账系统相关推荐

  1. c++设计一个模拟网上购书的结账系统

    了满足要求,我将设计以下五个类: Book(书本)类,表示一本书,包括书名.作者.价格等信息. Customer(客户)类,表示一个客户,包括姓名.地址.电子邮件等信息. ShoppingCart(购 ...

  2. 毕业设计-基于JSP的网上购书系统.doc

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 摘  要 随着网络信息的发展,网络在人们生活中的应用越来越广泛.人们越来越注重时间和效率,希望 ...

  3. 基于SpringBoot框架的网上购书系统的设计与实现

    源码获取:私聊回复[SpringBoot.网上购书]获取 更多选题参考: 计算机毕业设计.三级项目.五级项目.期末大作业.参赛作品等选题参考 文章目录 前言 一.背景及意义 选题背景 选题目的 二.系 ...

  4. java毕业设计——基于java+JSP+MySQL的网上购书系统设计与实现(毕业论文+程序源码)——网上购书系统

    基于java+JSP+MySQL的网上购书系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+MySQL的网上购书系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地 ...

  5. 基于JAVA的网上购书系统(附:源码 论文 项目运行视频)

    摘要 在当今的社会中, 随着社会经济的快速发展以及计算机网络技术和通讯技术的快速成长,网络应用领域也一天天扩大,网络中的新鲜事物层出不穷.电子商务的发展增加了许多商业交易的平台,借助于这种互联网平台, ...

  6. 网上购书系统的设计与实现(PHP+MySQL)

    目 录 摘 要 I Abstract II 第1章 绪论 1 1.1 选题背景及意义 1 1.2 发展现状 2 1.3 课题研究内容 2 第2章 开发技术及工具介绍 4 2.1 PHP简介 4 2.2 ...

  7. JAVA毕业设计Web网上购书后台管理系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计Web网上购书后台管理系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计Web网上购书后台管理系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构 ...

  8. 基于JSP+MySQL的网上购书商城

    网上书城与实体书店比较,更加方便快捷,能够让用户了解更多想要了解的信息.网上购书商城最大的优势在于:消费者不用再特地前往实体店,随时随地可以购买图书,扩大和巩固了客户群,同时也方便了卖家,与传统图书销 ...

  9. (Java)模拟肯德基点餐系统

    问题描述 参考肯德基官网的信息模拟肯德基快餐店的收银系统,结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品结算和找零. 4. ...

最新文章

  1. 后面的参数_常用的JVM参数,你现在就记好
  2. (一)ubuntu下qtcreator +opencv下新建一个项目和调用caffe环境配置
  3. php 腾讯云 文字识别_腾讯云安全为何成为企业首选?4大原因成为制胜王道
  4. 计算机系学生mac,大学生选择苹果电脑之后的经验之谈
  5. Linux下解压缩包命令
  6. [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍
  7. 预约直播!抢CSDN纪念卫衣:开源是在为爱发电?
  8. C# 使用SFTP的上传下载文件时如何使用代理
  9. CDN、SCDN、DCDN是什
  10. LeetCode刷题-中心对称数
  11. Log4j 漏洞修复检测 附检测工具
  12. 中国电子学会2022年09月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)
  13. 我们如何在Linkerd 2.2里设计重试 1
  14. polybase配置 sql_在 Windows 上安装 PolyBase
  15. 文件服务器搭建手机,自己搭建手机云服务器
  16. nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined问题解决
  17. C++入门——实现见缝插针游戏
  18. 2022-2027年中国图书零售连锁市场竞争态势及行业投资前景预测报告
  19. 2022.5.7 腾讯天美暑期实习(更新中)
  20. Cypress入门-(一)如何安装Cypress

热门文章

  1. openlayers摸爬滚打 5.openlayers使用GeoJSON绘制点、线
  2. 进程和线程上下文切换
  3. 亚述尼尼微, 约拿,鲸
  4. 详解超声波测距模块HC-SR04的使用
  5. 如何选购翻新iPad,需要注意哪些问题
  6. 最贵服务器多少钱_买一台服务器需要多少钱?
  7. 基于Nodejs服务器下,python搭配ffmpeg实现推流直播
  8. 配流02—DIAL算法(改进)
  9. 《小学生四则运算出题软件》个人项目总结
  10. python pandas中 inplace 参数理解