餐饮指南c课程设计报告

上传人:仙*** 文档编号:37927662 上传时间:2021-11-05 格式:DOC 页数:28 大小:147KB
收藏 版权申诉 举报 下载
餐饮指南c课程设计报告_第1页
第1页 / 共28页
餐饮指南c课程设计报告_第2页
第2页 / 共28页
餐饮指南c课程设计报告_第3页
第3页 / 共28页
资源描述:

《餐饮指南c课程设计报告》由会员分享,可在线阅读,更多相关《餐饮指南c课程设计报告(28页珍藏版)》请在装配图网上搜索。

1、 课程设计报告课程名称: 面向对象程序设计 课程设计 课 题: 餐饮指南 专业班级: 计算机系信管09101班 学 号: 姓 名: 指导老师: 日 期: 2010年6 月26 日 目 录1.课题简介32.设计方案32.1程序功能32.2 程序原理及要求剖析 43.具体设计44.测试 264.1测试结果265.总结28设计体会28参考文献281.课题简介【题目描述】: 请编写一个餐饮指南程序。帮助游客查找小吃店和餐馆,以及哪个小吃店的卤煮最好,哪个餐馆的烤鸭最好等。2.设计方案2.1程序功能该程序应该具有下列功能:(1) 从文件读取小吃店和餐馆的信息;(2) 保存小吃店和餐馆的信息到文件;(3)

2、 增加一个小吃店;(4) 增加一个餐馆;(5) 删除一个小吃店;(6) 删除一个餐馆;(7) 修改食品的价格;(8) 修改食品的受欢迎程度。(9) 显示小吃店的信息;(10) 显示餐馆的信息;(11) 显示指定小吃店最便宜的食品(12) 显示指定餐馆最受欢迎的食品;(13) 其他扩充功能。2.2程序原理及要求剖析原理:(1) 按照面向对象的思想和开发过程完成这个应用程序。要求:【信息要求】(1) 食品的信息包括名称,价格,受欢迎程度;(2) 小吃店的信息包括经营者,位置,食品的信息(一个店可卖多种小吃);(3) 餐馆的信息包括经营者,餐馆名称,电话号码,开门时间,食品的信息(一个餐馆卖多种菜)

3、。 【输入要求】为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。 对输入的数据要进行合法性判断。【输出要求】应用程序运行后,要在屏幕上显示一个菜单; 要求用户输入数据时,要给出清晰、明确的提示信息。3.具体设计# include iostream.h# include fstream.h# include stdlib.h# include string.h# define N 30/名字长度# define M 50/食店的菜色或小吃个数# define MAX 40/餐馆和小吃店的个数int sn=0,rn=0;/小吃店、餐馆的个数vo

4、id putinfmtion();/文件存储餐店信息void getinfmtion();/文件获得餐店信息void edit(char sr,int &n,int num); /编辑信息 ,num为编号void add();/添加新信息void ressearch();/搜索餐馆void search();/搜索void showshop();/显示餐店void snasearch();/搜索小吃店void mainmenu();/主菜单void salewellfood();/查看推介食物/类定义/食物类class Mealprivate: /私有成员char nameN;/名字float

5、 price;/价格int popular; /受欢迎程度(0-10)public: Meal() /析构函数Meal(); /构造函数Meal(char na,float prc,int ppl);/构造函数void setname(char na);/设置名字char *getname();/返回名字void setprice(float prc);/设置价格float getprice();/返回价格int setpopular(int ppl);/设置受欢迎程度(0-10),设置成功返回1,否则返回0int getpopular();/返回受欢迎程度(0-10)void showdat

