#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");
}