计科实训 餐馆点菜系统

苦逼的计科实训结束了,特在此贴一下代码

#include
#include
#include
#include

int k = 0;//订单号
int t = 0;//菜单菜目数量
int y = 0;//已经结账的用户数量
int cans = 5;//餐桌的初始
int ps = 3;//人员

struct node//存储文件里的信息
{
    char name[5], pwd[5];
    char num ;
} ls[1000];

struct cai//菜的信息
{
    char name[10];
    int num;
    char caiz, caih;
    double p;
    int f;
} caid[1000];

struct no
{
    char name[10];
    int fen;
    int num;
    double p;
};

struct jiezhang//订单信息
{
    char name[15];
    int s;//菜的个数
    int zuohao;//桌号
    double m;//总金额
    char huo;//状态
    char zd;//订单是否买单
    struct no us[1000];
} lk[1000];

struct zuo//台桌信息
{
    char zt;
    char hd;
    int h;
} lz[100];

struct ns
{
    char name[15];
    double sum;
} ly[1000];

void admin();//管理员模块
void denglu();//登陆页面
void director();//经理模块
void waiter();//服务员模块
void denglu();//登陆模块
void canzhuo();//餐桌页面
void caidan();//菜单的增删
int caiq(int d);//寻找某个编号的菜;
void diancai();//点菜
void canzuog();//餐桌改变
void renyuang();//人员管理
char str[26];

int main()
{
    FILE *fp;
    int i;
    char ch;
    printf("系统初始化******\n");
    printf("初始化完成.\n");
    if((fp = fopen("d:\\user.dat","ab+")) == NULL)
    {
        printf("Cannot Open !!!\n");
        exit(0) ;
    }
    for(i = 0; i < 5; i++)//台桌信息初始化
    {
        lz[i].zt = 'Y';
        lz[i].hd = 'Y';
        lz[i].h = i;
    }
    ch = fgetc(fp);
    if(ch == EOF)
    {
        printf("创建新的111 111的管理员用户\n");
        strcpy(ls[0].name,"111");
        strcpy(ls[0].pwd,"111");
        ls[0].num = 'a';
        char cc[25] = {'1','1','1',' ','1','1','1',' ','a'};
        fputs(cc,fp);
    }
    else
    {
        rewind(fp);
        for(i = 0; i < 1000; i++)
        {
            fgets(str,25,fp);
            sscanf(str,"%s %s %c",ls[i].name,ls[i].pwd,&ls[i].num);//数据解析

        }
    }
    fclose(fp);
    denglu();
}

char name[5], pwd[5];

void denglu()//登陆页面
{

    int i;
    system("CLS");
    printf("+----------------------------+\n");
    printf("+                            +\n");
    printf("+    易用点菜系统            +\n");
    printf("+    CopyRight               +\n");
    printf("+                            +\n");
    printf("+----------------------------+\n");
    printf("请输入用户名>");//读入数据
    scanf("%s",name);
    printf("请输入密码>");
    scanf("%s",pwd);
    char c = '0';
    for(i = 0; i < 1000; i++)
    {
        if((strcmp(name,ls[i].name) == 0) && (strcmp(pwd,ls[i].pwd) ==0))
        {
            c = ls[i].num;
            break;
        }
    }
    if(c == 'a')//管理员模块调用
    {
        admin();
    }
    else if(c == 'd')//主管模块调用
    {
        director();
    }
    else if(c == 'w')//服务员模块的调用
    {
        waiter();
    }
    else //没有此用户
    {
        printf("登录失败!!!\n");
    }

}

void admin()//管理页面
{
    system("CLS");
    printf("+-------  -------+\n");
    printf("+---          ---+\n");
    printf("+--- 管理页面 ---+\n");
    printf("+---          ---+\n");
    printf("+-------  -------+\n");
    printf(" 1 : 菜谱管理\n");
    printf(" 2 : 餐桌管理\n");
    printf(" 3 : 人员管理\n");
    printf(" c : 切换用户\n");
    printf(" q : 退出系统\n");
    printf(" 输入你的选择 >");
    char c;
    scanf("%s",&c);
    if(c == '1')//菜谱页面
    {
        caidan();
        admin();
    }
    else if(c == '2')//餐桌管理
    {
        canzuog();
    }
    else if(c == '3')
    {
        renyuang();
    }
    else if(c == 'q')//切换用户
    {
        denglu();
    }
    else if(c == 'c')//退出系统
    {
        denglu();
    }

}

