面向对象程序课程设计(2017/2018学年第二学期第17周)指导教师:XXX班级:XXX学号:XXXX姓名:XXX面向对象程序课程设计任务书【题目】自助点餐系统【目的】通过设计一个小型的自助点餐系统,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。【要求】1、每个学生必须独立完成;2、课程设计时间为1周;3、设计语言采用C++;4、学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,未按规定上交实验报告的学生,其成绩按不及格处理。【内容简介】有一个小型餐厅,现在这个餐厅打算使用自助点餐系统,方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。【考核标准】该系统为两种角色的用户提供服务,一种是餐厅管理员,一种是顾客。餐厅管理员根据账号、密码登录系统。顾客无需登录即可使用系统。1、顾客通过该餐厅在系统中提供的菜单为自己点餐,菜单以文件形式保存。系统能够根据顾客的要求正确打出订单,订单内容包括订单编号、菜品名称、每个菜品的价格、份数、折扣等;订单分两种,一种是在店消费,在店消费要求包括餐桌号,是否有包厢费,另一种是外卖,外卖要求包括送餐时间,送餐地点,客户手机号,外卖服务费。(要求用继承和多态实现),成绩≥60;2、系统退出后能保存当天的订单信息,要求每天一个文档,文档名按照日期命名。餐厅管理员可以根据订单编号查找删除修改某个订单,订单可以按照下单时间先后排序,成绩≥70;3、能够实现对餐厅菜式和价格的管理,包括对菜品和对应价格的增加、修改、删除、查找,折扣的设置,成绩≥80;4、系统可根据历史记录对销售情况进行统计,根据餐厅管理员的输入日期统计某天的销售情况并显示(包括一共接了多少单,销售额是多少,各个菜品的销售情况,外卖和在店销售的占比),成绩≥90;要求:用面向对象的程序设计方法设计该系统。本系统涉及的基本对象有订单对象(包括外卖订单和在店消费订单)、订单管理对象、菜单对象、菜品对象、菜品管理对象、系统界面。实现对这些对象的合理抽象和封装,正确定义类之间的关系。界面合理,代码文件组织清晰,命名符合规范,代码注释清楚,课程设计报告质量高。面向对象程序课程设计目录一、题目有一个小型餐厅,现在这个餐厅打算使用自助点餐系统,方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。二、需求分析有一个小型餐厅,该餐厅提供即时就餐和外卖服务。方便顾客自己点餐,并提供对餐厅销售情况的统计和管理功能。1、根据顾客的选择正确打出订单。2、统计出每一天的订单并将之保存在文件中。3、可以通过管理员功能对订单,菜品等进行操作。三、系统结构图四、类的设计五、程序代码与说明Face.h#ifndefFace_h#defineFace_h#includeOrderMana.hclassFace{private:OrderManashard;public:voidstart();//定义开始界面voidAdm();//定义管理员登入界面voidAdm1();//定义管理员界面voidAdmOrder();//查找修改删除订单voidAdmVege();//菜式和价格的管理voidAdmSell();//查看销售情况voidclient();//定义客户界面voidAdmVegeI();//添加菜品voidAdmVegeII();//修改菜品voidAdmVegeIII();//删除菜品voidAdmVegeV();//查找菜品voidAdmVegeVI();//设置折扣voidAdmOrderI();//查找订单voidAdmOrderII();//修改订单voidAdmOrderIII();//删除订单};#endifMana.h#ifndefMana_h#defineMana_h#includemenu.h#includestring#includelistusingnamespacestd;classMana:publicMenu{private:stringkind;//订单种类stringtim,address,phone;//送餐时间,送餐地点,客户手机号inttable,Allmoney;//座位号,总价boola;//是否有包厢费public:stringNumble;//订单编号Mana(stringnumble,stringkind,stringtim,stringaddress,stringphone);Mana(stringnumble,stringkind,inttable,boola);voidsetAllmoney(intmoney);stringgetKind(){returnkind;};stringgetTim(){returntim;};stringgetAddress(){returnaddress;};stringgetphone(){returnphone;};intgetTable(){returntable;};intgetAllmoney(){returnAllmoney;};boolgetA(){returna;};stringgetNumble(){returnNumble;};voidinsert(stringVege,doublemoney,intnum,doublediscount);};#endifmenu.h#ifndefMenu_h#defineMenu_h#includelist#includevector#includevegetalbe.husingnamespacestd;classMenu{private:Vegetalbe*p;public:listVegetalbe*members;listVegetalbe*ord;voidinsert(stringVege,intnum);//记录顾客挑选菜单virtualvoidinsert(stringVege,doublemoney,intnum,doublediscount);voidtxtinsert();//记录原有菜单voidprintmembers();//输出原有菜单voidprintord();//输出顾客菜单voidpushnew(Vegetalbe&b);//添加菜单stringnumber();//订单编码voiddleinsert(stringVege);//删除菜品~Menu();};#endiforder.h#ifndefOrder_h#defineOrder_h#includestringusingnamespacestd;classOrder{private:stringaccount;stringcode;public:Order(stringaccount,stringcode);booljudge();};#endifOrderMana.h#ifndefOrderMana_h#defineOrderMana_h#includeMana.h#includemenu.h#includelist#includevectorusingnamespacestd;classOrderMana{private:doubleBossMoney=0;//销售额intFre=0;//接了多少单doubleSpec;//外卖和在店销售的占比doubleTakeOut=0;//外卖次数doubleInShop=0;//在店次数Mana*p;public:listMana*members;listMana*ord;doublegetBossMoney();//输出相应日期的销售金额voidtxtinsertI(Menu*p,stringtim,stringaddress,stringphone,stringnumber);//打印外卖订单voidtxtinsertII(Menu*p,boola,intx,stringnumber);//打印在店订单voidtxtinsertMana(stringday);//获取本地订单voidfindMana(stringnumble);//查找订单voidpushit(Mana*re);//输出订单voiddleinsertM(stringnumble);//删除订单doublegetSpec(){returnTakeOut/InShop;};doublegetTakeOut(){returnTakeOut;};doublegetInShop(){returnInShop;};intgetFre(){returnFre;};};#endifvegetalbe.h#ifndefVegetalbe_h#defineVegetalbe_h#includestringusingnamespacestd;classVegetalbe{private:stringname;doublemoney;intnum;doublediscount;public:Vegetalbe(stringname,doublemoney,doublediscount){this-name=name;this-money=money;this-discount=discount;};Vegetalbe(stringname,doublemoney,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;};stringgetname(){returnname;}doublegetmoney(){returnmoney;}voidsetnum(intx){this-num=x;}intgetnum(){returnnum;}doublegetdiscount(){returndiscount;}};#endifinterface.cpp#includeFace.h#includeorder.h#includemenu.h#includeiostream#includefstream#includecstdlib#includectimeusingnamespacestd;//定义开始界面voidFace::start(){coutendl;cout\t\t\t欢迎使用自助点餐系统\t\t\tendl;cout________________________________________________________________endl;cout\t\t\t请输入操作模式\t\t\tendl;cout\t\t\t1.管理员\t\t\tendl;cout\t\t\t2.顾客\t\t\tendl;cout________________________________________________________________endl;intm;cinm;if(m==1){Adm();inti;cini;switch(i){case1:AdmOrder();break;case2:AdmVege();break;case3:AdmSell();break;case4:break;}}else{client();}}//定义管理员登入界面voidFace::Adm(){stringaccount,code;while(1){cout____________________________________