面向对象程序设计A课程设计_第1页
面向对象程序设计A课程设计_第2页
面向对象程序设计A课程设计_第3页
面向对象程序设计A课程设计_第4页
面向对象程序设计A课程设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序课程设计(2017/2018学年第二学期第17周)指导教师: XXX班级:XXX学号:XXXX姓名:XXX 面向对象程序课程设计任务书【题目】自助点餐系统【目的】通过设计一个小型的自助点餐系统,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。【要求】1、每个学生必须独立完成;2、课程设计时间为1周;3、设计语言采用C+;4、学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,未按规定上交实验报告的学生,其成绩按不及格处理。【内容简介】 有一个小型餐厅,现在这个餐厅打算使用自助点餐系统,方便

2、顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。【考核标准】该系统为两种角色的用户提供服务,一种是餐厅管理员,一种是顾客。餐厅管理员根据账号、密码登录系统。顾客无需登录即可使用系统。1、 顾客通过该餐厅在系统中提供的菜单为自己点餐,菜单以文件形式保存。系统能够根据顾客的要求正确打出订单,订单内容包括订单编号、菜品名称、每个菜品的价格、份数、折扣等;订单分两种,一种是在店消费,在店消费要求包括餐桌号,是否有包厢费,另一种是外卖,外卖要求包括送餐时间,送餐地点,客户手机号,外卖服务费。(要求用继承和多态实现),成绩60;2、 系统退出后能保存当天的订单信息,要求每天一个文档,文档名按照日期命名

3、。餐厅管理员可以根据订单编号查找删除修改某个订单,订单可以按照下单时间先后排序,成绩70;3、 能够实现对餐厅菜式和价格的管理,包括对菜品和对应价格的增加、修改、删除、查找,折扣的设置,成绩80;4、 系统可根据历史记录对销售情况进行统计,根据餐厅管理员的输入日期统计某天的销售情况并显示(包括一共接了多少单,销售额是多少,各个菜品的销售情况,外卖和在店销售的占比),成绩90;要求:用面向对象的程序设计方法设计该系统。本系统涉及的基本对象有订单对象(包括外卖订单和在店消费订单)、订单管理对象、菜单对象、菜品对象、菜品管理对象、系统界面。实现对这些对象的合理抽象和封装,正确定义类之间的关系。界面合

4、理,代码文件组织清晰,命名符合规范,代码注释清楚,课程设计报告质量高。面向对象程序课程设计目 录一、 题目有一个小型餐厅,现在这个餐厅打算使用自助点餐系统,方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。二、 需求分析有一个小型餐厅,该餐厅提供即时就餐和外卖服务。方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。1、根据顾客的选择正确打出订单。2、统计出每一天的订单并将之保存在文件中。3、可以通过管理员功能对订单,菜品等进行操作。三、 系统结构图四、 类的设计五、 程序代码与说明Face.h#ifndef Face_h#define Face_h#include OrderMan

5、a.hclass Faceprivate:OrderMana shard;public:void start();/定义开始界面void Adm();/定义管理员登入界面void Adm1();/定义管理员界面void AdmOrder();/查找修改删除订单void AdmVege();/菜式和价格的管理void AdmSell();/查看销售情况void client();/定义客户界面void AdmVegeI();/添加菜品void AdmVegeII();/修改菜品void AdmVegeIII();/删除菜品void AdmVegeV();/查找菜品void AdmVegeVI()

6、;/设置折扣void AdmOrderI();/查找订单void AdmOrderII();/修改订单void AdmOrderIII();/删除订单;#endifMana.h#ifndef Mana_h#define Mana_h#include menu.h#include #include using namespace std;class Mana :public Menuprivate:string kind;/订单种类string tim, address, phone;/送餐时间,送餐地点,客户手机号int table, Allmoney;/座位号,总价bool a;/是否有包厢

7、费public:string Numble;/订单编号Mana(string numble,string kind,string tim, string address, string phone);Mana(string numble, string kind,int table, bool a);void setAllmoney(int money);string getKind() return kind; ;string getTim() return tim; ;string getAddress() return address; ;string getphone() return

8、 phone; ;int getTable() return table; ;int getAllmoney() return Allmoney; ;bool getA() return a; ;string getNumble() return Numble; ;void insert(string Vege, double money, int num, double discount);#endifmenu.h#ifndef Menu_h#define Menu_h#include #include #include vegetalbe.husing namespace std;clas

