版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. z . I . . r . . 面向对象程序课程设计2017/2018学年第二学期第17周指导教师: *班级:*:*:*面向对象程序课程设计任务书【题目】自助点餐系统【目的】通过设计一个小型的自助点餐系统,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。【要求】1、每个学生必须独立完成;2、课程设计时间为1周;3、设计语言采用C+;4、学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,未按规定上交实验报告的学生,其成绩按不及格处理。【容简介】有一个小型餐厅,现在这个餐厅打算使用自助点餐系统,方
2、便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。【考核标准】该系统为两种角色的用户提供效劳,一种是餐厅管理员,一种是顾客。餐厅管理员根据账号、密码登录系统。顾客无需登录即可使用系统。顾客通过该餐厅在系统中提供的菜单为自己点餐,菜单以文件形式保存。系统能够根据顾客的要求正确打出订单,订单容包括订单编号、菜品名称、每个菜品的价格、份数、折扣等;订单分两种,一种是在店消费,在店消费要求包括餐桌号,是否有包厢费,另一种是外卖,外卖要求包括送餐时间,送餐地点,客户手机号,外卖效劳费。要求用继承和多态实现,成绩60;系统退出后能保存当天的订单信息,要求每天一个文档,文档名按照日期命名。餐厅管理员可以
3、根据订单编号查找删除修改*个订单,订单可以按照下单时间先后排序,成绩70;能够实现对餐厅菜式和价格的管理,包括对菜品和对应价格的增加、修改、删除、查找,折扣的设置,成绩80;系统可根据历史记录对销售情况进展统计,根据餐厅管理员的输入日期统计*天的销售情况并显示包括一共接了多少单,销售额是多少,各个菜品的销售情况,外卖和在店销售的占比,成绩90;要求:用面向对象的程序设计方法设计该系统。本系统涉及的根本对象有订单对象包括外卖订单和在店消费订单、订单管理对象、菜单对象、菜品对象、菜品管理对象、系统界面。实现对这些对象的合理抽象和封装,正确定义类之间的关系。界面合理,代码文件组织清晰,命名符合规,代
4、码注释清楚,课程设计报告质量高。面向对象程序课程设计目录题目有一个小型餐厅,现在这个餐厅打算使用自助点餐系统,方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。需求分析有一个小型餐厅,该餐厅提供即时就餐和外卖效劳。方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。1、根据顾客的选择正确打出订单。2、统计出每一天的订单并将之保存在文件中。3、可以通过管理员功能对订单,菜品等进展操作。系统构造图类的设计程序代码与说明Face.h#ifndef Face_h#defineFace_h#includeOrderMana.hclassFaceprivate:OrderMana shard;p
5、ublic:void start();/定义开场界面void Adm();/定义管理员登入界面void Adm1();/定义管理员界面void AdmOrder();/查找修改删除订单void AdmVege();/菜式和价格的管理void AdmSell();/查看销售情况void client();/定义客户界面void AdmVegeI();/添加菜品void AdmVegeII();/修改菜品void AdmVegeIII();/删除菜品void AdmVegeV();/查找菜品void AdmVegeVI();/设置折扣void AdmOrderI();/查找订单void AdmOr
6、derII();/修改订单void AdmOrderIII();/删除订单;#endifMana.h#ifndef Mana_h#defineMana_h#includemenu.h#include#includeusingnamespace std;classMana :publicMenuprivate:string kind;/订单种类string tim, address, phone;/送餐时间,送餐地点,客户手机号int table, Allmoney;/座位号,总价bool a;/是否有包厢费public:string Numble;/订单编号Mana(string numble
7、,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 phone; ;int getTable() return table; ;int ge
8、tAllmoney() 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#defineMenu_h#include#include#includevegetalbe.husingnamespace std;classMenuprivate:Vegetalbe*p;public:list members;list
9、ord;void insert(stringVege, int num);/记录顾客挑选菜单virtualvoid insert(string Vege, double money, int num, double discount);void t*tinsert();/记录原有菜单void printmembers();/输出原有菜单void printord();/输出顾客菜单void pushnew(Vegetalbe &b);/添加菜单string number();/订单编码void dleinsert(string Vege);/删除菜品Menu();#endiforder.h#i
10、fndef Order_h#defineOrder_h#includeusingnamespace std;classOrderprivate:string account;string code;public:Order(string account, string code);bool judge();#endifOrderMana.h#ifndef OrderMana_h#defineOrderMana_h#includeMana.h#includemenu.h#include#includeusingnamespace std;classOrderManaprivate:double
11、BossMoney = 0;/销售额int Fre = 0;/接了多少单double Spec;/外卖和在店销售的占比double TakeOut=0;/外卖次数double InShop=0;/在店次数Mana *p;public:list members;list ord;double getBossMoney();/输出相应日期的销售金额void t*tinsertI(Menu *p, string tim, string address, string phone, string number);/打印外卖订单void t*tinsertII(Menu *p, bool a, int
12、*, string number);/打印在店订单void t*tinsertMana(string day);/获取本地订单void findMana(string numble);/查找订单void pushit(Mana*re);/输出订单void dleinsertM(string numble);/删除订单double getSpec() return TakeOut / InShop; ;double getTakeOut() return TakeOut; ;double getInShop() return InShop; ;int getFre() return Fre; ;
13、#endifvegetalbe.h#ifndef Vegetalbe_h#defineVegetalbe_h#includeusingnamespace std;classVegetalbeprivate:string name;double money;int num;double discount;public:Vegetalbe(stringname, doublemoney, doublediscount)this-name = name;this-money = money;this-discount = discount;Vegetalbe(stringname, doublemo
14、ney,intnum, doublediscount)this-name = name;this-money = money;this-num = num;this-discount = discount;/修改菜品voidSetVegetalbe(stringname, doublemoney, doublediscount)this-name = name;this-money = money;this-discount = discount;string getname() return name; double getmoney() return money; void setnum(
15、int*) this-num = *; int getnum() return num; double getdiscount() return discount; ;#endifinterface.cpp#includeFace.h#includeorder.h#includemenu.h#include#include#include#includeusingnamespace std;/定义开场界面voidFace:start()cout endl;cout ttt欢送使用自助点餐系统ttt endl;cout _ endl;cout ttt请输入操作模式ttt endl;cout tt
16、t1.管理员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();/定义管理员登入界面voidFace:Adm()string account, code;while (1)cout _ endl;cout account;cout code;cout _ Adm1();break;else cou
17、t ttt输入的账户或密码错误 Adm();/定义管理员界面voidFace: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;case 2:AdmVege(); break;case 3:AdmSell(); break;case 4:start(); break;start();/查找修改删除订单void
18、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:AdmOrderIII(); break;case 4:Adm1(); break;Adm1();/菜式和价格的管理voidFace:AdmVege()cout _ endl;cout ttt
19、请输入操作: 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:AdmVegeIII(); break;case 4:AdmVegeV(); break;case 5:AdmVegeVI(); break;case 6:Adm1(); break;A
20、dm1();/查看销售情况voidFace:AdmSell()cout _ endl;cout day;day = D: + day + .t*t;OrderMana pe;pe.t*tinsertMana(day);cout 订单数: pe.getFre()endl;cout 销售额: pe.getBossMoney() endl;cout 外卖和在店销售的占比: pe.getSpec() endl;Adm1();/定义客户界面voidFace:client()cout _ endl;cout ttt菜单 endl;cout 菜品名称t 价格tt 折扣 endl;Menu pe;string
21、 number;double money = 0;pe.t*tinsert();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)string time, address, phone;cout 请输入送餐时间: time;cout 请输入送餐地点: address;cout 请输入手机号: phone;numbe
22、r = 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(); it+)money = (*it)-getmoney()*(*it)-getnum()*(*it)-getdiscount()*0.1 + money;cout 总价: money +
23、 5 元 endl;shard.t*tinsertI(&pe, time, address, phone,number);elseif (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 ttt订单编号: number endl;cout 包厢费: (int)r * 50 元 endl;cout 座位号: c endl;cout 菜品tt价格tt份数tt折扣 endl;p
24、e.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.t*tinsertII(&pe, r, c, number);start();/添加菜品voidFace:AdmVegeI()Menu pe;pe.t*tinsert();string name;double m
25、oney;double discount;cout name;cout money;cout discount;Vegetalbe b(name, money, discount);pe.pushnew(b);list:iterator it;ofstream outDate(D:菜单.t*t, ios:trunc);for (it = pe.members.begin(); it != pe.members.end(); it+)outDate getname() tt getmoney() tt getdiscount() endl;outDate.close();cout 添加成功 en
26、dl;AdmVege();/修改菜品voidFace:AdmVegeII()Menu pe;pe.t*tinsert();string name;double money;double discount;cout name;list:iterator it;for (it = pe.members.begin(); it != pe.members.end(); it+)if (*it)-getname() = name)cout money;cout discount;(*it)-SetVegetalbe(name, money, discount);break;ofstream outDa
27、te(D:菜单.t*t, ios:trunc);for (it = pe.members.begin(); it != pe.members.end(); it+)outDate getname() tt getmoney() tt getdiscount() endl;outDate.close();cout 修改成功 endl;AdmVege();/删除菜品voidFace:AdmVegeIII()Menu pe;pe.t*tinsert();string name;cout name;pe.dleinsert(name);list:iterator it;ofstream outDate
28、(D:菜单.t*t, ios:trunc);for (it = pe.ord.begin(); it != pe.ord.end(); it+)outDate getname() tt getmoney() tt getdiscount() endl;outDate.close();cout 删除成功 endl;AdmVege();/查找菜品voidFace:AdmVegeV()Menu pe;pe.t*tinsert();string name;cout name;list:iterator it;for (it = pe.members.begin(); it != pe.members.
29、end(); it+)if (*it)-getname() = name)cout 菜品名称: getname() t价格: getmoney() 元t getdiscount() 折 endl;break;AdmVege();/设置折扣voidFace:AdmVegeVI()Menu pe;pe.t*tinsert();double discount;double money;string name;cout name;list:iterator it;for (it = pe.members.begin(); it != pe.members.end(); it+)if (*it)-get
30、name() = name)cout discount;money = (*it)-getmoney();(*it)-SetVegetalbe(name, money, discount);break;ofstream outDate(D:菜单.t*t, ios:trunc);for (it = pe.members.begin(); it != pe.members.end(); it+)outDate getname() tt getmoney() tt getdiscount() endl;outDate.close();cout 修改成功 endl;AdmVege();/查找订单voi
31、dFace:AdmOrderI()cout day;day = D: + day + .t*t;cout numble;OrderMana pe;pe.t*tinsertMana(day);pe.findMana(numble);AdmOrder();/修改订单voidFace:AdmOrderII()cout day;day = D: + day + .t*t;cout numble;OrderMana pe;pe.t*tinsertMana(day);/删除订单voidFace:AdmOrderIII()cout day;day = D: + day + .t*t;cout numble;
32、OrderMana pe;pe.t*tinsertMana(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编号 getNumble() endl;outDate 送餐时间: getTim() t送餐地点: getAddress() t客户手机号: getphone() endl;outDate 菜品tt价格tt份数tt折扣 e
33、ndl;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;outDate ttt订单编号: getNumble() endl;outDate 包厢费: getA() * 50 元 endl;outDate 座位号: getTable() endl;outDate 菜
34、品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.close();cout 删除成功 endl;main.cpp#includevegetalbe.h#includemenu.h#includeorder.h#includeFace.h#includeusi
35、ngnamespace std;void main()Face re;re.start();Mana.cpp#includeMana.hMana:Mana(stringnumble, stringkind, stringtim, stringaddress, stringphone)this-Numble = numble;this-kind = kind;this-tim = tim;this-address = address;this-phone = phone;Mana:Mana(stringnumble, stringkind, inttable, boola)this-Numble
36、 = numble;this-kind = kind;this-table = table;this-a = a;voidMana:setAllmoney(intmoney)Allmoney = money;voidMana:insert(stringVege, doublemoney, intnum, doublediscount)list:iterator it;*it = newVegetalbe(Vege, money, num, discount);ord.push_back(*it);menu.cpp#includemenu.h#include#include#includeusi
37、ngnamespace std;/输出原有菜单voidMenu:printmembers()list:iterator it;for (it = members.begin(); it != members.end(); it+)cout getname() tt getmoney() 元tt getdiscount() 折 endl;/输出顾客菜单voidMenu:printord()list:iterator it;for (it = ord.begin(); it != ord.end(); it+)cout getname() tt getmoney() 元tt getnum() 份t
38、t getdiscount() 折 endl;/记录顾客挑选菜单voidMenu:insert(stringVege, intnum)list:iterator it;for (it = members.begin(); it != members.end(); it+)if (*it)-getname() = Vege)(*it)-setnum(num);ord.push_back(*it);/记录原有菜单voidMenu:t*tinsert()ifstream infile(D:菜单.t*t);string name;double money;double discount;infile
39、name money discount; p = newVegetalbe(name, money, discount);while (!infile.eof()members.push_back(p);infile name money discount;p = newVegetalbe(name, money, discount);infile.close();voidMenu:pushnew(Vegetalbe &b)p = &b;members.push_back(p);stringMenu:number()time_t t = time(0);char tmp32 = NULL ;s
40、trftime(tmp, sizeof(tmp), %Y%m%d%H%M%S, localtime(&t);return tmp;voidMenu:dleinsert(stringVege)list:iterator it;for (it = members.begin(); it != members.end(); it+)if (*it)-getname() != Vege)ord.push_back(*it);voidMenu:insert(stringVege, doublemoney, intnum, doublediscount)list:iterator it;*it = new
41、Vegetalbe(Vege, money, num, discount);ord.push_back(*it);Menu:Menu()list:iterator it;for (it = members.begin(); it != members.end(); it+)delete *it;for (it = ord.begin(); it != ord.end(); it+)delete *it;Order.cpp#includeorder.h#includeusingnamespace std;Order:Order(stringaccount, stringcode)this-acc
42、ount = account;this-code = code;boolOrder:judge()bool T = 0;ifstream infile(D:管理员账号.t*t);string Account, Code;while (!infile.eof()infile Account Code;if (this-account = Account) | (this-code = Code)T = 1;break;infile.close();return T;OrderMana.cpp#includeOrderMana.h#include#include#includeusingnames
43、pace std;/输出相应日期的销售金额doubleOrderMana:getBossMoney()return BossMoney;/打印外卖订单voidOrderMana:t*tinsertI(Menu *p, stringtim, stringaddress, stringphone, stringnumber)structtm t; /tm构造指针time_t now; /声明time_t类型变量time(&now); /获取系统日期和时间localtime_s(&t, &now); /获取当地日期和时间int year = t.tm_year + 1900;int mon = t.
44、tm_mon + 1;int d = t.tm_mday;string tmp = to_string(year) + - + to_string(mon) + - + to_string(d);string day = D: + tmp + .t*t;ofstream outDate(day, ios:app);double money = 0;outDate endl ttt外卖 endl;outDate ttt订单编号 number endl;outDate 送餐时间 tim t送餐地点 address t客户手机号 phone endl;list:iterator it;for (it
45、 = p-ord.begin(); it != p-ord.end(); it+)outDate getname() tt getmoney() tt getnum() tt getdiscount() getmoney()*(*it)-getnum()*(*it)-getdiscount()*0.1 + money;outDate 总价 money+5endl;outDate.close();/打印在店订单voidOrderMana:t*tinsertII(Menu *p, boola, int*, stringnumber)structtm t; /tm构造指针time_t now; /声
46、明time_t类型变量time(&now); /获取系统日期和时间localtime_s(&t, &now); /获取当地日期和时间int year = t.tm_year + 1900;int mon = t.tm_mon + 1;int d = t.tm_mday;string tmp = to_string(year) + - + to_string(mon) + - + to_string(d);string day = D: + tmp + .t*t;ofstream outDate(day, ios:app);double money = 0;outDate endl ttt在店消
47、费 endl;if (a = 1)outDate ttt订单编号 number endl;outDate 包厢费 (int)a * 50 endl;outDate 座位号 * endl;list:iterator it;for (it = p-ord.begin(); it != p-ord.end(); it+)outDate getname() tt getmoney() tt getnum() tt getdiscount() getmoney()*(*it)-getnum()*(*it)-getdiscount()*0.1 + money;outDate 总价 money + (int
48、)a * 50endl;elseoutDate ttt订单编号 number endl;outDate 包厢费 (int)a * 50 endl;outDate 座位号 * endl;list:iterator it;for (it = p-ord.begin(); it != p-ord.end(); it+)outDate getname() tt getmoney() tt getnum() tt getdiscount() getmoney()*(*it)-getnum()*(*it)-getdiscount()*0.1 + money;outDate 总价 money + (int)a * 50 kind;if (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二手废钢材回收转让协议
- IT企业劳动合同范本
- 交通指挥员派遣合同
- 《橄榄病虫害防治技术》课程标准
- 代理经销合同
- 乐器维修外包服务合同
- 互联网企业人防工程承包合同
- 会计事务所租赁合同范本
- 人才资源优化劳动合同池
- 人力资源招聘奖金协议
- 一年级上册全册道德与法治教案全
- 中班健康《身体上的洞洞》课件
- GB/T 9452-2023热处理炉有效加热区测定方法
- 停车场施工方案及技术措施范本
- 高考地理一轮复习课件【知识精讲+高效课堂】美食与地理环境关系
- 分居声明告知书范本
- 2023年04月山东济南市槐荫区残联公开招聘残疾人工作“一专两员”公开招聘笔试参考题库+答案解析
- 消失的13级台阶
- 营销管理知识点
- 船体强度与结构设计课程设计
- 不宁腿综合征诊断与治疗
评论
0/150
提交评论