C語言實(shí)現(xiàn)餐飲結(jié)賬管理系統(tǒng)
本文實(shí)例為大家分享了C語言餐飲結(jié)賬管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
使用C語言編寫餐飲結(jié)賬管理系統(tǒng)課程設(shè)計(jì),包含設(shè)計(jì)報(bào)告,源代碼.
#include<stdio.h> #include<string.h> #include<stdlib.h> #define M 30 struct bill { int num; //編號(hào) int time[4]; //時(shí)間 int table; //臺(tái)面號(hào) int count; //顧客數(shù)量 char name[20]; //服務(wù)生姓名 int money; //實(shí)收金額 }bill[M]; int N; /*菜單*/ void menu() { char c; void input(); void modify(); void deleter(); void search1(); void search2(); void sort(); void income(); void number(); do { printf("\n\n\n"); printf(" <<<<餐飲結(jié)賬管理系統(tǒng)>>>> \n"); printf("----------------------------------------------------\n"); printf("\n\n"); printf("---1錄入 2修改 3刪除 ----\n\n"); printf("---4臺(tái)面號(hào)查詢 5接待服務(wù)生查詢----\n\n"); printf("---6金額排序 7總收入 8顧客總數(shù) ----\n\n"); printf("--- 0退出 ----\n\n"); printf("---------------------------------------------------\n"); printf("\n\n"); printf("請(qǐng)選擇服務(wù)(0-8)"); c=getchar(); switch(c) { case '1': {input();getchar();break;} case '2': {modify();getchar();break;} case '3': {deleter();getchar();break;} case '4': {search1();getchar();break;} case '5': {search2();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("輸入信息個(gè)數(shù)(0-%d)?:",M-1); scanf("%d",&N); printf("請(qǐng)輸入數(shù)據(jù):\n"); for(i=0;i<N;i++) { printf("輸入賬單 %d 信息:\n",i+1); printf("編號(hào):"); scanf("%d",&bill[i].num); printf("時(shí)間(月.日 時(shí):分):"); scanf("%d%d%d%d",&bill[i].time[0],&bill[i].time[1],&bill[i]. time[2],&bill[i].time[3]); printf("臺(tái)面號(hào):"); scanf("%d",&bill[i].table); printf("顧客數(shù)量:"); scanf("%d",&bill[i].count); printf("接待服務(wù)生:"); scanf("%s",bill[i].name); printf("實(shí)收金額:"); 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); } /*從文件中讀取信息并存入數(shù)組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); } /*保存函數(shù)*/ 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("編號(hào):%d 時(shí)間:%d.%d %d:%d 臺(tái)面號(hào):%d 顧客數(shù)量:%d 接待服務(wù)生:%s 實(shí)施金額:%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"); } } /*單個(gè)信息顯示*/ void display(int i) { printf("編號(hào):%d 時(shí)間:%d%d%d%d 臺(tái)面號(hào):%d 顧客數(shù)量:%d 接待服務(wù)生:%s 實(shí)施金額:%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); } /* 修改函數(shù)調(diào)用函數(shù)*/ int modify_a(int i) { int c,w1; printf("\n修改選項(xiàng)=>\n\n 1).編號(hào) 2).時(shí)間 3).臺(tái)面號(hào) 4).顧客數(shù)量 5).接待服務(wù)生 6).實(shí)收金額 7).取消并返回"); printf("請(qǐng)選擇?: [ ]"); scanf("%d",&c); if(c>7||c<1) { printf("\n選擇錯(cuò)誤,請(qǐng)重試"); getchar(); } do { switch(c) { case 1: printf("編號(hào):"); scanf("%d",&bill[i].num); break; case 2:printf("時(shí)間:") ; 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("臺(tái)面號(hào):"); scanf("%d",&bill[i].table); break; case 4: printf("顧客數(shù)量:"); scanf("%d",&bill[i].count); break; case 5: printf("接待服務(wù)生:"); scanf("%s",bill[i].name); break; case 6: printf("實(shí)收金額:"); scanf("%d",&bill[i].money); break; case 7: menu(); } printf("\n現(xià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輸入要修改的編號(hào)數(shù)\n編號(hào):"); scanf("%d",&n); for(i=0;i<N;i++) if(bill[i].num-n==0) { k=i; } if(k==-1) printf("\n\n沒有記錄請(qǐng)重新輸入!"); }while(k==-1); w1=modify_a(k); if(w1==1) { printf("\n 修改成功 \n是否繼續(xù)? 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輸入要?jiǎng)h除的編號(hào):\n"); scanf("%d",&n); for(i=0;i<N;i++) if(n-bill[i].num==0) { k=i; } if(k==-1) printf("\n無記錄,請(qǐng)重新輸入!\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刪除成功,是否繼續(xù)? 1)是 2)返回 [ "); scanf("%d",&w1); }while(w1==1); } /*臺(tái)面號(hào)查詢*/ void search1() { int i,j,w0; int number; readFromFile(); do { j=-1; printf("\n請(qǐng)輸入臺(tái)面號(hào)查詢:"); scanf("%d",&number); for(i=0;i<N;i++) { if(number==bill[i].table) { j=i; display(j); printf("\n"); } } if(j==-1) printf("無此號(hào)!"); printf("\n繼續(xù)? 1)是 2)返回 ["); scanf("%d",&w0); }while(w0==1); } /*接待服務(wù)生查詢*/ void search2() { char a[20]; int i,j,w0; do { j=-1; printf("\n請(qǐng)輸入接待服務(wù)生姓名查詢:"); 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繼續(xù)? 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]; /*調(diào)換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); } /*總收入統(tǒng)計(jì)*/ 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); } /*顧客總數(shù)統(tǒng)計(jì)*/ void number() { int i,number=0,w0; readFromFile(); for(i=0;i<N;i++) number=number+bill[i].count; printf("\n\n"); printf("顧客總數(shù):%d",number); do { printf("\n返回? 1)是 2)否"); scanf("%5d",&w0); }while(w0==2); } /*主函數(shù)*/ void main() { menu(); }
更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語言實(shí)現(xiàn)餐飲點(diǎn)餐管理系統(tǒng)
- 基于C語言實(shí)現(xiàn)點(diǎn)餐系統(tǒng)
- 餐館點(diǎn)菜系統(tǒng)C語言源代碼
- C語言實(shí)現(xiàn)點(diǎn)餐系統(tǒng)
- C語言實(shí)現(xiàn)餐飲管理與點(diǎn)餐系統(tǒng)
- C語言實(shí)現(xiàn)食堂就餐管理系統(tǒng)(帶鏈表)
- C語言代碼實(shí)現(xiàn)點(diǎn)餐系統(tǒng)
- C語言實(shí)現(xiàn)電話訂餐管理系統(tǒng)
- 基于C語言代碼實(shí)現(xiàn)點(diǎn)餐系統(tǒng)
- C語言實(shí)現(xiàn)餐廳點(diǎn)餐系統(tǒng)
相關(guān)文章
C語言實(shí)現(xiàn)靜態(tài)版通訊錄的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用C語言實(shí)現(xiàn)一個(gè)簡單的靜態(tài)版通訊錄,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語言有一定幫助,需要的可以參考一下2022-08-08C語言使用函數(shù)實(shí)現(xiàn)字符串部分復(fù)制問題
這篇文章主要介紹了C語言使用函數(shù)實(shí)現(xiàn)字符串部分復(fù)制問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11C++實(shí)現(xiàn)LeetCode(187.求重復(fù)的DNA序列)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(187.求重復(fù)的DNA序列),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++之CNoTrackObject類和new delete操作符的重載實(shí)例
這篇文章主要介紹了C++之CNoTrackObject類和new delete操作符的重載實(shí)例,是C++程序設(shè)計(jì)中比較重要的概念,需要的朋友可以參考下2014-10-10