9、s Menuprivate:Vegetalbe*p;public:list members;list ord;void insert(string Vege, int num);/记录顾客挑选菜单virtual void insert(string Vege, double money, int num, double discount);void txtinsert();/记录原有菜单void printmembers();/输出原有菜单void printord();/输出顾客菜单void pushnew(Vegetalbe &b);/添加菜单string number();/订单编码vo

10、id dleinsert(string Vege);/删除菜品Menu();#endiforder.h#ifndef Order_h#define Order_h#include using namespace std;class Orderprivate:string account;string code;public:Order(string account, string code);bool judge();#endifOrderMana.h#ifndef OrderMana_h#define OrderMana_h#include Mana.h#include menu.h#inc

11、lude #include using namespace std;class OrderManaprivate:double BossMoney = 0;/销售额int Fre = 0;/接了多少单double Spec;/外卖和在店销售的占比double TakeOut=0;/外卖次数double InShop=0;/在店次数Mana *p;public:list members;list ord;double getBossMoney();/输出相应日期的销售金额void txtinsertI(Menu *p, string tim, string address, string pho

12、ne, string number);/打印外卖订单void txtinsertII(Menu *p, bool a, int x, string number);/打印在店订单void txtinsertMana(string day);/获取本地订单void findMana(string numble);/查找订单void pushit(Mana*re);/输出订单void dleinsertM(string numble);/删除订单double getSpec() return TakeOut / InShop; ;double getTakeOut() return TakeOut

13、; ;double getInShop() return InShop; ;int getFre() return Fre; ;#endifvegetalbe.h#ifndef Vegetalbe_h#define Vegetalbe_h#include using namespace std;class Vegetalbeprivate:string name;double money;int num;double discount;public:Vegetalbe(string name, double money, double discount)this-name = name;thi

14、s-money = money;this-discount = discount;Vegetalbe(string name, double money,int num, double discount)this-name = name;this-money = money;this-num = num;this-discount = discount;/修改菜品voidSetVegetalbe(string name, double money, double discount)this-name = name;this-money = money;this-discount = disco

15、unt;string getname() return name; double getmoney() return money; void setnum(int x) this-num = x; int getnum() return num; double getdiscount() return discount; ;#endifinterface.cpp#include Face.h#include order.h#include menu.h#include #include #include#includeusing namespace std;/定义开始界面void Face:s

16、tart()cout endl;cout ttt欢迎使用自助点餐系统ttt endl;cout _ endl;cout ttt请输入操作模式ttt endl;cout ttt1.管理员ttt endl;cout ttt2.顾客ttt endl;cout _ m;if (m = 1)Adm();int i;cin i;switch (i)case 1:AdmOrder(); break;case 2:AdmVege(); break;case 3:AdmSell(); break;case 4:break;else client();/定义管理员登入界面void Face:Adm()string

17、 account, code;while (1)cout _ endl;cout account;cout code;cout _ Adm1();break;else cout ttt输入的账户或密码错误 Adm();/定义管理员界面void Face:Adm1()cout _ endl;cout ttt请输入操作: endl;cout ttt1.查找修改删除订单 endl;cout ttt2.菜式和价格的管理 endl;cout ttt3.查看销售情况 endl;cout ttt4.退出 endl;cout _ i;switch (i)case 1:AdmOrder(); break;cas

18、e 2:AdmVege(); break;case 3:AdmSell(); break;case 4:start(); break;start();/查找修改删除订单void Face:AdmOrder()cout _ endl;cout ttt请输入操作: endl;cout ttt1.查找订单 endl;cout ttt2.修改订单 endl;cout ttt3.删除订单 endl;cout ttt4.退出 endl;cout _ i;switch (i)case 1:AdmOrderI(); break;case 2:AdmOrderII(); break;case 3:AdmOrde

19、rIII(); break;case 4:Adm1(); break;Adm1();/菜式和价格的管理void Face:AdmVege()cout _ endl;cout ttt请输入操作: endl;cout ttt1.添加菜品 endl;cout ttt2.修改菜品 endl;cout ttt3.删除菜品 endl;cout ttt4.查找菜品 endl;cout ttt5.设置折扣 endl;cout ttt6.退出 endl;cout _ i;switch (i)case 1:AdmVegeI(); break;case 2:AdmVegeII(); break;case 3:Adm

