北华大学C++课程实习报告餐厅点菜系统学院:电气信息工程学院专业:电子信息工程班级:学号:姓名:指导教师:餐厅点菜系统一、需求分析1、该程序对于餐厅菜单进行管理,显示所有菜,顾客可以点餐厅的所有菜,也可以按类查找,自动生成菜单,自动计算消费金额,可以使用优惠劵2、显示菜的编号、菜名、类别和单价3、菜可以按类查找:炒菜、炒饭和面类4、点菜a)增加点菜b)删除一个点菜c)输出点菜信息并保存d)计算消费金额优惠卷1)金额优惠2)打折优惠二、设计实现该餐厅点菜系统共有两个类和一个构造函数,Cmenu类(菜的属性)和array类(菜的数组),与函数youhui(计算有优惠卷时的价格)在Cmenu类中,定义:name菜的编号,name菜名,price菜的单价,kind菜的种类,sort菜的数量,函数getnum录入菜的编号函数实现:函数getname实现:录入菜的名字,函数getprice实现:录入菜的单价,函数getkind实现:录入菜的类别,函数getsort实现:录入所点菜的数量,函数menudisplay实现:菜谱显示,函数selectdisplay实现:对所点的菜进行输出,函数returnnum实现:返回菜的编号,函数returnname实现:返回菜名,函数returnprice实现:返回菜的单价,函数returnkind实现:返回菜的类别,函数returnsort实现:返回菜的数量。在array类中,定义:sort菜的类别,num菜的数量函数实现:函数getnum实现:初始化num,函数getsort实现:初始化sort,函数returnnum实现:返回num,函数returnsort实现:返回sort主函数main的运行流程图:开始文件输入菜单信息f1(“menu.txt”)定义变量:Intsort,geshu,NUMStringNAME,KIND显示界面选择操作012菜单显示menudisplay()()按类查找returnkind()点菜array类getnum()getsort()returnnum()returnsort()selectdisplay()file(“select.txt”)returnprice()returnsort()returnkind()youhui()退出界面三、测试结果首页:菜的信息:按类查找:炒菜炒饭面类点菜菜的信息:增加点菜:删除点菜:计算消费金额:1、没有拥有优惠卷2、拥有优惠卷:a)20元的优惠卷b)0.85折优惠卷退出系统:四、结论及需改进的问题餐厅点菜系统是在图书管理系统的基础上,慢慢自己改进的,其中增加点菜,删除点菜,输出菜单,按类查询都是按照图书管理系统中增加图书,删除图书,显示图书,按类查询中改进的,其中最重要的是菜单的录用,自己想了很多方法,最后用文本输入函数做的,把菜单完全的输入进去,还有一点新颖的地方,源于优惠劵的使用,不仅可以使用金额的优惠,并且还会使用打折卷的优惠,虽然这里面的算法很简单,但是增加的程序的实用性。我感觉不足的是,应该有一个会进人后台的功能,进去可以增加菜单里的菜,删除菜,更改类别和金额,更方便餐厅的管理者,当然进人的时候,加入管理员密码。餐厅点菜系统C++代码#includeiostream#includeiomanip#includefstream#includestringusingnamespacestd;classCmenu//创建Cmenu类菜的属性{intnum;//菜的编号stringname;//菜名floatprice;//菜的单价stringkind;//菜的种类intsort;//菜的数量public:voidgetnum(inti);//录入菜的编号voidgetname(stringName);//录入菜的名字voidgetprice(floatPrice);//录入菜的单价voidgetkind(stringKind);//录入菜的类别voidgetsort(intSORT);//录入所点菜的数量voidmenudisplay();//菜谱显示voidselectdisplay();//对所点的菜进行输出floatreturnnum()//返回菜的编号{returnnum;}stringreturnname()//返回菜名{returnname;}floatreturnprice()//返回菜的单价{returnprice;}stringreturnkind()//返回菜的类别{returnkind;}intreturnsort()//返回菜的数量{returnsort;}};voidCmenu::getnum(inti)//录入菜的编号函数{num=i;}voidCmenu::getname(stringName)//录入菜的名字{name=Name;}voidCmenu::getprice(floatPrice)//录入菜的单价{price=Price;}voidCmenu::getkind(stringKind)//录入菜的类别{kind=Kind;}voidCmenu::getsort(intSORT)//录入所点菜的数量{sort=SORT;}voidCmenu::menudisplay()//菜单的信息显示{coutsetw(3)numsetw(22)namesetw(16)kindsetw(16)priceendl;}voidCmenu::selectdisplay()//对所点的菜进行输出{coutsetw(3)numsetw(24)namesetw(16)kindsetw(16)pricesetw(19)sortendl;}floatyouhui(floatsum,floatpoint)//函数计算有优惠卷时的价格{if(point1.0){sum=sum-point;}if(point=1.0){sum=sum*point;}returnsum;}classarray//创建一个array数组{public:voidgetnum(intNUM);//初始化num的函数voidgetsort(intSORT);//初始化sort的函数intreturnnum()//返回num的函数{returnnum;}intreturnsort()//返回sort的函数{returnsort;}private:intsort,num;};voidarray::getnum(intNUM)//初始化num的函数体{num=NUM;}voidarray::getsort(intSORT)//初始化sort的函数体{sort=SORT;}voidmain()//主函数{inti,id,m,q,z,sort,b;charj;intgeshu;intNUM;stringNAME,KIND;floatPRICE,POINT,sum=0;Cmenufood[40];//创建Cmenu类的对象数组ifstreamf1(menu.txt);//文件输入菜单信息for(j=0;j12;j++){f1NUM;f1KIND;f1NAME;f1PRICE;food[j].getnum(NUM);food[j].getkind(KIND);food[j].getname(NAME);food[j].getprice(PRICE);food[0].getnum(1);food[0].getkind(炒菜);food[0].getname(麻辣豆腐);food[0].getprice(8);food[1].getnum(2);food[1].getkind(炒菜);food[1].getname(烧茄子);food[1].getprice(10);food[2].getnum(3);food[2].getkind(炒菜);food[2].getname(香辣肉丝);food[2].getprice(15);food[3].getnum(4);food[3].getkind(炒菜);food[3].getname(锅包肉);food[3].getprice(15);food[4].getnum(5);food[4].getkind(炒饭);food[4].getname(蛋炒饭);food[4].getprice(5);food[5].getnum(6);food[5].getkind(炒饭);food[5].getname(扬州炒饭);food[5].getprice(6);food[6].getnum(7);food[6].getkind(炒饭);food[6].getname(火腿炒饭);food[6].getprice(6);food[7].getnum(8);food[7].getkind(炒饭);food[7].getname(鱿鱼炒饭);food[7].getprice(7);food[8].getnum(9);food[8].getkind(面类);food[8].getname(刀削面);food[8].getprice(5);food[9].getnum(10);food[9].getkind(面类);food[9].getname(羊肉面);food[9].getprice(8);food[10].getnum(11);food[10].getkind(面类);food[10].getname(热干面);food[10].getprice(5);food[11].getnum(12);food[11].getkind(面类);food[11].getname(手擀面);food[11].getprice(6);}f1.close();cout━*━*━*━*━*━*━*━*━*━*━*━欢迎光临本店━*━*━*━*━*━*━*━*━*━*━*endl;//菜单while(1){cout━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━endl;coutendl;cout┏━━━━━━━━━━━━━━━━━━━━━━━━┓endl;cout┃┃endl;cout┃┃endl;cout┃0---------------显示菜单里所有的菜的信息┃endl;cout┃1---------------在菜单里按类查找。┃endl;cout┃2---------------点菜。┃endl;cout┃┃endl;cout┗━━━━━━━━━━━━━━━━━━━━━━━━┛endl;coutendl;cout━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━*━endl;cinq;if(q==0)//显示菜单里所有的菜名{cout-------------------------------菜单---------------------------endl;cout菜的编号菜名类别单价/元endl;for(j=0;j12;j++)food[j].menudisplay();cout-------------------------------------------------------------endl;}if(q==1)//在菜单里按类查找{cout1--------------炒菜endl;cout2--------------炒饭endl;cout3--------------面类endl;cinz;if(z3){system(cls);cout请输入正确序号endl;}switch(z){case1://输出炒菜类for(j=