6、a();/显示内容void setdata();/手动设置所有内容void alter(); /修改所有内容void filecin(fstream & fcin);/文件输入void filecout(fstream & fcout);/文件输出;/餐店类class Eateryprivate:char chairmanN;/负责人名字protected:Meal foodM; /菜式int m; /菜式种数int id; /数组中自身的编号public:Eatery()/析构函数Eatery(); /构造函数Eatery(int n,Eatery some);/重载构造函数Eatery(c

7、har na,Meal fd,int n);/构造函数void setname(char na);/设置名字char *getname();/返回名字int getm();/返回菜色数量Meal getfood(int i);/返回菜色信息void popularrank();/按照食物的受欢迎程度进行排序void pricerank();/按照食物的价格进行排序;void seteaterydata(int &fm,Meal fdM,int refm);/手动设置所有内容void eatfilecin(fstream & fcin);/文件输入void eatfilecout(fstream

8、 & fcout);/文件输出/共有的静态数据成员static int n;/数组已用空间总数;/餐馆类:继承餐店类class Restaurant:public Eateryprivate:char resnameN,place2*N; /餐馆名称,餐馆位置char phonenumN; /餐馆电话int opentime; /餐馆的开门时间:24小时制public:char* getplace(); /获得餐馆位置char* getresname(); /获得餐馆名称int setopentime(int ot); /设置餐馆的开门时间int getopentime(); /获得餐馆的开门

9、时间char* getphonenum(); /获得餐馆的电话int getm(); /获得菜式种数void setdata(); /手动设置所有内容void alter(); /餐馆信息修改void showdata(); /显示餐馆的内容void filecin(fstream & fcin);/文件输入void filecout(fstream & fcout);/文件输出;/小吃店类:继承餐店类class Snackcart:public Eateryprivate:char place2*N; /小吃店位置;public:void setdata(); /手动设置所有内容char *

10、getplace(); /获得小吃店位置void alter(); /小吃店信息修改void showdata(); /显示小吃店的内容void filecin(fstream & fcin);/文件输入void filecout(fstream & fcout);/文件输出;/建立类组批量管理Restaurant rstrtMAX; /餐馆类组Meal foodMAX; /推介食物Snackcart snkctMAX; /小吃店类组int rm=0,sm=0; /推介食物个数int refmM,sefmM; /推介菜式所属的餐店编号Meal rfdM,sfdM; /推介菜式列表ostream

11、 &operator(ostream& out,Meal &a); /Meal 重载ostream &operator(ostream& out,Restaurant &a); /Restaurant 重载ostream &operator(ostream& out,Snackcart&a); /Snackcartnamepricepopular;void Meal:filecout(fstream & fcout)/文件输出fcoutname price popularn;void Meal:setname(char na)/设置名字strcpy(name,na);char* Meal:ge

12、tname() /返回名字return name;void Meal:setprice(float prc) /设置价格price=prc;float Meal:getprice() /返回价格 return price;int Meal:setpopular(int ppl)/设置受欢迎程度(0-10),设置成功返回1,否则返回0if(ppl=0)popular=ppl;return 1;cout受欢迎程度须在(010)范围内,因此输入错误 ;return 0;int Meal:getpopular()/返回受欢迎程度(0-10)return popular;void Meal:showda

13、ta()/显示内容coutn 食物名字: name;cout 价格 price;cout 受欢迎程度 popularendl;coutendl;void Meal:setdata()/手动设置所有内容int ppl;cout请输入食物的信息:endl;coutname;coutendl;coutprice;coutendl;coutppl;while(setpopular(ppl)=0)coutppl;coutendl;void Meal:alter() /修改所有内容int ch=0;char ch2=0;float prc;int ppl;cout-进入菜式信息修改-endl;cout您希

