浙江理工大学C++课程设计_第1页
浙江理工大学C++课程设计_第2页
浙江理工大学C++课程设计_第3页
浙江理工大学C++课程设计_第4页
浙江理工大学C++课程设计_第5页
已阅读5页,还剩21页未读, 继续免费阅读

下载本文档

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

文档简介

面向对象程序课程设计(2014/2015学年第一学期第20周)指导教师:庄巧莉、杨东鹤班级:计算机科学与技术三班学号:2013329620077姓名:李生启

面向对象程序课程设计任务书【题目】自助点餐系统【目的】通过设计一个小型的自助点餐系统,训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念,使自己的程序设计与调试水平有一个明显的提高。【要求】1、每个学生必须独立完成;2、课程设计时间为1周;3、设计语言采用C++;4、学生有事离校必须请假。课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,未按规定上交实验报告的学生,其成绩按不及格处理。【内容简介】有一个小型餐厅,该餐厅提供即时就餐和外卖服务。现在这个餐厅打算使用自助点餐系统,让顾客自己点餐。现在请你为这个自助点餐系统编写一个程序,使得这个自助点餐系统能够正确工作。【考核标准】1、能够根据顾客的选择正确打出账单,成绩≥60;2、能够正确统计出每一天的及时就餐和外卖的销售情况,成绩≥70;3、能够实现对餐厅菜式和价格的有效管理,成绩≥80;4、能够考虑点餐的自动排序问题,使顾客可以实时查询到自己菜单的处理情况,界面设计友好,成绩≥90。请仔细考虑这个题目中出现的各个实体,考虑如何保存数据。【工作内容及工作计划】时间地点工作内容任务布置,需求分析系统功能划分指导教师上午10-30610-306庄巧莉、杨东鹤庄巧莉、杨东鹤1月21日下午上午下午上午10-30610-30610-306类的整体设计类的详细设计编写代码庄巧莉、杨东鹤庄巧莉、杨东鹤庄巧莉、杨东鹤1月22日1月23日下午10-306编写代码庄巧莉、杨东鹤1月上午10-306程序测试程序测试上机检查、答辩上机检查、答辩庄巧莉、杨东鹤庄巧莉、杨东鹤庄巧莉、杨东鹤庄巧莉、杨东鹤24日下午10-3061月上午10-30625日下午10-306面向对象程序课程设计目录一、题目自助点餐系统:有一个小型餐厅,该餐厅提供即时就餐和外卖服务。现在这个餐厅打算使用自助点餐系统,让顾客自己点餐。现在请你为这个自助点餐系统编写一个程序,使得这个自助点餐系统能够正确工作。二、需求分析1.顾客需求:a.顾客可以点菜并同时可以选择是否打印出菜单,而且顾客点菜时可以不需要事先说明要点几个菜,而是随意点,可以随时随地方便的选择菜的数量和种类,而不需要考虑太多,并且系统会自动在顾客点菜结束后结算账单金额和菜单列表以及此顾客的编号,以便顾客之后查询。b.顾客点餐后会根据顾客编号自动排序,顾客也可以随时随地的通过此系统查询自己的点餐的处理情况,只需输入顾客的编号即可出现顾客的菜单以及其点餐的处理情况。2.餐厅需求:可以及时的查询此餐厅每一天的及时就餐和外卖的销售情况和总的顾客数量,并可以方便的对厅菜式和价格的有效管理。

