C课程设计自助点餐系统_第1页
C课程设计自助点餐系统_第2页
C课程设计自助点餐系统_第3页
C课程设计自助点餐系统_第4页
C课程设计自助点餐系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

C课程设计自助点餐系统C课程设计自助点餐系统41/41C课程设计自助点餐系统面向对象程序课程设计2014/2015学年第一学期第20周)指导教师:庄巧莉、杨东鹤班级:计算机科学与技术13(1)学号:姓名:面向对象程序课程设计目录一、题目二、需求剖析三、系统构造图四、类的设计五、程序代码与说明六、运行结果与剖析七、心得与领悟一:题目自助点餐系统二:需求剖析有一个小型餐厅,该餐厅供应即时就餐和外卖服务。现在这个餐厅打算使用自助点餐系统,让顾客自己点餐,实现以下功能。1、依照顾客的选择正确打出账单2、正确统计出每日的实时就餐和外卖的销售情况3、实现对餐厅菜式和价格的有效管理4、考虑点餐的自动排序问题,使顾客可以实时盘问到自己菜单办理情况三:系统构造图四:类的设计Client类:客户类,包含客户属性姓名,电话号码,开支等信息,登记客户,记录客户订单信息ClientManager类:客户管理类,用于管理客户,记录客户数量,积蓄客户菜单信息,盘问客户订单信息,统计订单FeeManager类:用于记录就餐、外卖的销售开支,统计收入Food类:餐厅食品的类,包含食品名称和价格FoodManager类:管理菜单,用于增加食品,更正食品,删除食品,记录不同样样食品的信息,表现菜单MenuView类:用于打印各种操作界面五:程序代码与说明Client.h#ifndefCLIENT#defineCLIENT#include"FoodManager.h"#include<iostream>usingnamespacestd;classClient{private:intnumber;

//客户编号inttype;

//客户的种类,

1表示就餐,

2表示外卖doublefee;

//客户账单开支char*name;

//客户名称char*phone;

//客户手机号码public:Client( ){}

//构造函数char*getName( );//返回客户姓名intnum[100];//num[i]积蓄食品数量,i表示食品编号FoodManagerclient_fm;//管理客户所点的食品Client(char*n,char*p);//构造函数intgetNumber( );//返回客户编号voidsetNumber(intn);//设置客户编号intgetType( );//返回客户种类voidsetType(intn);//设置客户种类voidaddFee(doublex);//增加开支doublegetFee( );//返回开支voidshowClientMessage( );//显现客户信息voidchangNum( );//更正客户所点的食品的数量voiddeleFood( );//删除客户所选择的食品};#endifClient.cpp#include"Client.h"#include<iomanip>Client::Client(char*s,char*p){name=s;phone=p;fee=0;for(inti=0;i<100;i++)num[i]=0;cout<<"客户注册成功"<<endl;}intClient::getNumber( ){returnnumber;}voidClient::setNumber(intn){number=n;}intClient::getType( ){returntype;}voidClient::setType(intn){type=n;}voidClient::addFee(doublex){fee+=x;}doubleClient::getFee( ){returnfee;}voidClient::showClientMessage( ){char*ss;if(type==1)ss="

就餐";elseif(type==2)ss="

外卖";cout<<"姓名:"<<name<<"\t\t"<<ss<<endl;cout<<"

手机号码

:"<<phone<<endl;cout<<"

订单总价:

"<<fee<<endl;cout<<"

订单详情:

"<<endl;cout<<setw(10)<<setiosflags(ios::left)<<"

食品序

列"<<setw(10)<<setiosflags(ios::left)<<"

菜名

"<<"\t

数量

\t

价格"<<endl;for(inti=0;i<client_fm.getTotal( );i++){cout<<setw(10)<<setiosflags(ios::left)<<setw(10)<<i+1<<setiosflags(ios::left)<<client_fm.food[i].getName( )<<"\t"<<num[i]<<"\t"<<num[i]*client_fm.food[i].getPrice( )<<endl;}cout<<"总价:\t\t"<<fee<<endl;}char*Client::getName( ){returnname;}voidClient::changNum( ){intn;intnumss;cout<<"请输入食品序号:";cin>>n;cout<<"

您选择了食品:

"<<client_fm.getNameByList(n-1)<<endl;cout<<"请输入数量:";cin>>numss;fee+=(numss

