這篇文章給大家介紹使用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語言怎么實現一個餐飲結賬管理系統就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。