餐厅信息管理系统

简易餐厅信息管理系统

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

    部分功能测试结果

      
      
      
      (程序中有些地方还有待完善,基本操作可以完成)

猜你喜欢

转载自blog.csdn.net/six_god_97/article/details/80958148