-num[n-1])*client_fm.getPriceByName(client_fm.getNameByList(n-1));num[n-1]=numss;}voidClient::deleFood( ){intn;cout<<"请输入食品序号:";cin>>n;cout<<"您选择了食品:"<<client_fm.getNameByList(n-1)<<endl;fee-=(num[n-1])*client_fm.getPriceByName(client_fm.getNameByList(n-1));for(inti=n-1;i<client_fm.getTotal( );i++){client_fm.food[i]=client_fm.food[i+1];num[i]=num[i+1];}client_fm.setTotal(client_fm.getTotal( )-1);}ClientManager.h#ifndefCLIENTMANAGER#defineCLIENTMANAGER#include"Client.h"#include<iostream>usingnamespacestd;#defineMAX_CLIENT_NUM60

//

最大客户数量classClientManager{public:ClientManager( );

//构造函数intclientNum;

//记录客户数量Clientclient[MAX_CLIENT_NUM];

//记录积蓄客户voidaddClient(Clientc);

//增加新客户intgetClientNum( );

//返回客户数量voidshowQuery(char*s);

//盘问客户voidshowAll( );

//显示所有客户};#endifClientManager.cpp#include"ClientManager.h"ClientManager::ClientManager( ){clientNum=0;}voidClientManager::addClient(Clientc){client[clientNum++]=c;cout<<"客户注册成功"<<endl;}intClientManager::getClientNum( ){returnclientNum;}voidClientManager::showQuery(char*s){intcount=0;intth;cout<<""<<endl;for(inti=0;i<clientNum;i++)if(client[i].getType( )==1){cout<<"第"<<++count<<"单:"<<client[i].getName( )<<"\t总价是:"<<client[i].getFee( )<<"元"<<"\t就餐"<<endl<<endl;if(strcmp(client[i].getName( ),s)==0)th=count;}for(inti=0;i<clientNum;i++)if(client[i].getType( )==2){cout<<"第"<<++count<<"单:"<<client[i].getName( )<<"\t总价是:"<<client[i].getFee( )<<"元"<<"\t外卖"<<endl<<endl;if(strcmp(client[i].getName( ),s)==0)th=count;}cout<<"您当前排在第"<<th<<"单"<<endl;cout<<""<<endl;}voidClientManager::showAll( ){for(inti=0;i<clientNum;i++){if(client[i].getType( )==1){cout<<"订单号:"<<i+1<<endl;client[i].showClientMessage( );cout<<endl;}}for(inti=0;i<clientNum;i++){if(client[i].getType( )==2){cout<<"订单号:"<<i+1<<endl;client[i].showClientMessage( );cout<<endl;}}}Food.h#ifndefFOOD#defineFOODclassFood{private:char*name;

//食品名称doubleprice;public:

//食品价格Food( ){};

//构造函数Food(char*s,doublep);//

构造函数voidsetName(char*s);

//

更正食品名称char*getName( );

//返回食品名称doublegetPrice( );

//返回食品价格voidsetPrice(doublep);//

设置食品价格voidshowMessage( );

//显示食品的名称和价格};#endifFood.cpp#include"Food.h"#include<iostream>usingnamespacestd;Food::Food(char*s,doublep){name=s;price=p;}voidFood::setName(char*s){name=s;}voidFood::setPrice(doublep){price=p;}voidFood::showMessage( ){cout<<name<<"\t"<<price<<"?"<<endl;}doubleFood::getPrice( ){returnprice;}char*Food::getName( ){returnname;}FoodManager.h#ifndefFOODMANAGER#defineFOODMANAGER#include"Food.h"#defineMAX_FOOD_NUM99//最多容纳的食品种类数classFoodManager{inttotal;public:

//食品种类数FoodManager( );

//构造函数intgetTotal( );

//返回食品种类数Foodfood[MAX_FOOD_NUM];

//记录食品voidaddFood(Foodf);

//增加食品voidaddFood(char*s,doublep);

//增加食品voiddeleteFood( );

//删除食品voidchangePrice( );

//更正食品价格voidshowFood( );char*getNameByList(intlist);

//显示食品信息//经过食品编号返回食品名称doublegetPriceByName(char*s);//经过食品名称返回食品价格intgetListByName(char*s);//经过食品名称返回食品编号voidsetTotal(intx);//更正食品种类数};#endifFoodManager.cpp#include"FoodManager.h"#include<iostream>usingnamespacestd;#include<iomanip>FoodManager::FoodManager( ){total=0;}voidFoodManager::addFood(Foodf){food[total++]=f;cout<<"成功增加了食品,当前共有"<<total<<endl;}voidFoodManager::showFood( ){cout<<"

食品中共有

"<<total<<"

种"<<endl;cout<<"食品编号"<<"名称\t\t"<<"for(inti=0;i<total;i++)

单价"<<endl;cout<<setw(10)<<setiosflags(ios::left)<<i<<setw(10)<<setiosflags(ios::left)<<food[i].getName( )<<"\t"<<food[i].getPrice( )<<endl;}voidFoodManager::changePrice( ){char*s;intcode;s=newchar[20];doublep;cout<<"请输入食品编号:";cin>>code;s=food[code].getName( );cout<<"您选择了食品:"<<s<<endl;cout<<"请输入价格:";cin>>p;for(inti=0;i<total;i++)if(strcmp(food[i].getName( ),s)==0){food[i].setPrice(p);cout<<"更正成功"<<endl;return;}cout<<"没有这种食品,更正失败"<<endl;}voidFoodManager::deleteFood( ){char*s;s=newchar[20];cout<<"请输入菜名:";cin>>s;for(inti=0;i<total;i++)if(strcmp(food[i].getName( ),s)==0){cout<<"成功删除"<<s<<endl;total--;for(intt=i;t<total;t++)food[t]=food[t+1];return;}cout<<"没有这种食品"<<endl;}voidFoodManager::addFood(char*s,doublep){food[total++]=Food(s,p);}doubleFoodManager::getPriceByName(char*s){for(inti=0;i<total;i++)if(strcmp(food[i].getName( ),s)==0)returnfood[i].getPrice( );returnfalse;}intFoodManager::getListByName(char*s){for(inti=0;i<total;i++)if(strcmp(food[i].getName( ),s)==0)returni;returnfalse;}intFoodManager::getTotal( ){returntotal;}char*FoodManager::getNameByList(intlist){returnfood[list].getName( );}voidFoodManager::setTotal(intx){total=x;}FeeManager.h#ifndefFEEMANAGER#defineFEEMANAGERclassFeeManager{private:doublejiuCanFee;

//

就餐总收入doublewaiMaiFee;

//外卖总收入public:FeeManager( );

//构造函数doublegetWaiMaiFee( );

//返回外卖总收入doublegetJiuCanFee( );

//返回就餐总收入voidaddWaiMaiFee(doublex);

//增加外卖总收入voidaddJiuCanFee(doublex);

//增加就餐总收入};#endifFeeManager.cpp#include"FeeManager.h"FeeManager::FeeManager( ){jiuCanFee=0;waiMaiFee=0;}doubleFeeManager::getWaiMaiFee( ){returnwaiMaiFee;}doubleFeeManager::getJiuCanFee( ){returnjiuCanFee;}voidFeeManager::addWaiMaiFee(doublex){waiMaiFee+=x;}voidFeeManager::addJiuCanFee(doublex){jiuCanFee+=x;}MenuView.h#ifndefMENUVIEW#defineMENUVIEWclassMenuView{private:charwhiteSmile;

//白色笑脸charblackSmile;

//黑色笑脸charheart;public:

//心形图形MenuView( );

//构造函数voidshowJiuCan( );

//显示就餐用户点菜界面voidshowWaiMai( );

//显示外卖用户点菜界面intshowMain( );

//显示用户选择就餐还是外卖界面intshowViewChoice( );

//显示进入本系统的功能选择界面intshowRegister( );

//显示客户注册界面intshowClientChoice( );

//显示客户点餐界面intshowQuery( );

//显示盘问客户订单界面intshowMend( );

//显示更正食品界面intshowMenuChoice( );

//显示选择菜单界面intshowMendDingDan( );

//显示客户更正订单界面};#endifMenuView.cpp#include"MenuView.h"#include<iostream>usingnamespacestd;MenuView::MenuView( ){whiteSmile=1;blackSmile=2;heart=3;}intMenuView::showMain( ){for(inti=1;i<=80;i++)cout<<heart;for(inti=1;i<=80;i++){if(i==1||i==80)cout<<heart;elsecout<<'';}cout<<heart<<"\t\t\t\t欢迎光临本餐厅";for(intj=1;j<=33;j++)cout<<'';cout<<heart;for(inti=1;i<=80;i++){if(i==1||i==80)cout<<heart;else

cout<<'';}for(inti=1;i<=80;i++)cout<<heart;//输出餐厅的外形cout<<endl<<endl;cout<<"\t我是服务员小坠

