C語言餐飲結賬管理系統設計_第1頁
C語言餐飲結賬管理系統設計_第2頁
C語言餐飲結賬管理系統設計_第3頁
C語言餐飲結賬管理系統設計_第4頁
C語言餐飲結賬管理系統設計_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言程序設計課程設計報告設計題目:餐飲結賬管理系統設計 1 設計任務1.1 設計題目的描述功能:餐飲結賬信息包括:編號、時間、臺面號、顧客數量、接待服務生、實收金額。試設計一餐飲結賬管理系統,使之能提供以下功能:1結賬信息錄入、修改、刪除功能;2查詢瀏覽功能:按臺面號查詢、按接待服務生查詢;3 按照實收金額排序。4統計總收入、顧客總數等功能。1.2 設計要求(1)仔細審題,明確題目要求。(2)按照結構化的程序設計思想,將程序模塊化,將相對獨立的功能寫成函數。(3)要求編程、調試通過并演示;程序編寫規范,添加適當注釋。(4)按照課程設計報告的內容和格式要求,撰寫課程設計報告,并且打印。2 設計

2、方案說明2.1 數據的存儲結構餐飲結賬信息包括:編號、時間、臺面號、顧客數量、接待服務生、實收金額。因此需要使用結構體,而結賬信息又不止是一個,所以使用結構體數組,這里定義結構體struct bill,定義數組billM。struct billint num; /編號int time4; /時間int table; /臺面號int count; /顧客數量char name20; /服務生姓名int money; /實收金額billM;2.2函數之間的調用關系說明 main menuInputmodifydeletersearchsearch2sortincomenumbermodify_as

3、aveDisplay_allreadFromFiledisplay2.3函數說明1)函數 void menu() void menu() 菜單函數 此函數為主菜單,從此處進入其他模塊。 變量 c :使用c選擇進入其它功能。C=1?是 否 C=2?執行 是 否Input 執行 C= Modify 2)函數void input()void input() 信息錄入,將錄入的信息存入文件bill中此函數將從鍵盤輸入的信息錄入文件bill中。使用scanf輸入結構體中各個量;打開文件bill成功選擇輸入的信息個數N輸入第i個信息直到i>=N保存并關閉文件3)函數 void readFromFil

4、e()void readFromFile() 從文件中讀取信息并存入數組bill30此函數將文件bill中信息讀出并存入bill打開文件讀第i個文件直到i>=N關閉文件4)函數 void save()void save() /*保存函數*/此函數用于在修改與刪除后保存數據。打開文件寫入第i個文件直到i>=N關閉文件5)函數 void display_all() void display_all() 信息全部顯示通過此函數可顯示所有輸入信息。readFromFile()讀取文件中信息printf顯示第i個信息直到i<=N6)函數 void display(int i)void

5、display(int i) 單個信息顯示 i為要修改的信息號從modify函數中讀入此函數用于在修改等功能后顯示第i個信息,用于核對。用printf顯示第i個信息的所有數據 7)函數 int modify_a(int i)int modify_a(int i) 修改主函數時調用此函數此函數用于修改其中一個或多個信息,并返回一個數值用于確定是否修改。 變量c用于確定修改項目從鍵盤輸入一個C的值c>7|c<1是 否錯誤 w1=2重試 c=1是 否輸入新信息 c=顯示修改后第i個信息輸入w1的值返回值w18) 函數 void modify()void modify() 修改信息主函數此

6、函數用于修改其中一個信息并保存從文件bill中讀入數據w0=1k=-1輸入n的值 循環判斷billi.num-n=0?是 否k=i k=-1輸出無記錄w1=modify_a(k);w1=1?是 否保存 輸入w0值 結束 9)函數 void deleter()void deleter() 刪除記錄此函數用于刪除記錄中的一條信息。從文件bill中讀入信息w1=1k=-1輸入n 循環判斷n-billi.num=0? 是 否k=i k=-1無記錄display(i)輸入w0 w0=1?是 否billi=billi+1; save(); 結束輸入w1值10)函數 void search1()void s