void director()//主管页面
{
    system("CLS");
    printf("+-------  -------+\n");
    printf("+---          ---+\n");
    printf("+--- 主管页面 ---+\n");
    printf("+---          ---+\n");
    printf("+-------  -------+\n");
    printf(" 1 : 营销统计\n");
    printf(" 2 :\n");
    printf(" 3 :\n");
    printf(" c : 切换用户\n");
    printf(" q : 退出系统\n");
    printf(" 输入你的选择 >");
    //getchar();
    char c;
    scanf("%s",&c);
    if(c == '1')
    {
        int i;
        double sum = 0;
        printf("用户  营业额\n");
        for(i = 0; i < y; i++)
        {
            printf("%s  %.2lf\n",ly[i].name,ly[i].sum);
            sum += ly[i].sum;
        }
        printf("总计  %.2lf\n",sum);
        system("pause");
        director();
    }
    else if(c == 'c')
    {
        denglu();
    }
    else if(c == 'q')
    {
        denglu();
    }
}

int caiq(int d)//寻找某个编号的菜
{
    int i;
    for(i = 0; i < t; i++)
    {
        if(caid[i].num == d)
        {
            break;
        }
    }
    printf("菜号   菜名    价格   状态   是否活动\n");
    printf("%d      %s    %.2lf    %c     %c\n",caid[i].num,caid[i].name,caid[i].p,caid[i].caiz,caid[i].caih);
    return i;
}

void caidan()//菜目的增删改查
{
    system("CLS");
    printf("+-------  -------+\n");
    printf("+---          ---+\n");
    printf("+--- 菜单页面 ---+\n");
    printf("+---          ---+\n");
    printf("+-------  -------+\n");
    printf(" 1 -> 增加菜目\n");
    printf(" 2 -> 删除菜目\n");
    printf(" 3 -> 修改菜目\n");
    printf(" 4 -> 查询菜目\n");
    printf(" 5 -> 所有菜目\n");
    printf(" q -> 返    回\n");
    printf(" 输入你的选择 >");
    //getchar();
    char c;
    scanf("%s",&c);
    if(c == '1') //增加菜目
    {
        printf("输入菜目编号:");
        scanf("%d",&caid[t].num);
        printf("输入菜目名称:");
        scanf("%s",caid[t].name);
        printf("输入菜目价格:");
        scanf("%lf",&caid[t].p);
        //getchar();
        printf("输入菜目状态:");
        scanf("%s",&caid[t].caiz);
        caid[t].f = 1;
        printf("输入菜目活动:");
        //getchar();
        scanf("%s",&caid[t++].caih);
        printf("是否确认添加:");
        char u;
        scanf("%s",&u);
        if(u == 'N')
        {
            t--;
        }
        system("pause");
        caidan();
    }
    else if(c == '2')//删除菜目
    {
        printf("输入要删除的菜号\n");
        int d;
        printf("1.输入菜号>");
        scanf("%d",&d);
        int i = caiq(d);
        printf("是否删除>");
        char mm;
        //getchar();
        scanf("%s",&mm);
        printf("\n");
        if(mm == 'Y')
        {
            caid[i].f = 0;
        }
        system("pause");
        caidan();
    }
    else if(c == '4')
    {
        printf("输入要查询的菜号\n");
        printf("1.输入菜号>");
        int d;
        scanf("%d",&d);
        int i ;
        i = caiq(d);
        system("pause");
        caidan();
    }
    else if(c == '5')
    {
        int i;
        for(i = 0; i < t; i++)
        {
            if(caid[i].f == 1)
            {
                printf("菜号   菜名    价格   状态   是否活动\n");
                printf("%d      %s      %.2lf    %c      %c\n",caid[i].num,caid[i].name,caid[i].p,caid[i].caiz,caid[i].caih);
            }
        }
        system("pause");
        caidan();
    }
    else if(c == '3')//修改菜目信息
    {
        printf("请输入要修改菜目的编号");
        int d;
        scanf("%d",&d);
        d = caiq(d);
        int num;
        char gname[15];
        double pp;
        char caiz, caih;
        printf("输入菜目编号:");
        scanf("%d",&num);
        printf("输入菜目名称:");
        scanf("%s",gname);
        printf("输入菜目价格:");
        scanf("%lf",&pp);
        //getchar();
        printf("输入菜目状态:");
        scanf("%s",&caiz);
        printf("输入菜目活动:");
        //getchar();
        scanf("%s",&caih);
        printf("是否确认修改:");
        char u;
        scanf("%s",&u);
        if(u == 'Y')//修改完成
        {
            printf("修改完成,请继续!\n");
            caid[d].num = num;
            strcpy(caid[d].name,gname);
            caid[d].p = pp;
            caid[d].caiz = caiz;
            caid[d].caih = caih;
        }
        system("pause");
        caidan();
    }
}