三、系统结构图菜单管理系统主界面查询操作订餐操作统计操作打印账单打印情况系统主界面四、类的设计classDish{public:Dish(intr_num,stringr_typ构造函数Voidinputd(intr_num,string输入函数voiddisplay();//输出函数(输出菜式的名字,价格等;};类介绍:此类为餐厅菜式类,此类包含菜式的编号,名字,价格,并有菜式的输入与输出函数,方便餐厅对菜单进行操作。classCustomer{public:voidp_bill(intb);//传金额函数Customer(){};//构造函数voidinput(intp_num,stringnam)传顾客名字和编号函数};类介绍:此类是顾客类,里面包含顾客的名字,点餐编号,以及应付金额,有两个函数,一个用来传金额,一个传名字和编号。

classRestaurant{public:voidstate(inteat,inttake);//统计函数};类介绍:此类是统计类,用于统计及时就餐与外卖的人数,还有一个用于传参的函数。五、程序代码与说明头文件1:Dish.h://此类为餐厅菜式类,此类包含菜式的编号,名字,价格,并有菜式的输入与输出函数,方便餐厅对菜单进行操作。classDish{public:intmoney;//菜的价格Dish(){}//构造函数Dish(intr_num,stringr_type,int构造函数voidinputd(intr_num,stringr_t输入函数voiddisplay();//输出函数protected:intdish_num;//菜的编号stringdish_type;//菜的名字

};Dish::Dish(intr_num,stringr_type,inm):dish_num(r_num),dish_type(r_tyvoidDish::inputd(intr_num,strindish_num=r_num;dish_type=r_type;money=m;}voidDish::display()/对所点的菜进行输出{cout<<setw(3)<<dish_num<<setw(24<money<<endl;}头文件2:Customer.h://此类是顾客类,里面包含顾客的名字,点餐编号,以及应付金额,有两个函数,一个用来传金额,一个传名字和编号。classCustomer{public:intper_num;//顾客点餐编号intbill;//顾客应付金额

stringname;//顾客名字voidp_bill(intb);//传金额函数Customer(){};//构造函数voidinput(intp_num,stringnam)传顾客名字和编号函数};voidCustomer::input(intp_num,stname=nam;per_num=p_num;}voidCustomer::p_bill(intb){bill=b;}头文件3:Statistics.h://此类是统计类,用于统计及时就餐与外卖的人数,还有一个用于传参的函数。classRestaurant{public:inteat_num;//及时就餐的人数inttake_num;//外卖的人数voidstate(inteat,inttake);//统计函数

};voidRestaurant::state(inteat,ineat_num=eat;take_num=take;}主函数:Restaurant.cpp://餐厅订餐系统的主函数#include<iostream>#include<string>#include<vector>#include<iomanip>usingnamespacestd;#include"Dish.h"#include"Customer.h"#include"Statistics.h"voidmain(){Restaurantr;//类的对象vector<Customer>c(50);//类的对象数组vector<int>a(10);vector<Dish*>d(10);//类的对象的指针数组

Dishd1(1,"鱼香肉丝",30),d2(2,"宫保鸡丁",30),",40),d4(4,"文蛤蒸蛋",60),d6(6白灼虾","60),d7(7,"麻辣香锅",50),d8(8,"油闷大虾d3(3,"醉湖蟹",20),d5(5,"清蒸多宝鱼",50),d9(9,"香辣蟹",50);d[1]=&d1;d[2]=&d2;d[3]=&d3;d[4]d[6]=&d6;d[7]=&d7;d[8]=&d8;d[9]指针数组指向对象intnum=1;string_name;intg=1;inteat=0;inttake=0;intj;for(intf=2;f=2;){第一层循环cout<<"----------欢迎您的光临!-------------"<<cout<<"-------------------------cout<<"----------点餐并出账单请按1-----------"<cout<<"----------查询订的餐的进度2-----------"<cout<<"----------输出统计量并退出3-----------"<cout<<"-------------------------intchoose_all;

cin>>choose_all;输入要进行的操作序号switch(choose_all){case1:点餐并输出账单for(inti=1;i=1;num++){cout<<"输入您的姓名:"<<endl;cin>>_name;c[g].input(num,_name);intb=0;intm=1;intx;for(intk=6;k=6;){/进行点餐cout<<"_________________________cout<<"|编号菜单种类价格|"<<endl;cout<<"|1鱼香肉丝30|"<<cout<<"|2宫保鸡丁30|"<<cout<<"|3醉湖蟹40|"<cout<<"|4文蛤蒸蛋20|"<<cout<<"|5清蒸多宝鱼60|"<<cout<<"|6白灼虾60|"<cout<<"|7麻辣香锅50|"<<cout<<"|8油闷大虾50|"<<

cout<<"|9香辣蟹50|"<cout<<"_________________________cout<<"请您输入您所选的一个菜式的序号:"<<endl;cin>>x;a[m]=x;//用次数组记录所有选的菜式序号j=m;m++;b=b+((*d[x]).money);计算总金额c[g].p_bill(b);cout<<"按“6”继续点餐,其他任意键结束点餐!"<<endl;intsh;cin>>sh;if(sh!=6)break;}cout<<"及时就餐请按1,外卖请按2"<<endl;intchoose;选择及时就餐或外卖cin>>choose;if(choose==1){eat++;}elseif(choose==2){

take++;}r.state(eat,take);cout<<"是否打印账单?"<<endl;cout<<"1(是),2(否)"<<endl;intprint;选择是否打印菜单cin>>print;if(print==1){打印菜单cout<<"输出账单:"<<endl;cout<<"---------------------------"<<endl;cout<<c[g].name<<"先生/女士,您的标号为:"<<"----"<<g<<"----"<<endl;cout<<"---------------------------"<<endl;for(intq=1;q<=m-1;q++){(*d[a[q]]).display();}cout<<"-------------------------

--"<<endl;cout<<"总消费额为:"<<c[g].bill<<endl;cout<<"---------------------------"<<endl;}else{cout<<"请您稍侯"<<endl;}g++;cout<<"是否继续循环?"<<endl;cout<<"'Y'(返回上层),其他任意键继续循环!"<<endl;charclose;cin>>close;if(close=='Y'){break;}}case2:点的餐的处理情况查询if(choose_all==2){cout<<"输入已收到订餐的人数:"<<endl;intgo_num;cin>>go_num;

cout<<"输出您的标号:"<<endl;intpoint;cin>>point;cout<<"输出此顾客信息:"<<endl;cout<<"---------------------------"<<endl;cout<<c[point].name<<"先生/女士,您的标号为:"<<"----"<<point<<"----"<<endl;cout<<"---------------------------"<<endl;for(intq=1;q<=j;q++){(*d[a[q]]).display();}cout<<"---------------------------"<<endl;cout<<"总消费额为:"<<c[point].bill<<endcout<<"---------------------------"<<endl;cout<<"您的前面还有"<<point-go_num-1<<"份订餐,请耐心

等待!"<<endl;cout<<""<<endl;case3://输出统计出来的及时就餐与外卖的人数if(choose_all==3){cout<<"外卖的人数是:"<<r.take_num<<endlcout<<"及时就餐人数:"<<r.eat_num<<endl;cout<<"今天顾客总数:"<<r.eat_num+r.take_}}}}六、运行结果与分析1.输入选择的操作:

如上有三项大的操作可供选择。2.进行点餐:如上为点餐的过程。3.选择是及时就餐还是外卖,以及打印菜单:第一位顾客点餐完毕并打印出菜单。4.第二个人继续点餐:5.第二个人选择外卖,并打印菜单:如上该顾客选择外卖,并打印出账单。6.返回上层,并选择查询操作:如上,查询不仅输出的该顾客的菜单,还输出了他前面的队伍还有几个人就轮到她。7.最后输出就餐与外卖的统计量,并推出统计:打出账单后回到首页。以上为本次课程设计的运行结果与分析,谢谢!七、心得与体会通过这次C++课程设计,我收获很多,通过我自己的思考与实践,通过无数次失败和不断的调试,终于克服了这次任务的一个又一个的难关,在这期间锻炼了我的动手能力,开拓了思维,更培兴趣与爱养了独立思考问题的能力,而且更增加了我对这门课程的好,因此我有以下几

温馨提示

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

评论

0/150

提交评论