20、VegeIII(); break;case 4:AdmVegeV(); break;case 5:AdmVegeVI(); break;case 6:Adm1(); break;Adm1();/查看销售情况void Face:AdmSell()cout _ endl;cout day;day = D: + day + .txt;OrderMana pe;pe.txtinsertMana(day);cout 订单数: pe.getFre()endl;cout 销售额: pe.getBossMoney() endl;cout 外卖和在店销售的占比: pe.getSpec() endl;Adm1()

21、;/定义客户界面void Face:client()cout _ endl;cout ttt菜单 endl;cout 菜品名称t 价格tt 折扣 endl;Menu pe;string number;double money = 0;pe.txtinsert();pe.printmembers();cout 请输入购买菜品和份数: Vege;int num;cin num;pe.insert(Vege, num);cout c;if (c = 否) break;cout ttt请选择消费模式 endl;cout ttt1.外卖 endl;cout ttt2.在店消费 i;if (i = 1)s

22、tring time, address, phone;cout 请输入送餐时间: time;cout 请输入送餐地点: address;cout 请输入手机号: phone;number = pe.number();cout ttt外卖 endl;cout ttt编号: number endl;cout 送餐时间: time t送餐地点: address t客户手机号: phone endl;cout 菜品tt价格tt份数tt折扣 endl;pe.printord();list:iterator it;for (it = pe.ord.begin(); it != pe.ord.end();

23、it+)money = (*it)-getmoney()*(*it)-getnum()*(*it)-getdiscount()*0.1 + money;cout 总价: money + 5 元 endl;shard.txtinsertI(&pe, time, address, phone,number);else if (i = 2)cout i;bool r = 0;if (i = 是)r = 1;int c;srand(unsigned)time(NULL);c = rand() % (50 - 1);number = pe.number();cout ttt在店消费 endl;cout

24、ttt订单编号: number endl;cout 包厢费: (int)r * 50 元 endl;cout 座位号: c endl;cout 菜品tt价格tt份数tt折扣 endl;pe.printord();list:iterator it;for (it = pe.ord.begin(); it != pe.ord.end(); it+)money = (*it)-getmoney()*(*it)-getnum()*(*it)-getdiscount()*0.1 + money;cout 总价: money + (int)r * 50 元 endl;shard.txtinsertII(&

25、pe, r, c, number);start();/添加菜品void Face:AdmVegeI()Menu pe;pe.txtinsert();string name;double money;double discount;cout name;cout money;cout discount;Vegetalbe b(name, money, discount);pe.pushnew(b);list:iterator it;ofstream outDate(D:菜单.txt, ios:trunc);for (it = pe.members.begin(); it != pe.members

26、.end(); it+)outDate getname() tt getmoney() tt getdiscount() endl;outDate.close();cout 添加成功 endl;AdmVege();/修改菜品void Face:AdmVegeII()Menu pe;pe.txtinsert();string name;double money;double discount;cout name;list:iterator it;for (it = pe.members.begin(); it != pe.members.end(); it+)if (*it)-getname()

27、 = name)cout money;cout discount;(*it)-SetVegetalbe(name, money, discount);break;ofstream outDate(D:菜单.txt, ios:trunc);for (it = pe.members.begin(); it != pe.members.end(); it+)outDate getname() tt getmoney() tt getdiscount() endl;outDate.close();cout 修改成功 endl;AdmVege();/删除菜品void Face:AdmVegeIII()M

28、enu pe;pe.txtinsert();string name;cout name;pe.dleinsert(name);list:iterator it;ofstream outDate(D:菜单.txt, ios:trunc);for (it = pe.ord.begin(); it != pe.ord.end(); it+)outDate getname() tt getmoney() tt getdiscount() endl;outDate.close();cout 删除成功 endl;AdmVege();/查找菜品void Face:AdmVegeV()Menu pe;pe.t

29、xtinsert();string name;cout name;list:iterator it;for (it = pe.members.begin(); it != pe.members.end(); it+)if (*it)-getname() = name)cout 菜品名称: getname() t价格: getmoney() 元t getdiscount() 折 endl;break;AdmVege();/设置折扣void Face:AdmVegeVI()Menu pe;pe.txtinsert();double discount;double money;string name