void diancai()//点菜
{
    int i;
    printf("订单号  桌号  菜数  已买单  活动 用户名\n");
    for(i = 0; i < k; i++)
    {
        printf("%d       %d      %d       %c     %c    %s\n",i+1,lk[i].zuohao,lk[i].s,lk[i].zd,lk[i].huo,lk[i].name);
    }
    printf("输入要点菜的订单号\n");
    int d;
    scanf("%d",&d);
    d = d-1;
    printf("这是菜单\n");
    int j;
    printf("菜号   菜名    价格   状态   是否活动\n");
    for(j = 0; j < t; j++)
    {
        if(caid[j].f == 1)
        {
            printf("%d     %s      %.2lf    %c     %c\n",caid[j].num,caid[j].name,caid[j].p,caid[j].caiz,caid[j].caih);
        }
    }
    printf("这是你订单的已点菜\n");
    for(j = 0; j < lk[d].s; j++)
    {
        printf("%d %s %.2lf %d\n",lk[d].us[j].num,lk[d].us[j].name,lk[d].us[j].p,lk[d].us[j].fen);
    }
    printf("输入菜号>");
    int r;
    scanf("%d",&r);//要点菜的编号
    r = caiq(r);
    lk[d].us[lk[d].s].num = caid[r].num;
    strcpy(lk[d].us[lk[d].s].name,caid[r].name);
    lk[d].us[lk[d].s].p = caid[r].p;
    int p;//要点菜的份数
    printf("输入份数>");
    scanf("%d",&p);
    lk[d].us[lk[d].s].fen = p;
    int ll;
    ll = p;
    printf("是否确认点菜?>");
    char e;
    scanf("%s",&e);
    if(e == 'Y')
    {
        lk[d].s++;
        lk[d].m += ll*caid[r].p;
    }
    printf("是否继续点菜>");
    scanf("%s",&e);
    if(e == 'Y')
    {
        diancai();
    }
    else
    {
        system("pause");
        waiter();
    }

}