7、earch1() 臺面號查詢此函數用于按臺面號查詢信息并輸出信息。從文件bill中讀入信息w0=1輸入number循環判斷number=billi.table?是 否j=i j=-1display(j) 無此號輸入w0的值 11)函數 void search2()void search2() 接待服務生查詢此函數用于按接待服務生姓名查詢信息并顯示。從文件bill中讀入信息w0=1輸入a20循環判斷strcmp(,a)=0?是 否j=i j=-1display(j) 無此姓名輸入w0的值12)函數 void sort()void sort() 金額排序此函數用于按金額對所有信

8、息進行排序并輸出。關鍵變量struct bill t 為中間變量,用于交換billi與billi+1的值。從文件bill中讀取文件billi.money>billi+1.money)是 否t=billi;billi=billi+1;billi+1=t; 不變i=0 i<N-1-j i+j=0 j<N-1 j+display(i)i=0 i<N i+w0=2輸入w0的值判斷是否返回13)函數 void income()void income() 總收入統計此函數用于統計總收入并輸出。關鍵變量sum用于統計總收入從文件bill中讀取文件sum=sum+billi.money

9、i=0;i<N;i+輸出sumw0=2輸入w0的值判斷是否返回14)函數 void number()void number() 顧客總數統計此函數用于統計顧客總數。關鍵變量number用于統計顧客總數從文件bill中讀取文件number=number+billi.count;i=0;i<N;i+輸出numberw0=2輸入w0的值判斷是否返回3設計題目源代碼清單#include<stdio.h>#include<string.h>#include<stdlib.h>#define M 30struct billint num; /編號int ti

10、me4; /時間int table; /臺面號int count; /顧客數量char name20; /服務生姓名int money; /實收金額billM;int N;/*菜單*/void menu() char c;void input();void modify();void deleter();void search1();void search2();void sort();void income(); void number();doprintf("nnn"); printf(" <<<<餐飲結賬管理系統>>>

11、;> n"); printf("-n"); printf("nn"); printf("-1錄入 2修改 3刪除 -nn"); printf("-4臺面號查詢 5接待服務生查詢-nn"); printf("-6金額排序 7總收入 8顧客總數 -nn"); printf("- 0退出 -nn"); printf("-n"); printf("nn"); printf("請選擇服務(0-8)"); c=g

12、etchar(); 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'

13、: 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",

14、"w")=NULL) printf("cannot open the filen"); 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",&billi.num); printf(&q

15、uot;時間(月.日 時:分):"); scanf("%d%d%d%d",&billi.time0,&billi.time1,&billi.time2,&billi.time3); printf("臺面號:"); scanf("%d",&billi.table); printf("顧客數量:"); scanf("%d",&billi.count); printf("接待服務生:"); scanf("%s&qu

16、ot;,); printf("實收金額:"); scanf("%d",&billi.money); for(i=0;i<N;i+) if(fwrite(&billi,sizeof(struct bill),1,fp)!=1) printf("file write errorn"); return; fclose(fp);/*從文件中讀取信息并存入數組sbillN*/void readFromFile() int i;FILE *fp; if(fp=fopen("bill",

17、"rb")=NULL) printf("cannot open the filen"); return; for(i=0;i<N;i+) fread(&billi,sizeof(struct bill),1,fp); fclose(fp);/*保存函數*/void save()FILE *fp; int i; if(fp=fopen("bill","w")=NULL) printf("cannot open the filen"); return; for(i=0;i<N;i

18、+) if(billi.num!='0') if(fwrite(&billi,sizeof(struct bill),1,fp)!=1) printf("file write errorn"); 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&