"<<whiteSmile<<",

竭诚为您服务哦"<<blackSmile<<endl<<endl<<endl;for(intk=1;k<=10;k++)cout<<'';for(inti=1;i<=20;i++)cout<<heart;cout<<endl;for(intk=1;k<=10;k++)cout<<'';cout<<heart<<"请选择您需要的服务"<<heart<<endl;for(intk=1;k<=10;k++)cout<<'';for(inti=1;i<=60;i++)cout<<heart;cout<<endl;for(intk=1;k<=10;k++)cout<<'';cout<<heart<<"1:就餐";for(inti=1;i<=52;i++)cout<<'';cout<<heart<<endl;for(intk=1;k<=10;k++)cout<<'';cout<<heart<<"2:外卖";for(inti=1;i<=52;i++)cout<<'';cout<<heart<<endl;for(intk=1;k<=10;k++)cout<<'';for(inti=1;i<=60;i++)cout<<heart;cout<<endl<<endl;for(inti=1;i<=7;i++)cout<<endl;cout<<"\t\t\t您的选择是:";intchoice;cin>>choice;returnchoice;}voidMenuView::showJiuCan( ){cout<<"欢迎就餐,本餐厅有以下食品供您品尝"<<whiteSmile<<endl;}intMenuView::showViewChoice( ){for(inti=1;i<=80;i++)cout<<heart;for(inti=1;i<=80;i++){if(i==1||i==80)cout<<heart;else