void waiter()//服务模块
{
    system("CLS");
    printf("+-------  -------+\n");
    printf("+---          ---+\n");
    printf("+--- 服务页面 ---+\n");
    printf("+---          ---+\n");
    printf("+-------  -------+\n");
    printf("   1 : 开    桌\n");
    printf("   2 : 点    菜\n");
    printf("   3 : 查询台桌\n");
    printf("   4 : 点菜记录\n");
    printf("   5 : 查询订单\n");
    printf("   6 : 买    单\n");
    printf("   c : 切换用户\n");
    printf("   q : 退出系统\n");
    printf("输入你的选择 >");
    char c;
    //getchar();
    scanf("%s",&c);
    if(c == '1')//开桌
    {
        int i;
        printf("桌号  状态  是否活动\n");
        for(i = 0; i < 5; i++)
        {
            printf("%d  %c  %c\n",lz[i].h,lz[i].hd,lz[i].zt);
        }
        printf("输入要选择的台桌>");
        int d;
        scanf("%d",&d);
        printf("确认选择吗");
        char ci;
        scanf("%s",&ci);
        if(ci == 'Y')//订单的初始化
        {
            lz[d].zt = 'N';
            strcpy(lk[k].name,name);
            lk[k].s = 0;
            lk[k].huo = 'Y';
            lk[k].m = 0;
            lk[k].zd = 'N';
            lk[k++].zuohao = d;
        }
        system("pause");
        waiter();
    }
    else if(c == '2')//点菜
    {
        diancai();
    }
    else if(c == '3')//查询台桌
    {
        printf("输入要查询台桌的桌号>");
        int x;
        scanf("%d",&x);
        printf("桌号   状态   活动 \n");
        printf("%d   %c   %c\n",lz[x].h,lz[x].zt,lz[x].hd);
        system("pause");
        waiter();
    }
    else if(c == '4')//点菜记录
    {
        printf("输入要查询的订单号>");
        int x;
        scanf("%d",&x);
        int i;
        printf("菜号  菜名  份数\n");
        for(i = 0; i < lk[x-1].s; i++)
        {
            printf("%d   %s   %d\n",lk[x-1].us[i].num,lk[x-1].us[i].name,lk[x-1].us[i].fen);
        }
        system("pause");
        waiter();
    }
    else if(c == '5')//查询订单
    {
        printf("输入要查询的订单号>");
        int x;
        scanf("%d",&x);
        printf("订单号 桌号 菜数 合计 已买单 活动  用户名\n");
        printf("%d     %d    %d   %.2lf   %c    %c     %s\n",x-1,lk[x-1].zuohao,lk[x-1].s,lk[x-1].m,lk[x-1].zd,lk[x-1].huo,lk[x-1].name);
        system("pause");
        waiter();
    }
    else if(c == '6')//买单
    {
        int i;
        printf("订单号 桌号 菜数 合计 已买单 活动  用户名\n");
        for(i = 0; i < k; i++)
        {
            printf("%d     %d    %d   %.2lf   %c    %c     %s\n",i+1,lk[i].zuohao,lk[i].s,lk[i].m,lk[i].zd,lk[i].huo,lk[i].name);
        }
        printf("输入要结账的订单号\n");
        int e;
        scanf("%d",&e);
        int ll;
        ll = e;
        printf("是否确认结账>");
        char u;
        scanf("%s",&u);
        if(u == 'Y')
        {
            ll=ll-1;
            lk[ll].zd = 'Y';
            ly[y].sum = lk[ll].m;
            lz[lk[ll].zuohao].zt = 'Y';
            strcpy(ly[y].name,lk[ll].name);
            y++;
            printf("结账成功!!!\n");
        }
        system("pause");
        waiter();
    }
    else if(c == 'c')//切换用户
    {
        denglu();
    }
    else if(c == 'q')//退出系统
    {
        denglu();
    }
}

