编辑代码

#include <stdio.h>
#include <stdlib.h>
#define N 2
#define L 10
struct M //定义菜单部分的结构体
{
    int no;
    char name[10];
    double pr;
    int yn;
    int num;
}me[N+1],nw[N+1];//一个是之前的菜单,一个是更新后的菜单

struct sel//定义点菜部分的结构体
{
    int de;//桌号
    int s[L];//点菜的编号
    int t[l];//菜的数量
}se;

int shuru()
{
    int i;
    FILE *fp;
    if((fp=fopen("menu","wb"))==NULL)
    {
        printf("文件无法打开");
        exit(0);
    }
    for(i=1;i<=N;i++)//输入菜品的信息
    {
        me[i].no=i;//菜品编号自动生成
        scanf("%s %lf %d %d",me.[i].name,&me[i].pr,&me[i].yn,&me[i].num);
        fwrite(&me[i],sizeof(me[i]),1,fp);
    }
    fclose(fp);
    return 0;
}
int diancai()
{
    int i,c,d;
    FILE *fp;
    if((fp=fopen("menu","rb"))==NULL)
    {
        printf("文件无法打开");
        exit(0);
    }
    for(i=1;i<=N;i++)
        fread(&me[i],sizeof(me[i]),1,fp);
    fclose(fp);
    scanf("%d",&se.de);
    fp=fopen("se.de","wb");
    while(1)
    {
        scanf("%d %d",&c,&d);
        for(i=1;i<=N;i++)
        {
            if(me[i].no==c)
            {
                if(me[i].yn==0||me[i].yn<d)//如果菜品数量为0或者小于点菜的数量
                    printf("不可供应\n");
                else
                {
                    se.s[i]=c;
                    se.t[i]=d;
                }
            }
        }
        if(c==0)
            break;
    }
    fwrite(&se,sizeof(se),1,fp);
    fclose(fp);
}
int dele()
{
    FILE *fp;
    int i,dd,j=1;
    if((fp==fopen("menu","rb"))==NULL)
    {
        printf("文件无法打开");
        exit(0);
    }
    scanf("%d",&dd);//这是输入要删除的菜品的编号
    for(i=1;i<=N;i++)
        fread(&me[i],sizeof(me[i]),1,fp);
    fclose(fp);
    fp=fopen("menu","wb");
    for(i=1;i<=N;i++)
    {
        if(dd!=me[i].no)//不是这个要删除的编号
        {
            nw[j]=me[i];//就把它的信息写入新菜单中,是的话就不写,这样就达到了删除的目的。
            j++;
            fwrite(&nu[i],sizeof(se),1,fp);
        }
    }
    fclose(fp);
    return 0;
}