简易餐厅信息管理系统
餐厅管理流程是一个小型的信息管理系统,本文采用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);
}