cout<<'';}cout<<heart<<"\t\t\t\t陈旺均特色餐厅";for(intj=1;j<=33;j++)cout<<'';cout<<heart;for(inti=1;i<=80;i++){if(i==1||i==80)cout<<heart;else

cout<<'';}for(inti=1;i<=80;i++)cout<<heart;cout<<endl<<endl;cout<<""<<endl;cout<<"|1:顾客服务|"<<endl;cout<<"|2:食品管理|"<<endl;cout<<"|3:今天反响|"<<endl;cout<<"|4:退出系统|"<<endl;cout<<""<<endl;cout<<"您的选择是:";intnext;cin>>next;cout<<endl;returnnext;}intMenuView::showRegister( ){cout<<""<<endl;cout<<"|1:

新顾客点餐

|"<<endl;cout<<"|2:盘问订单|"<<endl;cout<<""<<endl;intnext;cin>>next;returnnext;}intMenuView::showClientChoice( ){cout<<""<<endl;cout<<"|1:加菜|"<<endl;cout<<"|2:更正订单|"<<endl;cout<<"|3:提交订单|"<<endl;cout<<""<<endl;intnext;cin>>next;returnnext;}intMenuView::showQuery( ){cout<<""<<endl;cout<<"|1:盘问订单|"<<endl;cout<<"|2:退出盘问|"<<endl;cout<<""<<endl;intnext;cin>>next;returnnext;}intMenuView::showMend( ){cout<<""<<endl;cout<<"|1:增加食品|"<<endl;cout<<"|2:更正价格|"<<endl;cout<<"|3:删除食品|"<<endl;cout<<"|4:退出食品管理|"<<endl;cout<<""<<endl;intnext;cin>>next;returnnext;}intMenuView::showMenuChoice( ){cout<<"增加菜单:"<<endl;cout<<""<<endl;cout<<"|1:

原菜单

|"<<endl;cout<<"|2:

更新后的菜单

|"<<endl;cout<<""<<endl;intnext;cin>>next;returnnext;}intMenuView::showMendDingDan( ){cout<<""<<endl;cout<<"|1:更正数量|"<<endl;cout<<"|2:删除食品|"<<endl;cout<<"|3:退出更正|"<<endl;cout<<""<<endl;intnext;cin>>next;returnnext;}Main.cpp#include<iostream>#include"Food.h"#include"MenuView.h"#include"FoodManager.h"#include"ClientManager.h"#include"FeeManager.h"#include<fstream>#include<iomanip>usingnamespacestd;intmain( ){FeeManagerfeem;//管理就餐和外卖的开支MenuViewmv;//管理界面ClientManagercm;//管理客户的类的对象FoodManagerfm;//管理食品的类的对象fstreamioFile;//文件输入输出intclientChoice;//1服务顾客2食品管理3今天反响4退出系统intclientService;//1新顾客点餐2盘问intmainChoice;//1就餐2外卖intcurClient;//当前操作的顾客编号intqueryChoice;//1盘问订单2退出盘问intfoodChoice;//1增加食品2更正食品价格3删除某种食品4退出食品管理intviewChoice;//1顾客服务2食品管理3今天反响4退出系统intmenuChoice;//1原菜单2更新后菜单intmendDingDanChoice;//1更正数量2删除食品3退出更正ioFile.open("C:\\Users\\Administrator\\Desktop\\food.txt",ios::in);while(!ioFile.eof( )){char*s;doublep;s=newchar[20];ioFile>>s>>p;fm.addFood(s,p);}ioFile.close( );以上是从文件读入食品的种类和价格信息while(true){viewChoice=mv.showViewChoice( );if(viewChoice==1)//顾客服务{clientService=mv.showRegister( );if(clientService==1)//{

用户注册char*name,*phone;name=newchar[30];phone=newchar[20];cout<<"请圆满客户资料"<<endl;cout<<"您的订单号是"<<cm.getClientNum( )+1<<endl;curClient=cm.getClientNum( );cout<<"请输入姓名:";cin>>name;cout<<"请输下手机号码:";cin>>phone;Clientcc(name,phone);cc.setNumber(cm.getClientNum( ));cm.addClient(cc);mainChoice=mv.showMain( );if(mainChoice==1)

//

就餐{cm.client[curClient].setType(1);mv.showJiuCan( );while(true){fm.showFood( );intchoices;choices=mv.showClientChoice( );if(choices==1)//选择食品种类和数量,下单{char*n;intcode;n=newchar[20];intnums;doubleprices;cout<<"请输入食品编号:";cin>>code;n=fm.food[code].getName( );cout<<"您选择了食品:"<<n<<endl;prices=fm.getPriceByName(n);cout<<"请输入数量:";cin>>nums;cm.client[curClient].client_fm.addFood(Food(n,prices));cm.client[curClient].addFee(nums*prices);cm.client[curClient].num[cm.client[curClient].client_fm.getTotal( )-1]=nums;cout<<"当前的总花销是"<<cm.client[curClient].getFee( )<<endl<<endl;}elseif(choices==2)//更正订单{cout<<"您当前的订单是:"<<endl;while(true){cm.client[curClient].showClientMessage( );mendDingDanChoice=mv.showMendDingDan( );if(mendDingDanChoice==1){cm.client[curClient].changNum( );}elseif(mendDingDanChoice==2){cm.client[curClient].deleFood( );}elseif(mendDingDanChoice==3)break;}}elseif(choices==3)//提交订单break;}feem.addJiuCanFee(cm.client[curClient].getFee( ));//增加就餐总开支cout<<"您的订单是:"<<endl;cm.client[curClient].showClientMessage( );//输出当前订单}elseif(mainChoice==2)//外卖{cm.client[curClient].setType(2);mv.showJiuCan( );while(true){fm.showFood( );intchoices;choices=mv.showClientChoice( );if(choices==1)//选择食品种类和数量,下单{char*n;intcode;n=newchar[20];intnums;doubleprices;cout<<"请输入食品编号:";cin>>code;n=fm.food[code].getName( );cout<<"您选择了食品:"<<n<<endl;prices=fm.getPriceByName(n);cout<<"请输入数量:";cin>>nums;cm.client[curClient].client_fm.addFood(Food(n,prices));cm.client[curClient].addFee(nums*prices);cm.client[curClient].num[cm.client[curClient].client_fm.getTotal( )-1]=nums;cout<<"当前

的总

用是"<<cm.client[curClient].getFee( )<<endl<<endl;}elseif(choices==2)//{

更正订单cout<<"您当前的订单是:"<<endl;while(true){cm.client[curClient].showClientMessage( );mendDingDanChoice=mv.showMendDingDan( );if(mendDingDanChoice==1){cm.client[curClient].changNum( );}elseif(mendDingDanChoice==2){cm.client[curClient].deleFood( );}elseif(mendDingDanChoice==3)break;}}elseif(choices==3)//提交订单break;}feem.addWaiMaiFee(cm.client[curClient].getFee( ));//增加就餐总开支cout<<"您的订单是:"<<endl;cm.client[curClient].showClientMessage( );//输出当前订单}}//用户注册elseif(clientService==2){while(true){queryChoice=mv.showQuery( );if(queryChoice==1)//盘问客户订单信息{cout<<"请输入您的姓名:"<<endl;char*s;s=newchar[20];cin>>s;cm.showQuery(s);}elseif(queryChoice==2)break;//退出盘问}}}elseif(viewChoice==2)//食品管理{while(true){fm.showFood( );foodChoice=mv.showMend( );if(foodChoice==1)

//

增加食品{char*n;doublep;n=newchar[20];cout<<"请输入食品名

温馨提示

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

最新文档

评论

0/150

提交评论