19、quot;,billi.num,billi.time0,billi.time1, billi.time2,billi.time3,billi.table,billi.count,,billi.money); printf("n");/*單個信息顯示*/void display(int i) printf("編號:%d 時間:%d%d%d%d 臺面號:%d 顧客數量:%d 接待服務生:%s 實施金額:%d",billi.num,billi.time0,billi.time1,billi.time2,billi.time3,billi.t

20、able,billi.count,,billi.money);/* 修改函數調用函數*/int modify_a(int i) int c,w1; printf("n修改選項=>nn 1).編號 2).時間 3).臺面號 4).顧客數量 5).接待服務生 6).實收金額 7).取消并返回"); printf("請選擇?: "); scanf("%d",&c); if(c>7|c<1) printf("n選擇錯誤,請重試"); getchar();do switch(c)

21、 case 1: printf("編號:"); scanf("%d",&billi.num); break; case 2:printf("時間:") ; scanf("%d.%d%d:%d",&billi.time0,&billi.time1,&billi.time2,&billi.time3);break;case 3: printf("臺面號:"); scanf("%d",&billi.table); break; cas

22、e 4: printf("顧客數量:"); scanf("%d",&billi.count); break; case 5: printf("接待服務生:"); scanf("%s",); break; case 6: printf("實收金額:"); scanf("%d",&billi.money); break; case 7: menu(); printf("n現在:n"); display(i); printf(

23、"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(billi.num-n=0) k=i; if(k=-1)

24、 printf("nn沒有記錄請重新輸入!");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(); dok=-1;display_all();do printf("n輸入要刪除的編號:n"); scanf("%d&q

25、uot;,&n); for(i=0;i<N;i+) if(n-billi.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+)billi=billi+1; save();else break; display_all();printf("n刪除成功,是否繼續? 1)是 2)返回 &

26、quot;);scanf("%d",&w1);while(w1=1);/*臺面號查詢*/void search1() int i,j,w0; int number; readFromFile(); do j=-1; printf("n請輸入臺面號查詢:"); scanf("%d",&number); for(i=0;i<N;i+) if(number=billi.table) j=i; display(j); printf("n"); if(j=-1) printf("無此號!&qu

27、ot;); printf("n繼續? 1)是 2)返回 "); scanf("%d",&w0); while(w0=1);/*接待服務生查詢*/void search2() char a20; int i,j,w0; do j=-1; printf("n請輸入接待服務生姓名查詢:"); scanf("%s",a); for(i=0;i<N;i+) if(strcmp(,a)=0) j=i; display(j); printf("n"); if(j=-1) pr

28、intf("無此姓名!"); printf("n繼續? 1)是 2)返回 "); scanf("%d",&w0); while(w0=1);/*金額排序*/void sort()int i,j,w0;struct bill t; readFromFile(); printf("nn");for(j=0;j<N-1;j+)for(i=0;i<N-1-j;i+)if(billi.money<billi+1.money)t=billi; billi=billi+1; /*調換billi與bill

29、i+1的值*/ billi+1=t; printf("由大到小為:n");for(i=0;i<N;i+)display(i);printf("n"); doprintf("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+billi.money; printf("nn");printf(&

30、quot;總收入:%d",sum);doprintf("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+billi.count;printf("nn");printf("顧客總數:%d",number);doprintf("n返回? 1)是 2)否");sca

31、nf("%5d",&w0);while(w0=2);/*主函數*/void main()menu();4 程序測試4.1 測試數據說明測試數據包括:編號、時間、臺面號、顧客數量、接待服務生、實收金額。編號時間(int 數組)臺面號Int顧客數量Int接待服務生char數組實收金額Int17.2 12:1252li3227.2 12:2236wang12837.2 12:3228zhao18647.2 12:4243zhang9557.2 12:5215li1054.2 輸出結果說明1)菜單界面,進入系統首先顯示主菜單,之后可通過選擇不同的數字來運用此餐飲結賬系統的各項功能。 圖1 菜單2)錄入界面,選擇1后根據提示輸入需要輸入的信息個數,之

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論