美好时光447 2021-12-26 19:32 采纳率: 100%
浏览 21
已结题

C语言(电话订餐)运行崩溃怎么改

#include<stdio.h>
#include<windows.h> //清屏函数
#include<conio.h> //getch
#include<string.h>
struct Reserve
{
char number[20];
char name[10];
char phone[11];
int sum;
int time;
char table;
};
struct Reserve guest[20]={0};

void Input(struct Reserve *p);  //输入
void Display(struct Reserve *p);  //排序
void Modify(struct Reserve *p);  //统计
void Find(struct Reserve *p);  //查询
void Add(struct Reserve *p);  //修改  结构体=结构体 
void Delect(struct Reserve *p);  //删除

main()
{
char i;
for(; ;)
{
system("cls");
printf("* * * * * Menue * * * * \n");
printf("
a. Input \n");
printf("
b. Display \n");
printf("
c. Modify \n");
printf("
d. Find \n");
printf("
e. Add \n");
printf("
f. Delect \n");
printf("
g. Exit \n");
printf("
Please select a to g \n");
printf("
* * * * * * * * * * * * *\n");
i=getch();
if(i=='g')
{
int i;
printf("请确认是否退出(退出请按1)\n");
scanf("%d",&i);
if(i==1) break;
}
else switch(i)
{
case 'a': Input(guest);break;
case 'b': Display(guest);break;
case 'c': Modify(guest);break;
case 'd': Find(guest); break;
case 'e':
int m;
printf("请确认是否修改(修改请按1)\n");
scanf("%d",&m);
if(m==1) Add(guest);
break;
case 'f':
int n;
printf("请确认是否删除(删除请按1)\n");
scanf("%d",&n);
if(n==1)Delect(guest);
break;
default:printf("请重新输入\n");break;
}
i=getch();
}
}

int w=0;
void Input(struct Reserve *p)
{
system("cls");
int main();
int i;
printf("请输入编号(不能为0)\n");
scanf("%s",p[w].number);
for(i=0;p[i].number==0;i++) //判断重复
{
if(p[w].number==p[w+1].number )
{
printf("编号已存在,请重新输入\n");
scanf("%s",p[w].number);
}
}
printf("请输入姓名\n");
scanf("%s",p[w].name);
printf("请输入电话\n");
gets(p[w].phone);
printf("请输入用餐时间\n");
scanf("%d",p[w].time);
printf("请输入用餐人数\n");
scanf("%d",p[w].sum);
static int a=1,b=1,c=1; //静态存储
if(p[w].sum>7&&p[w].sum<11&&a<6)
{p[w].table='A';a++;}
else if(p[w].sum>4&&p[w].sum<8&&b<6)
{p[w].table='B';b++;}
else if(p[w].sum>0&&p[w].sum<5&&c<6)
{p[w].table='C';c++;}
else printf("订餐失败\n");
w++;
}

void Display(struct Reserve *p)
{
system("cls");
int n;
printf("请选择排序方式:\n");
printf("a.按录入时间排序\n");
printf("b.按订餐者姓名\n");
printf("c.按订餐编号排序\n");
char i;
i=getch();
if(i=='a')
{
printf(" 编号 姓名 电话 用餐时间 人数 餐桌号\n");
for(n=0;p[n].number==0;n++)
printf("%-5s%-5s%-12s%-3d%-5d%-5s\n",&guest[n].number,&guest[n].name,&guest[n].phone,&guest[n].time,&guest[n].sum,&guest[n].table);
}
else if(i=='b')
{
struct Reserve r[20],t;
r[20]=guest[20];
int i,j;
for(i=0;r[i].name!=0;i++)
{
for(j=0;r[j].name!=0;j++)
{
if(strcmp(r[j].name,r[j+1].name)>0)
{
t=r[j];
r[j]=r[j+1];
r[j+1]=t;
}
}
}
printf(" 编号 姓名 电话 用餐时间 人数 餐桌号\n");
for(i=0;r[i].number==0;i++)
{
printf("%-5s%-5s%-12s%-3d%-5d%-5s\n",&guest[n].number,&guest[n].name,&guest[n].phone,&guest[n].time,&guest[n].sum,&guest[n].table);
}
}
else if(i=='c')
{
struct Reserve r[20],t;
r[20]=guest[20];
int i,j;
for(i=0;r[i].number==0;i++)
{
for(j=0;r[j].number==0;j++)
{
if(strcmp(r[j].number,r[j+1].number)>0)
{
t=r[j];
r[j]=r[j+1];
r[j+1]=t;
}
}
}
printf(" 编号 姓名 电话 用餐时间 人数 餐桌号\n");
for(i=0;r[i].number==0;i++)
{
printf("%-5s%-5s%-12s%-3d%-5d%-5s\n",&guest[n].number,&guest[n].name,&guest[n].phone,&guest[n].time,&guest[n].sum,&guest[n].table);
}
}
else
{
printf("输入错误的字母,请检查\n");
system("pause");
}
}

void Modify(struct Reserve *p)
{
system("cls");
printf("请输入统计方式\n");
printf("a.大、中、小桌已定数量\n");
printf("b.某时间段的订餐次数\n");
char i;
i=getch();
if(i=='a')
{
int n;
int a=0,b=0,c=0;
for(n=0;p[n].table==0;n++)
{
switch(p[n].table)
{
case 'A':a++;
case 'B':b++;
case 'C':c++;
}
printf("大桌共预定%d桌,中桌共预定%d桌,小桌共预定%d桌\n总共%d桌\n",a,b,c,a+b+c);
}
}
else if(i=='b')
{
int i,n,sum=0;
printf("请输入需查询的时间\n");
scanf("%d",&i);
for(n=0;p[n].table==0;n++)
{
if(i==p[n].time) sum++;
}
printf("%d点已预定%d桌\n",i,sum);
}
else printf("输入错误\n");
}

void Find(struct Reserve *p)
{
system("cls");
printf("请输入查询内容\n");
printf("a.按编号查询\n");
printf("b.按姓名查询\n");
printf("c.查询某时间内剩余桌位\n");
char i;
i=getch();
if(i=='a')
{
int n,o=0;
char i[20];
printf("请输入编号\n");
gets(i);
for(n=0;p[n].number==0;n++)
{
if(!strcmp(i,p[n].number))
{
printf(" 编号 姓名 电话 用餐时间 人数 餐桌号\n");
printf("%-5s%-5s%-12s%-3d%-5d%-5s",p[n].number,p[n].name,p[n].phone,p[n].time,p[n].sum,p[n].table);
o=1;
}
}
if(o==0)
printf ("查无此人\n");
}
else if(i=='b')
{
char i[10];
int n,o=0;
printf("请输入要查询的姓名\n");
gets(i);
for(n=0;p[n].name==0;n++)
{
if(!strcmp(i,p[n].name))
printf(" 编号 姓名 电话 用餐时间 人数 餐桌号\n");
printf("%-5s%-5s%-12s%-3d%-5d%-5s",p[n].number,p[n].name,p[n].phone,p[n].time,p[n].sum,p[n].table);
o=1;
}
if(o==0)
printf("查无此人\n");
}
else if(i=='c')
{
int i,n,m=0;
int a=0,b=0,c=0;
printf("请输入要查询的时间\n");
scanf("%d",&i);
for(n=0;p[n].time==0;n++)
{
if(i==p[n].time)
{
switch(p[n].table)
{
case 'A':a++; break;
case 'B':b++; break;
case 'C':c++; break;
}
}
}
printf("大桌还剩%d桌,中桌还剩%d桌,小桌还剩%d桌\n",5-a,5-b,5-c) ;
}
else printf("输入错误\n");
}

void Add(struct Reserve *p)
{
system("cls");
char i[20];
int n,m=0;
struct Reserve r;
printf("请输入需要修改的编号\n");
gets(i);
for(n=0;p[n].number==0;n++)
{
if(!strcmp(i,p[n].number))
{
Input(&r);
p[n]=r;
m=1;
}
}
if(m==0) printf("查无此编号\n");
}

void Delect(struct Reserve *p)
{
system("cls");
char i[20];
int n,m=0;
printf("请输入需删除的编号\n");
gets(i);
for(n=0;p[n].number==0;n++)
{
if(!strcmp(i,p[n].number))
{
for(;p[n+1].number==0;n++)
{
p[n]=p[n+1];
}
m=1;
}
}
if(m==0) printf("查无此编号\n");
}

  • 写回答

4条回答 默认 最新

  • fuill 2021-12-26 21:14
    关注

    img

    #include<stdio.h>
    #include<windows.h> //清屏函数
    #include<conio.h> //getch
    #include<string.h>
    struct Reserve
    {
    char number[20];
    char name[10];
    char phone[11];
    int sum;
    int time;
    char table;
    };
    struct Reserve guest[20]={0};
    
    void Input(struct Reserve *p);  //输入
    void Display(struct Reserve *p);  //排序
    void Modify(struct Reserve *p);  //统计
    void Find(struct Reserve *p);  //查询
    void Add(struct Reserve *p);  //修改  结构体=结构体 
    void Delect(struct Reserve *p);  //删除
    main()
    {
    char i;
    for(; ;)
    {
    system("cls");
    printf("* * * * * Menue * * * * \n");
    printf(" a. Input \n");
    printf(" b. Display \n");
    printf(" c. Modify \n");
    printf(" d. Find \n");
    printf(" e. Add \n");
    printf(" f. Delect \n");
    printf(" g. Exit \n");
    printf(" Please select a to g \n");
    printf(" * * * * * * * * * * * * *\n");
    i=getch();
    if(i=='g')
    {
    int i;
    printf("请确认是否退出(退出请按1)\n");
    scanf("%d",&i);
    if(i==1) break;
    }
    else switch(i)
    {
    case 'a': Input(guest);break;
    case 'b': Display(guest);break;
    case 'c': Modify(guest);break;
    case 'd': Find(guest); break;
    case 'e':; 
    int m;
    printf("请确认是否修改(修改请按1)\n");
    scanf("%d",&m);
    if(m==1) Add(guest);
    break;
    case 'f':;
    int n;
    printf("请确认是否删除(删除请按1)\n");
    scanf("%d",&n);
    if(n==1)Delect(guest);
    break;
    default:printf("请重新输入\n");break;
    }
    i=getch();
    }
    }
    
    int w=0;
    void Input(struct Reserve *p)
    {
    system("cls");
    int main();
    int i;
    printf("请输入编号(不能为0)\n");
    scanf("%s",p[w].number);
    for(i=0;p[i].number==0;i++) //判断重复
    {
    if(p[w].number==p[w+1].number )
    {
    printf("编号已存在,请重新输入\n");
    scanf("%s",p[w].number);
    }
    }
    printf("请输入姓名\n");
    scanf("%s",p[w].name);
    printf("请输入电话\n");
    gets(p[w].phone);
    getchar();
    getchar();
    printf("请输入用餐时间\n");
    scanf("%d",&p[w].time);
    printf("请输入用餐人数\n");
    scanf("%d",&p[w].sum);
    static int a=1,b=1,c=1; //静态存储
    if(p[w].sum>7&&p[w].sum<11&&a<6)
    {p[w].table='A';a++;}
    else if(p[w].sum>4&&p[w].sum<8&&b<6)
    {p[w].table='B';b++;}
    else if(p[w].sum>0&&p[w].sum<5&&c<6)
    {p[w].table='C';c++;}
    else printf("订餐失败\n");
    w++;
    }
    
    void Display(struct Reserve *p)
    {
    system("cls");
    int n;
    printf("请选择排序方式:\n");
    printf("a.按录入时间排序\n");
    printf("b.按订餐者姓名\n");
    printf("c.按订餐编号排序\n");
    char i;
    i=getch();
    if(i=='a')
    {
    printf(" 编号 姓名 电话 用餐时间 人数 餐桌号\n");
    for(n=0;p[n].number==0;n++)
    printf("%-5s%-5s%-12s%-3d%-5d%-5s\n",&guest[n].number,&guest[n].name,&guest[n].phone,&guest[n].time,&guest[n].sum,&guest[n].table);
    }
    else if(i=='b')
    {
    struct Reserve r[20],t;
    r[20]=guest[20];
    int i,j;
    for(i=0;r[i].name!=0;i++)
    {
    for(j=0;r[j].name!=0;j++)
    {
    if(strcmp(r[j].name,r[j+1].name)>0)
    {
    t=r[j];
    r[j]=r[j+1];
    r[j+1]=t;
    }
    }
    }
    printf(" 编号 姓名 电话 用餐时间 人数 餐桌号\n");
    for(i=0;r[i].number==0;i++)
    {
    printf("%-5s%-5s%-12s%-3d%-5d%-5s\n",&guest[n].number,&guest[n].name,&guest[n].phone,&guest[n].time,&guest[n].sum,&guest[n].table);
    }
    }
    else if(i=='c')
    {
    struct Reserve r[20],t;
    r[20]=guest[20];
    int i,j;
    for(i=0;r[i].number==0;i++)
    {
    for(j=0;r[j].number==0;j++)
    {
    if(strcmp(r[j].number,r[j+1].number)>0)
    {
    t=r[j];
    r[j]=r[j+1];
    r[j+1]=t;
    }
    }
    }
    printf(" 编号 姓名 电话 用餐时间 人数 餐桌号\n");
    for(i=0;r[i].number==0;i++)
    {
    printf("%-5s%-5s%-12s%-3d%-5d%-5s\n",&guest[n].number,&guest[n].name,&guest[n].phone,&guest[n].time,&guest[n].sum,&guest[n].table);
    }
    }
    else
    {
    printf("输入错误的字母,请检查\n");
    system("pause");
    }
    }
    
    void Modify(struct Reserve *p)
    {
    system("cls");
    printf("请输入统计方式\n");
    printf("a.大、中、小桌已定数量\n");
    printf("b.某时间段的订餐次数\n");
    char i;
    i=getch();
    if(i=='a')
    {
    int n;
    int a=0,b=0,c=0;
    for(n=0;p[n].table==0;n++)
    {
    switch(p[n].table)
    {
    case 'A':a++;
    case 'B':b++;
    case 'C':c++;
    }
    printf("大桌共预定%d桌,中桌共预定%d桌,小桌共预定%d桌\n总共%d桌\n",a,b,c,a+b+c);
    }
    }
    else if(i=='b')
    {
    int i,n,sum=0;
    printf("请输入需查询的时间\n");
    scanf("%d",&i);
    for(n=0;p[n].table==0;n++)
    {
    if(i==p[n].time) sum++;
    }
    printf("%d点已预定%d桌\n",i,sum);
    }
    else printf("输入错误\n");
    }
    
    void Find(struct Reserve *p)
    {
    system("cls");
    printf("请输入查询内容\n");
    printf("a.按编号查询\n");
    printf("b.按姓名查询\n");
    printf("c.查询某时间内剩余桌位\n");
    char i;
    i=getch();
    if(i=='a')
    {
    int n,o=0;
    char i[20];
    printf("请输入编号\n");
    gets(i);
    for(n=0;p[n].number==0;n++)
    {
    if(!strcmp(i,p[n].number))
    {
    printf(" 编号 姓名 电话 用餐时间 人数 餐桌号\n");
    printf("%-5s%-5s%-12s%-3d%-5d%-5s",p[n].number,p[n].name,p[n].phone,p[n].time,p[n].sum,p[n].table);
    o=1;
    }
    }
    if(o==0)
    printf ("查无此人\n");
    }
    else if(i=='b')
    {
    char i[10];
    int n,o=0;
    printf("请输入要查询的姓名\n");
    gets(i);
    for(n=0;p[n].name==0;n++)
    {
    if(!strcmp(i,p[n].name))
    printf(" 编号 姓名 电话 用餐时间 人数 餐桌号\n");
    printf("%-5s%-5s%-12s%-3d%-5d%-5s",p[n].number,p[n].name,p[n].phone,p[n].time,p[n].sum,p[n].table);
    o=1;
    }
    if(o==0)
    printf("查无此人\n");
    }
    else if(i=='c')
    {
    int i,n,m=0;
    int a=0,b=0,c=0;
    printf("请输入要查询的时间\n");
    scanf("%d",&i);
    for(n=0;p[n].time==0;n++)
    {
    if(i==p[n].time)
    {
    switch(p[n].table)
    {
    case 'A':a++; break;
    case 'B':b++; break;
    case 'C':c++; break;
    }
    }
    }
    printf("大桌还剩%d桌,中桌还剩%d桌,小桌还剩%d桌\n",5-a,5-b,5-c) ;
    }
    else printf("输入错误\n");
    }
    
    void Add(struct Reserve *p)
    {
    system("cls");
    char i[20];
    int n,m=0;
    struct Reserve r;
    printf("请输入需要修改的编号\n");
    gets(i);
    for(n=0;p[n].number==0;n++)
    {
    if(!strcmp(i,p[n].number))
    {
    Input(&r);
    p[n]=r;
    m=1;
    }
    }
    if(m==0) printf("查无此编号\n");
    }
    
    void Delect(struct Reserve *p)
    {
    system("cls");
    char i[20];
    int n,m=0;
    printf("请输入需删除的编号\n");
    gets(i);
    for(n=0;p[n].number==0;n++)
    {
    if(!strcmp(i,p[n].number))
    {
    for(;p[n+1].number==0;n++)
    {
    p[n]=p[n+1];
    }
    m=1;
    }
    }
    if(m==0) printf("查无此编号\n");
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 1月4日
  • 已采纳回答 12月27日
  • 创建了问题 12月26日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法