C++语言程序设计课程设计说明书
一、 课程设计题目及功能简介
1、课程设计题目:餐厅点菜系统
2、程序功能简介:
1、能够实现顾客点菜、结帐、打印功能,能够实现顾客预定和VIP客户管理。
2、餐桌至少有15张。
3、客人规模在30人以上。
4、能够实现客人的排队等候等功能。
二、 餐厅点菜系统背景及实用性
1、餐厅点菜系统的数据结构表
成员名(字段名) 数据类型 长度 字段含义
Food_Name string 食物名称 Food_Price float 食物价格
food_type string 餐点类型 all_price int 总价
B[6]、C[10]、D[8] Food 对象数组
Desk_number int 桌号
Cust_type string 顾客类型
food_num int 食物数量
All_Desk_numnumber int 餐厅总桌量
Desk_customer int 每桌人数
desk_num int 客人所定桌数
All_desk int 总餐桌数
Customer_num int 每桌人数
cust_number int 客人规模
2、界面
(1)界面一
先进入:餐厅管理系统初始化
主管可以设置本餐厅所能容纳的餐桌数(不得小于15张)及每张餐桌所容纳的客人数。
(2)界面二
初始化完毕后,就进入了:餐厅管理系统
顾客可以选择:点餐、结账、或退出系统。
(3)界面三
当我们选择点餐后,屏幕上就会显示:请输入顾客数、选择用户或退出系统。
(4)界面四
当我们输入顾客数和选择用户后,屏幕就会显示出:您所需要的餐桌数并请顾客输入所需餐的类型或退出系统。
(5)界面五
如:当我们选择早餐后,系统就会在屏幕上自动显示出早餐菜单并供顾客选择。
(6)界面六
当我们选择菜单后,系统就会自动在屏幕上显示出:
顾客一共所定的餐桌数;
顾客的号码;
顾客所点菜单;
然后,屏幕将请顾客输入所需份数。
(7)界面七
当顾客输入份数后,屏幕又将显示出:餐厅管理系统,顾客又可以选择再次点餐,或者选择结账。
(8)界面八
当顾客选择结账后,系统就会根据顾客所输入的桌号计算并输出顾客所消费的金额,并显示:欢迎再次光临!
3、实用性
“餐厅点菜系统”适合各餐厅所用,餐厅可以根据自己餐厅规模的大小而设置适合自己的系统。有了餐厅点菜系统,更方便顾客随时预订或直接点餐,同时更节约时间和人力资源,减少了餐厅的成本,提高了餐厅运行效率。虽然次系统还有很多不完善的方面,但此系统还是能基本满足一般小餐厅的需求。
三、“餐厅点菜系统”流程图
四、“餐厅点菜系统”模板介绍
本系统共分为食物、顾客、管理、实行(主函数)等四个部分。
1、 食物
此部分又分为四个类----食物类、早餐类、午餐类、晚餐类。
(1)食物类
食物类描述了食物名称、价格等数据特性,还分别设置了返回食物价格、显示食物菜单、显示餐点类型等函数特性。
(2)早餐类
早餐类设置了早餐菜单、类型、总价格等数据特性,还设置了选择早餐菜单、计算顾客消费价格、显示顾客所选择的菜单,和输出餐点类型等函数。
(3)午餐类
午餐类设置了午餐菜单、类型、总价格等数据特性,还设置了选择午餐菜单、计算顾客消费价格、显示顾客所选择的菜单,和输出餐点类型等函数。
(4)晚餐类
晚餐类设置了晚餐菜单、类型、总价格等数据特性,还设置了选择晚餐菜单、计算顾客消费价格、显示顾客所选择的菜单,和输出餐点类型等函数。
2、顾客
此类描述了桌号、顾客类型、食物数量等数据特性,还设置了设置桌号、设置餐点类型、设置顾客类型、设置食物分数、输出餐点类型、输出桌号、显示所点菜单、根据顾客类型输出消费总额等函数。
3、管理
此类描述了本餐厅所有的餐桌数、所能容纳的顾客数量、每桌顾客数、顾客人数等数据特性,还设置了返回顾客类型、分配桌子给顾客、输入所需餐点类型、显示菜单、顾客点餐份数等函数。
4、实行
次部分主要先使餐厅管理系统初始化,再调用前面的六个类,使这六个连为一个整体并运行。
五、总结
通过本次的C++课程设计,让我学会了把书本上的知识应用到了实际中来。虽然在这几周中有过挫折和坎坷,有的问题一直到了最后才得以解决,但我觉得很有价值。如:在编程中遇到很多意外错误,有些错误还不易发现,并且此系统的有些功能比较难写,还得在老师、同学的帮助下完成。这个程序还存在许多瑕疵,不是那么的完善,如:此体统不能让顾客取消预订,不能让顾客设置就餐时间等。但是此系统是自己查资料、写代码、请教他人、解决无数的问题后,才写出来的,它凝聚着我的智慧和价值,让我很有成就感。在这过程中,我尽力了,我认真去编写过,也从中感受到c++语言课程设计其实也没我想象中那么困难,即使做不到完美,也能在原来的基础上提升很多。程序设计代码写得过于繁琐,不够人性化,是因为我的能力还不够,特别是把握指针、数组等内容的能力上,我还很欠缺。这次课程设计锻炼我的意志,磨练我的耐心,提升自我的编程能力,最重要的是这次课程设计让我战胜了对计算机课程的恐惧,让我找到了学好它的信心,明白了“世上无难事,只
怕有心人”。
最后,这次课程设计也很感谢为我解疑释难的老师和朋友,是你们让我懂得了更多编程的知识,同时感谢老师和朋友一起营造的良好的学习环境,为学习增加了不少有利条件。
manage.h文件
# include"customer.h"
class Manage
{
private:
};
Manage::Manage(int Desk,int Cust)
{
int i; All_Desk_num=Desk; Desk_ptr=new int[All_Desk_num]; Customer_ptr=new Customer[All_Desk_num]; for(i=0;i<Desk;i++) { int *Desk_ptr; Food *Food_ptr; Customer *Customer_ptr; int All_Desk_num; int Desk_customer;//每桌客人数 int Desk_num_ing; int desk_num;//所需餐桌数 int choice; Manage(){} Manage(int Desk,int Cust); ~Manage(); void Give_Desk(int cust_num); void Give_Cust_Type(); void Give_Meal_Type(); void Give_food_num(); void Show_Menu(); void Pay(); public:
}
} (Customer_ptr+i)->Set_Desk_number(0); Desk_customer=Cust;
Manage::~Manage()
{
}
void Manage::Give_Desk(int cust_num) {
} for(i=0;i<desk_num;i++) { } for(j=0;j<All_Desk_num;j++) { } if(j==All_Desk_num) cout<<"餐馆所有餐桌已被预订!"<<endl; if((Customer_ptr+j)->Give_Desk_num()==0) { } Desk_num_ing=j; (Customer_ptr+j)->Set_Desk_number(j+1); break; cout<<"您需要餐桌数为:"<<desk_num<<"张"<<endl; int i,j; int temp; temp=(cust_num%Desk_customer); if(temp==0) else { } if(temp==cust_num) else desk_num=(cust_num/Desk_customer)+1; desk_num=1; desk_num=(cust_num/Desk_customer); delete[] Desk_ptr; delete Food_ptr; cout<<"餐桌预订成功!"<<endl;
void Manage::Give_Cust_Type() {
}
void Manage::Give_Meal_Type() {
default :Manage::~Manage();exit(1); cout<<"请问您需要:"<<endl; cout<<"1、早餐"<<endl; cout<<"2、中餐"<<endl; cout<<"3、晚餐"<<endl; cout<<"4、退出"<<endl; cin>>choice; switch(choice) { case 1: Food_ptr=new Breakfast(); (Customer_ptr+Desk_num_ing)->Set_Food(Food_ptr); break; Food_ptr=new Lunch(); (Customer_ptr+Desk_num_ing)->Set_Food(Food_ptr); break; Food_ptr=new Dinner(); (Customer_ptr+Desk_num_ing)->Set_Food(Food_ptr); break; int choice; cout<<"请问你是:"<<endl; cout<<"1、VIP用户"<<endl; cout<<"2、普通用户"<<endl; cout<<"3、退出"<<endl; cin>>choice; switch(choice) { case 1: } (Customer_ptr+Desk_num_ing)->Set_Type("VIP用户"); break; (Customer_ptr+Desk_num_ing)->Set_Type("普通用户"); break; case 2: default:Manage::~Manage();exit(1); case 2: case 3:
}
}
void Manage::Give_food_num()
{
}
void Manage::Show_Menu()
{
cout<<"您一共订了"<<desk_num<<"张餐桌!"<<endl;
}
void Manage::Pay()
{
}
#include<iostream>
#include<string>
using namespace std;
class Food{
public:
string Food_Name; float Food_Price; virtual string Get_food_type(){return "您还未点餐!";} int desk_number; cout<<"请输入待结账的桌号:"; cin>>desk_number; (Customer_ptr+desk_number-1)->Cut_Bill(); *(Desk_ptr+desk_number)=0; cout<<"欢迎再次光临!"<<endl; (Customer_ptr+Desk_num_ing)->Show(); int n; if(desk_num>1) { } cout<<"输入您需要的"; (Customer_ptr+Desk_num_ing)->Show_food_type(); cout<<"份数:"<<endl; cin>>n; (Customer_ptr+Desk_num_ing)->Set_food_num(n);
};
virtual float Get_price(){ } virtual void choosefood(){} virtual void Show_Food(){cout<<"食物名称:"<<Food_Name<<" "<<"食物价格:"<<Food_Price<<"元cout<<"您还未点餐!"; return 0; "<<endl;}
class Breakfast:public Food{
public:
Breakfast(){ egg.Food_Name="鸡蛋",egg.Food_Price=1; milk.Food_Name="牛奶",milk.Food_Price=2; soybean_milk.Food_Name="豆浆",soybean_milk.Food_Price=1; steamed_bread.Food_Name="馒头",steamed_bread.Food_Price=0.5; youtiao.Food_Name="油条",youtiao.Food_Price=0.5; chunjuan.Food_Name="春卷",chunjuan.Food_Price=1.5; food_type1="早餐"; } virtual void choosefood(){ cout<<"请输入您需要的早餐:"<<endl; cout<<"(0) ";egg.Show_Food(); all_price1=0.0; B[0]=egg; B[1]=milk; B[2]=soybean_milk; B[3]=steamed_bread; B[4]=youtiao; B[5]=chunjuan; cout<<"(1) ";milk.Show_Food();
cout<<"(2) ";soybean_milk.Show_Food();
virtual string Get_food_type(){return food_type1;} virtual float Get_price(){ } cout<<"(3) ";steamed_bread.Show_Food(); cout<<"(4) ";youtiao.Show_Food(); cout<<"(6) 退出"<<endl; cin>>i; for(j=0;i<6;j++){ } a[j]=i; cin>>i; cout<<"(5) ";chunjuan.Show_Food();
for(int k=0;k<j;k++)
}
private:
};
class Lunch:public Food{
public:
Lunch() { eggplant.Food_Name="红烧茄子",eggplant.Food_Price=4; Food egg; Food milk; Food soybean_milk; Food steamed_bread; Food chunjuan; Food youtiao; string food_type1; float all_price1; int i; int j; int a[20]; } virtual void Show_Food(){ for(int a=0;a<j;a++) B[a].Show_Food(); for(int t=0;t<6;t++) if(a[k]==t){ all_price1+=B[t].Food_Price; break; } return all_price1; Food B[6]; potato.Food_Name="土豆丝",potato.Food_Price=4;
cabbage_soup.Food_Name="白菜清汤",cabbage_soup.Food_Price=2.5;
toufu_soup.Food_Name="豆腐清汤",toufu_soup.Food_Price=2.5; pepper.Food_Name="青椒肉丝",pepper.Food_Price=9; fish.Food_Name="酸菜鱼",fish.Food_Price=9; chicken.Food_Name="辣子鸡",chicken.Food_Price=10; duck.Food_Name="水煮鸭",duck.Food_Price=10; beef.Food_Name="干巴牛肉",beef.Food_Price=12; food_type2="午餐"; all_price2=0.0; prawn.Food_Name="油炸海虾",prawn.Food_Price=10;
C[0]=eggplant;
C[1]=potato; C[2]=cabbage_soup; C[3]=toufu_soup; C[4]=pepper; C[5]=fish; C[6]=chicken; C[7]=duck; C[8]=beef; } cout<<"请输入您需要的午餐:"<<endl; cout<<"(0) ";eggplant.Show_Food(); C[9]=prawn; virtual void choosefood(){ cout<<"(1) ";potato.Show_Food();
cout<<"(2) ";cabbage_soup.Show_Food(); cout<<"(3) ";toufu_soup.Show_Food();
virtual string Get_food_type(){return food_type2;} virtual float Get_price(){ } virtual void Show_Food(){ } for(int a=0;a<j2;a++) C[a].Show_Food(); for(int t=0;t<10;t++) if(b[k]==t){ cout<<"(4) ";pepper.Show_Food(); } cout<<"(5) ";fish.Show_Food(); cout<<"(7) ";duck.Show_Food(); cout<<"(8) ";beef.Show_Food(); cout<<"(10) 退出"<<endl; cin>>i2; for(j2=0;i2<10;j2++){ } b[j2]=i2; cin>>i2; cout<<"(6) ";chicken.Show_Food(); cout<<"(9) ";prawn.Show_Food(); for(int k=0;k<j2;k++) all_price2+=C[t].Food_Price; break; } return all_price2;
private:
};
Food eggplant; Food potato; Food cabbage_soup; Food toufu_soup; Food pepper; Food fish; Food chicken; Food duck; Food beef; string food_type2; float all_price2; int i2; int j2; int b[20]; Food C[10]; Food prawn;
food.h文件
class Dinner:public Food {
public:
Dinner(){ cucumber.Food_Name="凉拌黄瓜",cucumber.Food_Price=5; cabbage.Food_Name="炒小白菜",cabbage.Food_Price=7; Fish.Food_Name="清蒸鱼",Fish.Food_Price=10; douya.Food_Name="炒豆芽",douya.Food_Price=5; donggua.Food_Name="红枣冬瓜",donggua.Food_Price=5; zhusun.Food_Name="青椒竹笋",zhusun.Food_Price=7; haidai_soup.Food_Name="海带汤", haidai_soup.Food_Price=5;; zicai_soup.Food_Name="紫菜汤",zicai_soup.Food_Price=7; } food_type3="晚餐"; all_price3=0.0; D[0]=cucumber; D[1]=cabbage; D[2]=Fish; D[3]=douya; D[4]=donggua;; D[5]=zhusun; D[6]=haidai_soup; D[7]=zicai_soup;
virtual void choosefood(){
cout<<"请输入您需要的晚餐:"<<endl; cout<<"(0) ";cucumber.Show_Food(); cout<<"(1) ";cabbage.Show_Food(); cout<<"(2) ";Fish.Show_Food();
} virtual string Get_food_type(){return food_type3;} virtual float Get_price(){ } virtual void Show_Food(){ } Food cucumber; Food cabbage; Food Fish; Food douya; Food donggua; Food zhusun; Food haidai_soup; Food zicai_soup; string food_type3; float all_price3; int i3; int j3; int c[20]; Food D[8]; for(int a=0;a<j3;a++) D[a].Show_Food(); for(int t=0;t<8;t++) if(c[k]==t){ cout<<"(3) ";douya.Show_Food(); cout<<"(4) ";donggua.Show_Food(); cout<<"(6) ";haidai_soup.Show_Food(); cout<<"(8) 退出"<<endl; cin>>i3; for(j3=0;i3<8;j3++){ } c[j3]=i3; cin>>i3; cout<<"(5) ";zhusun.Show_Food(); cout<<"(7) ";zicai_soup.Show_Food(); for(int k=0;k<j3;k++) all_price3+=D[t].Food_Price; break; } return all_price3; private:
};
customer.h文件
# include"food.h"
class Customer
{
private:
void Cut_Bill(){
};
main.cpp文件
#include"manage.h"
int main(){
int All_desknumber;//总餐桌数 } Desk_number=0; if(Cust_type=="VIP用户") else cout<<"尊敬的顾客,您总共消费:"<<Cust_Food_Ptr->Get_price()*food_num<<"元"<<endl; cout<<"尊敬的VIP用户,您总共消费:"<<(Cust_Food_Ptr->Get_price())*0.85*food_num<<"元int Desk_number;//桌号 Food *Cust_Food_Ptr; string Cust_type;//顾客类型 int food_num;//食物数量 void Set_Desk_number(int num){Desk_number=num;}//设置桌号 void Set_Food(Food *p){ Cust_Food_Ptr=p; Cust_Food_Ptr->choosefood(); }//设置餐点类型 void Set_Type(string typ_nam){Cust_type=typ_nam;}//设置顾客类型 void Set_food_num(int num){food_num=num;}//设置食物分数 void Show_food_type(){cout<<Cust_Food_Ptr->Get_food_type();}//输出餐点类型 int Give_Desk_num(){return Desk_number;}// void Show(){// } cout<<"您的号码为: "<<Desk_number<<"号"<<endl; cout<<"您的菜单为:"<<endl; Cust_Food_Ptr->Show_Food(); public: "<<endl;
int Customer_num;//每张餐桌能容纳的顾客人数 int cust_number;//顾客数 cout<<"餐厅管理系统初始化……"<<endl; cout<<"输入该餐厅能容纳的餐桌数(不得小于张):"; cin>>All_desknumber; if(All_desknumber<15){ } else{ cout<<"输入每张餐桌容纳的客人数:"; cin>>Customer_num; cout<<"初始化完毕!"<<endl; } Manage My_Manage(All_desknumber,Customer_num);//声明一个对象 while(1) { int choice=1; cout<<"餐厅管理系统:"<<endl; cout<<"1.点餐\n2.结账\n3.退出系统"<<endl; cout<<"请选择:"; cin>>choice; switch(choice) { case 1: { } cout<<"请输入顾客数(顾客数不能小于人):"; cin>>cust_number; if(cust_number<30){ cout<<"您的输入错误"<<endl; } else{ My_Manage.Give_Desk(cust_number);//分配桌子给顾客 My_Manage.Give_Meal_Type();//所需点餐类型 My_Manage.Show_Menu();//显示菜单 My_Manage.Give_food_num();//顾客点餐份数 break; } return 0; cout<<"您的输入错误!"<<endl; return 0; My_Manage.Give_Cust_Type();//顾客类型 case 2:
{
My_Manage.Pay();
break;
}
case 3:
{
My_Manage.~Manage();
}
default :
cout<<"您的输入错误!"<<endl;
break;
}
}
return 0;
}
参考文献
1、《C++程序设计》 钱能 清华大学出版社 2010.1
2、《C++程序设计试验指导》 钱能 清华大学出版社 2009.6
3、《C程序设计》 谭浩强 清华大学出版社 2009.8
4、《C++语言程序设计(第4版)》 郑莉 清华大学出版社 2010.5
5、《C++语言程序设计(第3版)学生用书》 郑莉 清华大学出版社 2010.10
餐饮空间调查报告班级:环艺二班姓名:陈高扬学号:20xx220210指导老师:闫谨、杜雨通过对餐厅整体布局的把握,传达出对生活的重…
硅湖职业技术学院设计说明书设计说明书题目餐厅空间设计年级20xx级专业环境艺术设计姓名谁谁谁学号100000000指导老师谁谁谁二…
餐饮空间设计说明本设计方案不单单只表现中餐这个概念而是多元化的多方面的结合形成自身的一种风格用餐环境如同餐饮业的包装工程本方案针对…
编号20xx3040322本科毕业设计说明书题目浓香居乡村风味餐厅院系艺术设计学院姓名李岩学号1030140322专业环境设计年级…
室内设计说明范文8篇范文1留金岁月室内设计说明项目名称星河丹堤A区建筑面积450m2装修风格传统与现代结合主要材料进口大理石进口墙…
餐饮空间设计说明本设计方案不单单只表现中餐这个概念而是多元化的多方面的结合形成自身的一种风格用餐环境如同餐饮业的包装工程本方案针对…
编号20xx3040322本科毕业设计说明书题目浓香居乡村风味餐厅院系艺术设计学院姓名李岩学号1030140322专业环境设计年级…
设计说明对一种文化的理解与追求会逐渐影响人们看待事物的方式并改变人们的行为状态在半山中餐厅设计案例中浓浓的中国风是隐藏于室内装饰背…
单位代码学号XXXXXX分类号TP315密级毕业设计说明书餐厅管理系统的设计与实现院系名称专业名称学生姓名指导教师XX学院计算机科…
Java程序设计课程设计设计说明书饭店点餐系统起止日期:20##年06月24日至20##年06月30日计算机与通信学院20##年6…
餐饮空间调查报告班级:环艺二班姓名:陈高扬学号:20xx220210指导老师:闫谨、杜雨通过对餐厅整体布局的把握,传达出对生活的重…