餐厅点菜系统 设计说明书

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

相关推荐