简易餐厅信息管理系统
餐厅管理流程是一个小型的信息管理系统,本文采用c/c++中的结构体、文件的输入、输出等操作,实现了一个餐厅中的预约、点菜、查询信息、收款基本功能。
1.模块分析
本文将一个餐厅信息管理系统划分为如下图所示的子模块。
主要功能如下:
(1)预约和点菜功能:这是一个餐厅最最基本业务。预约功能既能方便用户预订餐厅业务,同时又可以让餐厅人员提前准备相关食材和菜品,减少客人等待时间,提高顾客的消费体验。
(2)查询功能:包括预约信息查询和账单查询。预约查询可以方便顾客查询和更改预约信息,店家根据预约情况做出相应安排;账单查询可以是顾客了解自己的消费情况,避免差错。
(3)收款功能:顾客用餐结束后,系统根据桌号查询顾客的消费情况并计算出总金额。
2.程序设计
基本设计思想:
程序中主要涉及以下几个函数:
(1)初始菜单信息:第一次进入系统时,需要对菜单信息进行初始化。
记录菜单信息:将菜单信息记录到menu.txt文件中。
打印菜单:打印菜单信息,供顾客点菜。
void init_menu(); void save_menu(); void show_menu(int i);
(2)记录预约信息:记录顾客的姓名,手机号,预约时间。
查询预约信息:查询所有的预约信息。
void save_bespeak(int f); void show_bespeak(int bes_num);
(3)记录点菜信息:记录桌号,菜的数量,菜名,价格。
查询点菜信息:查询消费记录。
void save_order(int or_num); void show_order(int or_num);
代码(c/c++)
#include <iostream>
using namespace std;
#define N 9999
#define size 5 //菜品数
struct menu //菜单
{char cai_name[15]; //菜名int price; //菜的价格
}menu[N];
struct order //每张桌子点菜信息
{int desk_num; //桌号char cai_name[15]; //菜名int price; //菜的价格
}order[N];
struct bespeak //顾客预约信息
{char cus_name[15]; //顾客名字int mobilenum; //手机号double time; //预约时间
}bespeak[N];
void save_menu(int i); //保存菜单信息
void save_bespeak(int f); //保存预约信息
void save_order(int or_num); //保存点菜信息
void show_menu(); //显示菜单信息
void show_bespeak(int bes_num); //显示预约信息
void show_order(int or_num); //显示点菜信息
void init_menu(); //初始化菜单信息
int main()
{init_menu();show_menu();int bes_num=0,or_num=0;
re:cout<<"输入密码进入系统:"<<endl;int password;cin>>password;if(password==123456){FILE *fp1,*fp2;fp1=fopen("D:\\restauraut\\order.txt","w");fp2=fopen("D:\\restauraut\\bespeak.txt","w");fclose(fp1);fclose(fp2); //清空预约、点菜文件中的信息system("cls");cout<<"欢迎进入餐厅信息管理系统"<<endl;kaishi:cout<<"选项 1.餐饮管理 2.信息查询 3.收银管理 4.退出"<<endl;int xx;cin>>xx;if(xx==1){system("cls");ss:cout<<"选项 1.预约记录 2.桌台点菜 3.退出"<<endl;int xx_1;cin>>xx_1;if(xx_1==1){system("cls");cout<<"记录预约信息(姓名 手机号后四位 时间(时.分))"<<endl;cin>>bespeak[bes_num].cus_name>>bespeak[bes_num].mobilenum>>bespeak[bes_num].time;save_bespeak(bes_num);cout<<"记录完毕"<<endl;bes_num++;goto ss;}else if(xx_1==2){system("cls");cout<<"分配桌位号:";int d_num;cin>>d_num;show_menu();cout<<"记录点菜信息:"<<endl;cout<<"点菜数量:";int num;cin>>num;for(int i=0;i<num;i++){order[i].desk_num=d_num;cin>>order[i].cai_name>>order[i].price;save_order(i);}cout<<"记录完毕"<<endl;or_num+=num;goto ss;}else if(xx_1==3){goto kaishi;}else{cout<<"输入错误,请重新输入:";goto ss;}}else if(xx==2){system("cls");mm:cout<<"选项 1.预约信息 2.消费查询 3.退出"<<endl;int xx_2;cin>>xx_2;if(xx_2==1){system("cls");show_bespeak(bes_num);goto mm;}else if(xx_2==2){system("cls");show_order(or_num);goto mm;}else if(xx_2==3){goto kaishi;}else{cout<<"输入错误,请重新输入:";goto mm;}}else if(xx==3){system("cls");cout<<"结账桌号:";int p;cin>>p;int sum=0;for(int k=0;k<or_num;k++){if(order[k].desk_num==p)sum+=order[k].price;}cout<<"消费金额:"<<sum<<"元"<<endl;cout<<"收银成功"<<endl;goto kaishi;}else if(xx==4){system("cls");cout<<"退出系统..."<<endl;}else{cout<<"输入错误,请重新输入:";goto kaishi;}}else{cout<<"输入错误,请重新输入:";goto re;}return 0;
}
void save_menu() //保存菜单信息
{FILE *fp;if((fp=fopen("D:\\restauraut\\menu.txt","wb"))==NULL)cout<<"不能打开此文件"<<endl;else{fwrite(menu,sizeof(struct menu),size,fp);}fclose(fp);
}
void init_menu() //初始化菜单信息
{cout<<"第一次进入系统,请输入菜单信息:"<<endl;cout<<"菜名 价格(元)"<<endl;for(int i=0;i<size;i++){cin>>menu[i].cai_name;cin>>menu[i].price;}save_menu();
}
void show_menu() //显示菜单信息
{FILE *fp;fp=fopen("D:\\restauraut\\menu.txt","rb");cout<<"菜单信息(菜名 价格(元))"<<endl;for(int i=0;i<size;++i){fread(&menu[i],sizeof(struct menu),1,fp);cout<<menu[i].cai_name<<" "<<menu[i].price<<endl;}fclose(fp);
}
void save_bespeak(int f) //保存预约信息
{FILE *fp;if((fp=fopen("D:\\restauraut\\bespeak.txt","ab+"))==NULL)cout<<"不能打开此文件"<<endl;else{//fseek(fp,f*sizeof(struct bespeak),SEEK_SET);if(fwrite(&bespeak[f],sizeof(struct bespeak),1,fp)!=1)cout<<"写入错误"<<endl;}fclose(fp);
}
void show_bespeak(int bes_num) //显示预约信息
{FILE *fp;fp=fopen("D:\\restauraut\\bespeak.txt","rb");cout<<"预约信息(名字 手机号后四位 时间(时.分))"<<endl;for(int i=0;i<bes_num;++i){fread(&bespeak[i],sizeof(struct bespeak),1,fp);cout<<bespeak[i].cus_name<<bespeak[i].mobilenum<<bespeak[i].time;}fclose(fp);
}
void save_order(int or_num) //保存点菜信息
{FILE *fp;if((fp=fopen("D:\\restauraut\\order.txt","ab+"))==NULL)cout<<"不能打开此文件"<<endl;else{// fseek(fp,or_num*sizeof(struct bespeak),SEEK_SET);if(fwrite(&order[or_num],sizeof(struct order),1,fp)!=1)cout<<"写入错误"<<endl;}fclose(fp);
}
void show_order(int or_num) //显示点菜信息
{FILE *fp;fp=fopen("D:\\restauraut\\order.txt","rb");cout<<"点菜信息(桌号 菜名 价格(元))"<<endl;for(int i=0;i<or_num;++i){fread(&order[i],sizeof(struct order),1,fp);cout<<order[i].desk_num<<" "<<order[i].cai_name<<" "<<order[i].price;}fclose(fp);
}