30、;cout name;list:iterator it;for (it = pe.members.begin(); it != pe.members.end(); it+)if (*it)-getname() = name)cout discount;money = (*it)-getmoney();(*it)-SetVegetalbe(name, money, discount);break;ofstream outDate(D:菜单.txt, ios:trunc);for (it = pe.members.begin(); it != pe.members.end(); it+)outDa

31、te getname() tt getmoney() tt getdiscount() endl;outDate.close();cout 修改成功 endl;AdmVege();/查找订单void Face:AdmOrderI()cout day;day = D: + day + .txt;cout numble;OrderMana pe;pe.txtinsertMana(day);pe.findMana(numble);AdmOrder();/修改订单void Face:AdmOrderII()cout day;day = D: + day + .txt;cout numble;Order

32、Mana pe;pe.txtinsertMana(day);/删除订单void Face:AdmOrderIII()cout day;day = D: + day + .txt;cout numble;OrderMana pe;pe.txtinsertMana(day);ofstream outDate(day, ios:trunc);list:iterator it;for (it = pe.ord.begin(); it != pe.ord.end(); it+)if (*it)-getKind() = 外卖)outDate ttt外卖 endl;outDate ttt编号 getNumb

33、le() endl;outDate 送餐时间: getTim() t送餐地点: getAddress() t客户手机号: getphone() endl;outDate 菜品tt价格tt份数tt折扣 endl;list:iterator I;for (I = (*it)-ord.begin(); I != (*it)-ord.end(); it+)outDate getname() tt getmoney() tt getnum()ttgetdiscount() endl;outDate 总价: getAllmoney() 元 endl;elseoutDate ttt在店消费 endl;out

34、Date ttt订单编号: getNumble() endl;outDate 包厢费: getA() * 50 元 endl;outDate 座位号: getTable() endl;outDate 菜品tt价格tt份数tt折扣 endl;list:iterator I;for (I = (*it)-ord.begin(); I != (*it)-ord.end(); it+)outDate getname() tt getmoney() tt getnum() tt getdiscount() endl;outDate 总价: getAllmoney() 元 endl;outDate.clo

35、se();cout 删除成功 endl;main.cpp#include vegetalbe.h#include menu.h#include order.h#include Face.h#include using namespace std;void main()Face re;re.start();Mana.cpp#include Mana.hMana:Mana(string numble, string kind, string tim, string address, string phone)this-Numble = numble;this-kind = kind;this-ti

36、m = tim;this-address = address;this-phone = phone;Mana:Mana(string numble, string kind, int table, bool a)this-Numble = numble;this-kind = kind;this-table = table;this-a = a;void Mana:setAllmoney(int money)Allmoney = money;void Mana:insert(string Vege, double money, int num, double discount)list:ite

37、rator it;*it = new Vegetalbe(Vege, money, num, discount);ord.push_back(*it);menu.cpp#include menu.h#include #include #include using namespace std;/输出原有菜单void Menu:printmembers()list:iterator it;for (it = members.begin(); it != members.end(); it+)cout getname() tt getmoney() 元tt getdiscount() 折 endl;

38、/输出顾客菜单void Menu:printord()list:iterator it;for (it = ord.begin(); it != ord.end(); it+)cout getname() tt getmoney() 元tt getnum() 份tt getdiscount() 折 endl;/记录顾客挑选菜单void Menu:insert(string Vege, int num)list:iterator it;for (it = members.begin(); it != members.end(); it+)if (*it)-getname() = Vege)(*i

39、t)-setnum(num);ord.push_back(*it);/记录原有菜单void Menu:txtinsert()ifstream infile(D:菜单.txt);string name;double money;double discount;infile name money discount; p = new Vegetalbe(name, money, discount);while (!infile.eof()members.push_back(p);infile name money discount;p = new Vegetalbe(name, money, dis

40、count);infile.close();void Menu:pushnew(Vegetalbe &b)p = &b;members.push_back(p);string Menu:number()time_t t = time(0);char tmp32 = NULL ;strftime(tmp, sizeof(tmp), %Y%m%d%H%M%S, localtime(&t);return tmp;void Menu:dleinsert(string Vege)list:iterator it;for (it = members.begin(); it != members.end(); it+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论