《面向对象程序设计A课程设计.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计A课程设计.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流面向对象程序设计A课程设计.精品文档.面向对象程序课程设计(2017/2018学年第二学期第17周)指导教师: XXX班级:XXX学号:XXXX姓名:XXX 面向对象程序课程设计任务书【题目】自助点餐系统【目的】通过设计一个小型的自助点餐系统,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。【要求】1、每个学生必须独立完成;2、课程设计时间为1周;3、设计语言采用C+;4、学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,未按规定上交实验报告的学生
2、,其成绩按不及格处理。【内容简介】 有一个小型餐厅,现在这个餐厅打算使用自助点餐系统,方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。【考核标准】该系统为两种角色的用户提供服务,一种是餐厅管理员,一种是顾客。餐厅管理员根据账号、密码登录系统。顾客无需登录即可使用系统。1、 顾客通过该餐厅在系统中提供的菜单为自己点餐,菜单以文件形式保存。系统能够根据顾客的要求正确打出订单,订单内容包括订单编号、菜品名称、每个菜品的价格、份数、折扣等;订单分两种,一种是在店消费,在店消费要求包括餐桌号,是否有包厢费,另一种是外卖,外卖要求包括送餐时间,送餐地点,客户手机号,外卖服务费。(要求用继承和多态实
3、现),成绩60;2、 系统退出后能保存当天的订单信息,要求每天一个文档,文档名按照日期命名。餐厅管理员可以根据订单编号查找删除修改某个订单,订单可以按照下单时间先后排序,成绩70;3、 能够实现对餐厅菜式和价格的管理,包括对菜品和对应价格的增加、修改、删除、查找,折扣的设置,成绩80;4、 系统可根据历史记录对销售情况进行统计,根据餐厅管理员的输入日期统计某天的销售情况并显示(包括一共接了多少单,销售额是多少,各个菜品的销售情况,外卖和在店销售的占比),成绩90;要求:用面向对象的程序设计方法设计该系统。本系统涉及的基本对象有订单对象(包括外卖订单和在店消费订单)、订单管理对象、菜单对象、菜品
4、对象、菜品管理对象、系统界面。实现对这些对象的合理抽象和封装,正确定义类之间的关系。界面合理,代码文件组织清晰,命名符合规范,代码注释清楚,课程设计报告质量高。面向对象程序课程设计目 录一、 题目有一个小型餐厅,现在这个餐厅打算使用自助点餐系统,方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。二、 需求分析有一个小型餐厅,该餐厅提供即时就餐和外卖服务。方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。1、根据顾客的选择正确打出订单。2、统计出每一天的订单并将之保存在文件中。3、可以通过管理员功能对订单,菜品等进行操作。三、 系统结构图四、 类的设计五、 程序代码与说明Face.h
5、#ifndef Face_h#define Face_h#include OrderMana.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
6、();/删除菜品void AdmVegeV();/查找菜品void AdmVegeVI();/设置折扣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;/送餐时间,送餐地点,客
7、户手机号int table, Allmoney;/座位号,总价bool a;/是否有包厢费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
8、() return address; ;string getphone() return 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
9、#include vegetalbe.husing namespace std;class 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 pushne
10、w(Vegetalbe &b);/添加菜单string number();/订单编码void 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 O
11、rderMana_h#include Mana.h#include menu.h#include #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(Men
12、u *p, string tim, string address, string phone, 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 /
13、 InShop; ;double getTakeOut() return TakeOut; ;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
14、 money, double discount)this-name = name;this-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 = n
15、ame;this-money = money;this-discount = discount;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#in
16、cludeusing namespace std;/定义开始界面void Face:start()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;el
17、se client();/定义管理员登入界面void Face:Adm()string 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
18、 _ i;switch (i)case 1:AdmOrder(); break;case 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(); brea
19、k;case 2:AdmOrderII(); break;case 3:AdmOrderIII(); 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();
20、 break;case 2:AdmVegeII(); break;case 3:AdmVegeIII(); 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() end
21、l;cout 外卖和在店销售的占比: pe.getSpec() endl;Adm1();/定义客户界面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;cou
22、t ttt1.外卖 endl;cout ttt2.在店消费 i;if (i = 1)string 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
23、 (it = pe.ord.begin(); it != pe.ord.end(); 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);n
24、umber = pe.number();cout ttt在店消费 endl;cout 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 总价: mon
25、ey + (int)r * 50 元 endl;shard.txtinsertII(&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
26、 (it = pe.members.begin(); it != pe.members.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
27、!= pe.members.end(); it+)if (*it)-getname() = 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 修改成功
28、endl;AdmVege();/删除菜品void Face:AdmVegeIII()Menu 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;AdmV
29、ege();/查找菜品void Face:AdmVegeV()Menu pe;pe.txtinsert();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
30、();double discount;double money;string name;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
31、.begin(); it != pe.members.end(); it+)outDate 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
32、day;day = D: + day + .txt;cout numble;OrderMana 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() =
33、外卖)outDate ttt外卖 endl;outDate ttt编号 getNumble() 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;else