void canzuog()
{
    system("CLS");
    printf("+-------  -------+\n");
    printf("+---          ---+\n");
    printf("+--- 餐桌页面 ---+\n");
    printf("+---          ---+\n");
    printf("+-------  -------+\n");
    printf(" 1 -> 增加餐桌\n");
    printf(" 2 -> 删除餐桌\n");
    printf(" 3 -> 查询餐桌\n");
    printf(" 4 -> 所有餐桌\n");
    printf(" q -> 返    回\n");
    printf(" 输入你的选择 >");
    char c;
    scanf("%s",&c);
    if(c == '1')//餐桌增加
    {
        lz[cans].h = cans;
        lz[cans].hd = 'Y';
        lz[cans].zt = 'Y';
        cans++;
        printf("餐桌增加成功!\n");
        system("pause");
        canzuog();
    }
    else if(c == '2')//删除餐桌
    {
        printf("输入要删除的餐桌号>");
        int x;
        scanf("%d",&x);
          int ll;
        ll = x;
        printf("确定要删除>");
        char cm;
        scanf("%s",&cm);
        if(cm == 'Y')//确定活动和状态为‘N’,为不可用,即为删除;
        {
            lz[ll].hd = 'N';
            lz[ll].zt = 'N';
        }
        system("pause");
        canzuog();
    }
    else if(c == '3')//查询餐桌
    {
        printf("输入要查询的餐桌号>");
        int x;
        scanf("%d",&x);
        printf("桌号   状态   活动 \n");
        printf("%d   %c   %c\n",lz[x].h,lz[x].zt,lz[x].hd);
        system("pause");
        canzuog();
    }
    else if(c == '4')//所有餐桌
    {
        int i;
        printf("桌号   状态   活动 \n");
        for(i = 0; i < cans; i++)
        {
            printf("%d   %c   %c\n",lz[i].h,lz[i].zt,lz[i].hd);
        }
        system("pause");
        canzuog();
    }
    else if(c == 'q')//返回上个界面
    {
        admin();
    }
}

void renyuang()
{
    system("CLS");
    printf("+-------  -------+\n");
    printf("+---          ---+\n");
    printf("+-- 人员管理  ---+\n");
    printf("+---  页面    ---+\n");
    printf("+-------  -------+\n");
    printf(" 1 -> 增加人员\n");
    printf(" 2 -> 删除人员\n");
    printf(" 3 -> 查询人员\n");
    printf(" 4 -> 所有人员\n");
    printf(" q -> 返    回\n");
    printf(" 输入你的选择 >");
    char c;
    scanf("%s",&c);
    if(c == 'q')
    {
        admin();
    }
    else if(c == '1')//添加人员
    {
        printf("输入账号>");
        char cname[15];
        scanf("%s",cname);
        char cpwd[15];
        printf("输入密码>");
        scanf("%s",cpwd);
        printf("输入标示管理员-a主管-d服务员-w\n");
        char cnum;
        scanf("%s",&cnum);
        printf("确定添加>");
        char cb;
        scanf("%s",&cb);
        if(cb == 'Y')
        {
            strcpy(ls[ps].name,cname);
            strcpy(ls[ps].pwd,cpwd);
            ls[ps].num = cnum;
            ps++;
        }
    }
    else if(c == '2')//删除人员
    {
        printf("输入要删除人员的用户名>");
        char cnm[15];
        scanf("%s",cnm);
        int i;
        for(i = 0; i < ps; i++)
        {
            if(strcmp(ls[i].name,cnm) == 0)
            {
                ls[i].num = 'm';//设置标示为m,为已被清除人员
                break;
            }
        }
    }
    else if(c == '3')//查询人员
    {
        printf("输入要查询人员的用户名>");
        char cnm[15];
        scanf("%s",cnm);
        int i;
        for(i = 0; i < ps; i++)
        {
            if(strcmp(ls[i].name,cnm) == 0)
            {
                printf("用户名 :%s",ls[i].name);
                printf("身份: ");
                if(ls[i].num == 'a')
                {
                    printf("管理者\n");
                }
                else if(ls[i].num == 'd')
                {
                    printf("主管\n");
                }
                else if(ls[i].num == 'w')
                {
                    printf("服务员\n");
                }
                else
                {
                    printf("辞职者\n");
                }
                break;
            }
        }
    }
    else if(c == '4')//全部人员
    {
        int i;
        for(i = 0; i < ps; i++)
        {
            if(ls[i].num == 'm')
            {
                continue;
            }
            printf("用户名 :%s",ls[i].name);
            printf("身份: ");
            if(ls[i].num == 'a')
            {
                printf("管理者\n");
            }
            else if(ls[i].num == 'd')
            {
                printf("主管\n");
            }
            else if(ls[i].num == 'w')
            {
                printf("服务员\n");
            }
        }

    }
    system("pause");
    renyuang();
}


 

你可能感兴趣的:(瞎搞,实训)