这篇文章给大家介绍使用C语言怎么实现一个餐饮结账管理系统,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 30
struct bill
{
int num; //编号
int time[4]; //时间
int table; //台面号
int count; //顾客数量
char name[20]; //服务生姓名
int money; //实收金额
}bill[M];
int N;
/*菜单*/
void menu()
{
char c;
void input();
void modify();
void deleter();
void search2();
void search3();
void sort();
void income();
void number();
do
{
printf("\n\n\n");
printf(" <<<<餐饮结账管理系统>>>> \n");
printf("----------------------------------------------------\n");
printf("\n\n");
printf("---1录入 2修改 3删除 ----\n\n");
printf("---4台面号查询 5接待服务生查询----\n\n");
printf("---6金额排序 7总收入 8顾客总数 ----\n\n");
printf("--- 0退出 ----\n\n");
printf("---------------------------------------------------\n");
printf("\n\n");
printf("请选择服务(0-8)");
c=getchar();
switch(c)
{
case '1': {input();getchar();break;}
case '2': {modify();getchar();break;}
case '3': {deleter();getchar();break;}
case '4': {search2();getchar();break;}
case '5': {search3();getchar();break;}
case '6': {sort();getchar();break;}
case '7': {income();getchar();break;}
case '8': {number();getchar();break;}
case '0':
{
printf("\n谢谢使用,再见!");
exit(0);
printf("\n");
}
default:
{
printf("\n输入有误,重试!:");
c=getchar();
}
}
}while(1);
}
/*信息录入,将录入的信息存入文件bill中*/
void input()
{
FILE *fp;
int i;
if((fp=fopen("bill","w"))==NULL)
{
printf("cannot open the file\n");
return;
}
printf("输入信息个数(0-%d)?:",M-1);
scanf("%d",&N);
printf("请输入数据:\n");
for(i=0;i<N;i++)
{
printf("输入账单 %d 信息:\n",i+1);
printf("编号:");
scanf("%d",&bill[i].num);
printf("时间(月.日 时:分):");
scanf("%d%d%d%d",&bill[i].time[0],&bill[i].time[1],&bill[i].
time[2],&bill[i].time[3]);
printf("台面号:");
scanf("%d",&bill[i].table);
printf("顾客数量:");
scanf("%d",&bill[i].count);
printf("接待服务生:");
scanf("%s",bill[i].name);
printf("实收金额:");
scanf("%d",&bill[i].money);
}
for(i=0;i<N;i++)
{
if(fwrite(&bill[i],sizeof(struct bill),1,fp)!=1)
{
printf("file write error\n");
return;
}
}
fclose(fp);
}
/*从文件中读取信息并存入数组sbill[N]*/
void readFromFile()
{
int i;
FILE *fp;
if((fp=fopen("bill","rb"))==NULL)
{
printf("cannot open the file\n");
return;
}
for(i=0;i<N;i++)
fread(&bill[i],sizeof(struct bill),1,fp);
fclose(fp);
}
/*保存函数*/
void save()
{
FILE *fp;
int i;
if((fp=fopen("bill","w"))==NULL)
{
printf("cannot open the file\n");
return;
}
for(i=0;i<N;i++)
{
if(bill[i].num!='\0')
if(fwrite(&bill[i],sizeof(struct bill),1,fp)!=1)
{
printf("file write error\n");
return;
}
}
fclose(fp);
}
/*信息全部显示*/
void display_all()
{
int i;
readFromFile();
printf("全部信息:\n");
for(i=0;i<N;i++)
{
printf("编号:%d 时间:%d.%d %d:%d 台面号:%d 顾客数量:%d 接待服务生:%s 实施金额:%d",bill[i].num,bill[i].time[0],bill[i].time[1], bill[i].time[2],bill[i].time[3],bill[i].table,bill[i].count,bill[i].name,bill[i].money);
printf("\n");
}
}
/*单个信息显示*/
void display(int i)
{
printf("编号:%d 时间:%d%d%d%d 台面号:%d 顾客数量:%d 接待服务生:%s 实施金额:%d",bill[i].num,bill[i].time[0],bill[i].time[1],bill[i].time[2],bill[i].time[3],bill[i].table,bill[i].count,bill[i].name,bill[i].money);
}
/* 修改函数调用函数*/
int modify_a(int i)
{
int c,w1;
printf("\n修改选项=>\n\n 1).编号 2).时间 3).台面号 4).顾客数量 5).接待服务生 6).实收金额 7).取消并返回");
printf("请选择?: [ ]");
scanf("%d",&c);
if(c>7||c<1)
{
printf("\n选择错误,请重试");
getchar();
}
do
{
switch(c)
{ case 1: printf("编号:"); scanf("%d",&bill[i].num); break;
case 2:printf("时间:") ; scanf("%d.%d%d:%d",&bill[i].time[0],&bill
[i].time[1],&bill[i].time[2],&bill[i].time[3]);break;
case 3: printf("台面号:"); scanf("%d",&bill[i].table); break;
case 4: printf("顾客数量:"); scanf("%d",&bill[i].count); break;
case 5: printf("接待服务生:"); scanf("%s",bill[i].name); break;
case 6: printf("实收金额:"); scanf("%d",&bill[i].money); break;
case 7: menu();
}
printf("\n现在:\n");
display(i);
printf("\n确定?\n 1).是 2).不,重新修改 3).返回不保存 [ ");
scanf("%d",&w1);
}while(w1==2);
return(w1);
}
/*修改信息*/
void modify()
{
int i,n,k,w0=1,w1;
readFromFile();
do
{
k=-1;
display_all();
do
{
printf("\n输入要修改的编号数\n编号:");
scanf("%d",&n);
for(i=0;i<N;i++)
if(bill[i].num-n==0)
{
k=i;
}
if(k==-1)
printf("\n\n没有记录请重新输入!");
}while(k==-1);
w1=modify_a(k);
if(w1==1)
{
printf("\n 修改成功 \n是否继续? 1).是 2).保存返回 [");
save();
scanf("%d",&w0);
}
}while(w0==1);
}
/*删除记录*/
void deleter()
{
int i,k,n,w0,w1;
readFromFile();
do
{
k=-1;
display_all();
do
{
printf("\n输入要删除的编号:\n");
scanf("%d",&n);
for(i=0;i<N;i++)
if(n-bill[i].num==0)
{
k=i;
}
if(k==-1)
printf("\n无记录,请重新输入!\n");
}while(k==-1);
display(i);
printf("\n确定删除? 1)是 2)返回\n [");
scanf("%d",&w0);
if(w0==1)
{
for(i=k;i<N;i++)
{
bill[i]=bill[i+1];
save();
}
}
else break;
display_all();
printf("\n删除成功,是否继续? 1)是 2)返回 [ ");
scanf("%d",&w1);
}while(w1==1);
}
/*台面号查询*/
void search2()
{
int i,j,w0;
int number;
readFromFile();
do
{
j=-1;
printf("\n请输入台面号查询:");
scanf("%d",&number);
for(i=0;i<N;i++)
{
if(number==bill[i].table)
{
j=i;
display(j);
printf("\n");
}
}
if(j==-1)
printf("无此号!");
printf("\n继续? 1)是 2)返回 [");
scanf("%d",&w0);
}while(w0==1);
}
/*接待服务生查询*/
void search3()
{
char a[20];
int i,j,w0;
do
{
j=-1;
printf("\n请输入接待服务生姓名查询:");
scanf("%s",a);
for(i=0;i<N;i++)
{
if(strcmp(bill[i].name,a)==0)
{
j=i;
display(j);
printf("\n");
}
}
if(j==-1)
printf("无此姓名!");
printf("\n继续? 1)是 2)返回 [ ");
scanf("%d",&w0);
}while(w0==1);
}
/*金额排序*/
void sort()
{
int i,j,w0;
struct bill t;
readFromFile();
printf("\n\n");
for(j=0;j<N-1;j++)
for(i=0;i<N-1-j;i++)
if(bill[i].money<bill[i+1].money)
{
t=bill[i];
bill[i]=bill[i+1]; /*调换bill[i]与bill[i+1]的值*/
bill[i+1]=t;
}
printf("由大到小为:\n");
for(i=0;i<N;i++)
{
display(i);
printf("\n");
}
do
{
printf("\n返回? 1)是 2)否");
scanf("%d",&w0);
}while(w0==2);
}
/*总收入统计*/
void income()
{
int i,sum=0,w0;
readFromFile();
for(i=0;i<N;i++)
sum=sum+bill[i].money;
printf("\n\n");
printf("总收入:%d",sum);
do
{
printf("\n返回? 1)是 2)否");
scanf("%5d",&w0);
}while(w0==2);
}
/*顾客总数统计*/
void number()
{
int i,number=0,w0;
readFromFile();
for(i=0;i<N;i++)
number=number+bill[i].count;
printf("\n\n");
printf("顾客总数:%d",number);
do
{
printf("\n返回? 1)是 2)否");
scanf("%5d",&w0);
}while(w0==2);
}
/*主函数*/
void main()
{
menu();
}
关于使用C语言怎么实现一个餐饮结账管理系统就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。