14、望修改:endl;cout1.价格n;cout2.受欢迎程度n;coutch;if(ch=1)coutprc;cout价格将改为prc是否确认?nY:是nN:否ch2;if(ch2=Y)price=prc;cout修改成功!endl;else cout修改失败!endl; if(ch=2) coutppl;cout受欢迎程度将改为ppl是否确认?nY:是nN:否ch2;if(ch2=Y)while(!setpopular(ppl)cout输入错误,受欢迎程度范围为(1-10): ;coutppl; cout受欢迎程度将改为ppl是否确认?nY:是nN:否ch2;if(ch2=Y)cout修改成

15、功!endl;else cout修改失败!endl;/初始化共有的静态数据成员;int Eatery:n=0; /数组已用空间总数/Eatery类函数的实现Eatery:Eatery() /构造函数m=0;id=n;n+;Eatery:Eatery(int n,Eatery some)/重载构造函数strcpy(chairman,some.chairman);int i;for(i=0;in;i+)foodi=some.foodi;m=some.m;Eatery:Eatery(char na,Meal fd,int n)/构造函数strcpy(chairman,na);int i;for(i=

16、0;ichairman;fcinm;for(int i=0;im;i+)foodi.filecin(fcin);void Eatery:eatfilecout(fstream &fcout)/文件输出fcoutchairman ;fcoutmn;for(int i=0;im;i+)foodi.filecout(fcout);void Eatery:popularrank() /按照食物的受欢迎程度进行排序int i,j,temp;Meal tp;for(i=0;im;i+)temp=i;for(j=i;jm;j+)if(foodtemp.getpopular()foodj.getpopular

17、()temp=j;tp=foodtemp;foodtemp=foodi;foodi=tp;void Eatery:pricerank() /按照食物的价格进行排序int i,j,temp;Meal tp;for(i=0;im;i+) temp=i; for(j=i;jfoodj.getprice() temp=j;tp=foodtemp;foodtemp=foodi;foodi=tp;void Eatery:seteaterydata(int &fm,Meal fdM,int efm )/手动设置所有内容;fm是对应推介菜式个数;fd推介菜式列表int j;cout请输入:nendl;cout

18、chairman;coutendl;coutm;coutendl;for(int i=0;im;i+)j=-1;cout请输入第 i+1种菜式信息:n;foodi.setdata();for(j=0;jfm;j+)if(strcmp(fdj.getname(),foodi.getname()=0&fdj.getpopular()foodi.getpopular()fdj=foodi;efmj=id;break;if(j=fm)fm+;fdj=foodi;efmj=id;/Restaurant类函数的实现char* Restaurant:getplace() /获得餐馆位置return plac

19、e;char* Restaurant:getresname() /获得餐馆名称return resname;int Restaurant:setopentime(int ot) /设置餐馆的开门时间;if(ot=0)opentime=ot;return 1;coutresnameplacephonenumopentime;void Restaurant:filecout(fstream & fcout)/文件输出eatfilecout(fcout);fcoutresname place phonenum opentimen;void Restaurant:setdata()/手动设置所有内容i

20、nt ot;seteaterydata(rm, rfd, refm);cout请输入:endl;coutresname;coutendl;coutplace;coutendl;coutphonenum;coutendl;coutot;while(setopentime(ot)=0)coutot;coutendl;cout存储成功endl;void Restaurant:alter() /餐馆信息修改int i;int ch;cout-餐馆信息修改-endl;for(i=0;im;i+)cout编号i+1 foodiendl;cout欲编辑菜式信息请输入对应菜式的编号n 输入-1可退出修改ch;

21、if(ch=0&chm)coutfoodch=m)cout输入错误退出修改n;else cout退出修改n;void Restaurant:showdata()/显示餐馆的内容int i;cout-n;cout餐馆信息n名称: resname;coutn地址: place;coutn开门时间: opentime;coutn电话号码 : phonenum;popularrank();if(m)coutn最受欢迎的食物是:n;cout食物编号: 1 food0;coutn其它食物:n;for(i=1;im;i+)cout食物编号: i+1 foodi;coutendl;coutplace;void

22、 Snackcart:filecout(fstream & fcout)/文件输出eatfilecout(fcout);fcoutplacen;void Snackcart:setdata() /手动设置所有内容seteaterydata(sm,sfd,sefm);coutplace;cout存储成功endl;char *Snackcart:getplace() /获得小吃店位置return place;void Snackcart:alter() /小吃店信息修改int i;int ch;for(i=0;im;i+)couti+1 foodiendl;cout欲编辑菜式信息请输入相应的菜式编

23、号n 输入-1可退出修改ch;if(ch=0)coutfoodchendl;foodch-1.alter();else cout退出修改;void Snackcart:showdata() /显示小吃店的内容int i;coutSnackcart;coutn位置: place;pricerank();if(m)coutn该店最便宜的小吃是:;cout小吃编号: 1n food0;cout其它小吃:n;for(i=1;im;i+)cout小吃编号: i+1 foodi;coutendl;/重载函数的实现:ostream &operator(ostream& out,Meal &a) /Meal

24、重载a.showdata();return out;ostream &operator(ostream& out,Restaurant &a) /Restaurant 重载a.showdata();return out;ostream &operator(ostream& out,Snackcart&a) /Snackcart重载a.showdata();return out;/其他函数的实现:void showed(char sr,int &n)/显示餐馆/小食店的信息int num;while(num!=0&num!=-1)cout-显示餐馆/小食店的信息-endl;cout输入餐店编号执

25、行对应操作endl;cout 0.返回endl;cout -1.返回主菜单endl;cout -2.退出endl;cout欲编辑信息请输入修改的编号进入修改nnum;if(num0)edit(sr,n,num-1);else if(num=-2)cout感谢您的使用endl;putinfmtion();exit(0);else mainmenu();void showshop() /显示餐店信息char ch=0;int i;while(ch!=3)coutnnnn-显示餐店-endl;cout请选择:endl;cout 1.小食店endl;cout 2.餐馆 endl;cout 3.返回主菜

26、单endl;cout 4.退出endl;cout仅当指定餐馆/小食店后方可编辑其信息 ch;switch (ch)case1:if(!sn)cout还未存入没有小食店的信息n;elsefor(i=0;isn;i+)cout小吃店编号:i+1 snkctiendl;showed (s,sn);break;case2:if(!rn)cout还未存入没有餐馆的信息.n;elsefor(i=0;irn;i+)cout餐馆编号:i+1 rstrtiendl;showed (r,rn);break;case3:mainmenu();break;case4:cout感谢您的使用endl;putinfmtio

27、n();exit(0);void search() /查找餐店信息char ch=0;while(ch!=4)cout-查找信息-endl;cout请选择查找:endl;cout 1.小食店endl;cout 2.餐馆endl;cout 3.返回endl;cout 4.退出endl;cout仅当指定餐馆/小食店后方可编辑其信息ch;switch(ch)case1:snasearch();break;case2:ressearch();break;case3:mainmenu();break;case4:cout感谢您的使用endl;putinfmtion();exit(0);void snas

28、earch()/搜索小吃店if(!sn)cout还未存入小食店的信息.n;elsechar ch=0;char place2*N;int isna=-1;int i;while(ch!=4) cout-查找小吃店-endl;isna=-1;/初始化coutendl;cout请选择以_为线索查找:endl;cout 1.位置endl;cout 2.返回endl;cout 3.退出endl;cout仅当指定餐馆/小食店后方可编辑其信息 ch;switch(ch)case1:cout请输入位置place;for(i=0;isn;i+)if(strcmp(place,snkcti.getplace()

29、=0)if(isn)isna=i;coutsnkctisnaendl;edit(s,sn,isna);else cout没有相关信息n; break; case2: mainmenu();break;case3:cout感谢您的使用endl;putinfmtion(); exit(0);void ressearch() /搜索餐馆char ch=0;char shopnameN,place2*N;int ires=-1;int i;if(!rn)cout还未存入小食店的信息n;elsewhile(ch!=4) cout-搜索餐馆-endl;ires=-1;/初始化coutendl;cout请选

30、择以_为线索查找:endl;cout 1.餐馆名字endl;cout 2.位置endl;cout 3.返回endl;cout 4.退出endl;cout仅当指定餐馆/小食店后方可编辑其信息 ch;switch(ch)case1:cout输入餐馆名称:shopname;for(i=0;irn;i+)if(strcmp(shopname,rstrti.getresname()=0)if(irn)ires=i;coutrstrtiresendl; edit(r,rn,ires); /可对选中项编辑,调用编辑函数else cout没有相关信息n;break;case2:cout输入位置place;fo

31、r(i=0;irn;i+)if(strcmp(place,rstrti.getplace()=0)if(irn)ires=i;coutrstrtiresendl;edit(r,rn,ires);else cout没有相关信息n;break;case3:mainmenu();break; case4:cout感谢您的使用endl;putinfmtion(); exit(0);void mainmenu()/主菜单system(cls); /清屏char ch=0;while(ch!=4)cout-主菜单-endl;cout请选择:endl;cout0.推介食物信息endl;cout1.显示餐馆或

32、小食店信息endl;cout2.查询餐馆或小食店endl;cout3.添加新的餐馆或小食店endl;cout4.退出.endl;/cout仅当指定餐馆/小食店后方可编辑其信息 ch;switch(ch)case0:salewellfood();break;case1:showshop();break;case2:search();break;case3:add();case4:cout感谢您的使用endl;putinfmtion();exit(0);void salewellfood()/查看推介食物char ch=0;int i;int num;while(ch!=3)coutnnnn-查看

33、推介食物-endl;cout请选择:endl;cout1.小吃endl;cout2.菜式 endl;cout3.返回主菜单endl;cout4.退出endl;cout仅当指定餐馆/小食店后方可编辑其信息 ch;switch(ch)case1:if(!sm)cout没有小食店的信息n;elsefor(i=0;ism;i+)cout对应小吃店编号为 sefmi-MAX+1 sfdiendl;cout输入小吃店编号可以查看小吃店详细信息:(或者输入-1退出查看详细信息)num;edit(s,sn,num-1);break;case2:if(!rm)cout没有餐馆的信息.n;elsefor(i=0;

34、irm;i+)couti+1 rfdi对应餐馆编号为 refmi+1endl;cout输入小吃店编号可以查看餐馆详细信息:(或者输入-1退出查看详细信息)num;edit(r,rn,num-1);break;case3:mainmenu();break;case4:cout感谢您的使用endl;putinfmtion();exit(0);void getinfmtion() /文件获得餐店信息fstream gd(cart.txt,ios:in);if(!gd)coutFile could not be opened.snrnsmrm;/文件输入信息:小吃店、餐馆、小吃店推介食物、餐馆推介食物

35、的总数,int i;for(i=0;isn;i+) /批量输入小吃店信息snkcti.filecin(gd); for(i=0;irn;i+) /批量输入餐馆信息rstrti.filecin(gd); for(i=0;ism;i+) /批量输入小吃店推介食物的信息 sfdi.filecin(gd); for(i=0;irm;i+) /批量输入餐馆推介食物的信息rfdi.filecin(gd); for(i=0;isefmi; for(i=0;irefmi;gd.close();void putinfmtion() /文件存储餐店信息fstream gd (cart.txt,ios:out);i

36、f(!gd)coutFile could not be opened.endl;abort();if(!gd.eof()gdsn rn sm rmendl;/文件输入信息:小吃店、餐馆、小吃店推介食物、餐馆推介食物的总数, int i;for(i=0;isn;i+) /批量输入小吃店信息snkcti.filecout(gd); for(i=0;irn;i+) /批量输入餐馆信息rstrti.filecout(gd); for(i=0;ism;i+) /批量输入小吃店推介食物的信息 sfdi.filecout(gd); for(i=0;irm;i+) /批量输入餐馆推介食物的信息rfdi.fil

37、ecout(gd); for(i=0;ism;i+) /批量输入小吃店推介食物的信息gdsefmi ; for(i=0;irm;i+)/批量输入餐馆推介食物的信息gdrefmi ;coutFile Savedendl;gd.close();void add() /添加新信息char ch;while(ch!=3)system(cls); /清屏cout-添加新信息-endl;cout请选择:endl;cout 1.添加新的小食店信息endl;cout 2.添加新的餐馆信息endl;cout 3.返回到主菜单endl;cout 4.退出ch;switch(ch)case1:snkctsn+.setdata();break;case2:rstrtrn+.setdata();break;case3:mainmenu();break;case4:cout感谢您的使用=0&numn)if(sr=r)coutrstrtnumendl;elsecoutsnkctnumendl;cout-编辑信息-endl;cout请选择endl;cout 1.删除endl;cout 2.更新endl;cout 3.返回endl;cout 4.返回主菜单endl;cout 5.退出ch;switch(ch)case1:if(sr=s)

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!