C語言課程設計食堂就餐餐費管理系統(tǒng)_第1頁
C語言課程設計食堂就餐餐費管理系統(tǒng)_第2頁
C語言課程設計食堂就餐餐費管理系統(tǒng)_第3頁
C語言課程設計食堂就餐餐費管理系統(tǒng)_第4頁
C語言課程設計食堂就餐餐費管理系統(tǒng)_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、文檔供參考,可復制、編制,期待您的好評與關注! 1課程設計任務書課程設計任務書課程設計任務書課程設計任務書題目題目題目題目:食堂就餐餐費管理系統(tǒng)食堂就餐餐費管理系統(tǒng)食堂就餐餐費管理系統(tǒng)食堂就餐餐費管理系統(tǒng)(1)(1)(1)(1)一一一一、課程設計時間課程設計時間課程設計時間課程設計時間共計1周,20學時。二二二二、課程設計內容課程設計內容課程設計內容課程設計內容用C語言編寫軟件完成以下任務:1添加學生信息;2添加菜譜信息;3菜譜查詢;4按學號添加餐費;三三三三、課程設計要求課程設計要求課程設計要求課程設計要求1.程序質量:貫徹結構化的程序設計思想。用戶界面友好,功能明確,操作方便。用戶界面中的

2、菜單至少應包括“添加學生信息”、“添加菜譜信息”、“菜譜查詢”、“按學號添加餐費”、“退出”5項。代碼應適當縮進,并給出必要的注釋,以增強程序的可讀性。2.課程設計說明書:課程結束后,上交課程設計說明書和源程序。課程設計說明書的格式和內容參見提供的模板。四四四四、指導教師和學生簽字指導教師和學生簽字指導教師和學生簽字指導教師和學生簽字指導教師指導教師指導教師指導教師:_學生簽名學生簽名學生簽名學生簽名:_五五五五、說明書成績說明書成績說明書成績說明書成績六六六六、教師評語教師評語教師評語教師評語I目目目目錄錄錄錄一、需求分析.1二、程序流程圖.1三、核心技術的實現(xiàn)說明及相應程序段.6四、課設總

3、結.9五、參考文獻.9六、源程序.91一一一一、需求分析需求分析需求分析需求分析經(jīng)過對程序設計題目的分析可知,整個程序的設計實現(xiàn)大致分為十一個模塊,每一個模塊對應一個函數(shù)。在這些函數(shù)當中,添加學生數(shù)據(jù)函數(shù),添加食譜函數(shù),就餐買單函數(shù),餐費查詢函數(shù)的實現(xiàn)嚴格按照題目的要求,而更改數(shù)據(jù)函數(shù)和顯示函數(shù)屬于附加功能。讀取文件函數(shù)和保存信息函數(shù)對其它函數(shù)的實現(xiàn)起輔助作用,主函數(shù)及菜單函數(shù)控制程序的整體運行。1.添加學生數(shù)據(jù)函數(shù)主要實現(xiàn)程序最初運行時學生數(shù)據(jù)的錄入以及其后的運行中學生數(shù)據(jù)的追加功能;2.添加食譜數(shù)據(jù)函數(shù)主要實現(xiàn)程序最初運行時食譜數(shù)據(jù)的錄入以及其后的運行中食譜數(shù)據(jù)的追加功能;3.刪除學生數(shù)據(jù)

4、函數(shù)實現(xiàn)的功能是按照學號對學生的數(shù)據(jù)記錄進行刪除;4.菜譜查詢函數(shù)按照題目的具體要求實現(xiàn)的是學生就餐及每次餐費累加的更新。5.餐費查詢函數(shù)允許按照學號對學生的總餐費進行查詢;6.顯示學生數(shù)據(jù)函數(shù)實現(xiàn)的是顯示目前所有的有效學生記錄信息。7.顯示食譜信息函數(shù)實現(xiàn)的是顯示目前所有的有效食譜記錄信息。除上面介紹的功能之外,程序還具有退出功能,可以在程序的一次運行當中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。每一個學生記錄都包含學號、姓名,以及餐費,在程序當中,將學生(食譜)記錄類型定義為結構體類型,添加以及追加的學生(食譜)信息直接寫入E盤的student(caipu).txt文件中,其它函數(shù)每次

5、對學生(食譜)記錄的訪問,其數(shù)據(jù)來源都是student(caipu).txt文件,這樣做不但可以保證學生(食譜)數(shù)據(jù)的一致性,而且可以對學生(食譜)數(shù)據(jù)進行永久保存,保證每次運行程序都可以采用原來的數(shù)據(jù)。二二二二、程序流程圖程序流程圖程序流程圖程序流程圖1.程序總體結構圖2圖1程序總體結構圖2.具體功能框圖(1)添加學生(食譜)數(shù)據(jù)函數(shù)add(ad) 當1輸入值 n=1?真假添加學生信息函數(shù) add()n=2?真假顯示學生信息函數(shù) show()n=3?真假刪除函數(shù) del()真假n=4?添加食譜信息函數(shù) ad()n=5?真假就餐買單函數(shù) all()菜譜查詢函數(shù) query()n=6?真假顯示食

6、譜函數(shù)sho()退出n=7?真假3以追加方式打開E盤student.txt(caipu.txt)文件成功?真假以追加方式打開E盤student.txt真(caipu.txt)文件成功假?輸入添加學生(食譜)數(shù)量n循環(huán)變量i=1輸出文件失敗當i<=n時輸入學號(編碼)、姓名(名稱)和餐費(價格)返回學生(食譜)信息寫入文件i+關閉文件圖2添加學生(食譜)數(shù)據(jù)函數(shù)(2)讀取學生(食譜)數(shù)據(jù)函數(shù)reads(read)4以讀方式打開E盤student.txt(caipu.txt)文件成功?真假循環(huán)變量i=0文件未結束時輸出文件打開失敗讀取學生(食譜)信息到數(shù)組元素stui(cai)中i+關閉文件

7、返回返回學生(食譜)數(shù)i圖3讀取學生(食譜)數(shù)據(jù)(3)刪除學生記錄函數(shù)del5圖4刪除學生記錄(4)就餐買單函數(shù)all6m=read(ca)循環(huán)變量i=0當num2=cai.numberq=cai.pricen=reads(stu)循環(huán)變量i=0當num1=stui.numStui.A=q+stui.Asave(stu,n)更新文件輸出就餐成功圖5就餐買單三三三三、核心技術的實現(xiàn)說明及相應程序段核心技術的實現(xiàn)說明及相應程序段核心技術的實現(xiàn)說明及相應程序段核心技術的實現(xiàn)說明及相應程序段本程序主要由十一個自定義函數(shù)和一個主函數(shù)組成,其中主函數(shù)以菜單的形式調用其它函數(shù)來實現(xiàn)要求的所有功能。在這些函數(shù)

8、當中,添加學生數(shù)據(jù)函數(shù)、添加食譜數(shù)據(jù)函數(shù)、就餐買單函數(shù)和查詢餐費函數(shù)是程序中較為核心的部分,下面分別進行說明。1.添加學生數(shù)據(jù)函數(shù)添加數(shù)據(jù)分為兩種情況,其一是在學生文件(student.txt)不存在的情況下,首先由程序創(chuàng)建一個新文件,并將錄入的學生信息寫入該文件當中;其二是在學生文件(student.txt)已經(jīng)存在的情況下,此時文件以追加的方式打開,這樣才可以保證以前已經(jīng)存在的數(shù)據(jù)不丟失。具體的程序段如下:if(fp=fopen("e:student.txt","a")=NULL)/如果文件已經(jīng)存在,可以追加學生信息if(fp=fopen("

9、;e:student.txt","w")=NULL)/文件不存在時,創(chuàng)建新文件,輸入學生信息printf("文件打開失敗!n");7return;printf("請輸入要添加的學生數(shù)量,按回車鍵確認:");scanf("%d",&n);for(i=1;i<=n;i+)printf("n請輸入第%d個學生的學號、姓名、餐費,用空格分開,并按回車鍵確認:n",i);scanf("%d%s%f",&j,,&stu.A);if(

10、j=0)break;stu.num=j;fprintf(fp,"%d%s%fn",stu.num,,stu.A);2.添加食譜數(shù)據(jù)函數(shù)添加數(shù)據(jù)分為兩種情況,其一是在食譜文件(caipu.txt)不存在的情況下,首先由程序創(chuàng)建一個新文件,并將錄入的食譜信息寫入該文件當中;其二是在食譜文件(caipu.txt)已經(jīng)存在的情況下,此時文件以追加的方式打開,這樣才可以保證以前已經(jīng)存在的數(shù)據(jù)不丟失。具體的程序段如下:if(fp=fopen("e:caipu.txt","a")=NULL)/如果文件已經(jīng)存在如果文件已經(jīng)存在如果文件

11、已經(jīng)存在如果文件已經(jīng)存在,可以追加食可以追加食可以追加食可以追加食譜譜譜譜信息信息信息信息if(fp=fopen("e:caipu.txt","w")=NULL)/文件不存在時文件不存在時文件不存在時文件不存在時,創(chuàng)建新創(chuàng)建新創(chuàng)建新創(chuàng)建新文文文文件件件件,輸入食譜信息輸入食譜信息輸入食譜信息輸入食譜信息printf("文件打開失敗文件打開失敗文件打開失敗文件打開失敗!n");return;printf("請輸入要添加的食譜數(shù)量請輸入要添加的食譜數(shù)量請輸入要添加的食譜數(shù)量請輸入要添加的食譜數(shù)量,按回車鍵確認按回車鍵確認按回車鍵

12、確認按回車鍵確認:");scanf("%d",&n);for(i=1;i<=n;i+)printf("n請輸入第請輸入第請輸入第請輸入第%d個食譜的編碼個食譜的編碼個食譜的編碼個食譜的編碼、名稱名稱名稱名稱,價格價格價格價格,用空格分開用空格分開用空格分開用空格分開,并并并并按回車鍵確認按回車鍵確認按回車鍵確認按回車鍵確認:n",i);scanf("%d%s%f",&j,ca.nam,&ca.price);if(j=0)8break;ca.number=j;fprintf(fp,"%d

13、%s%fn",ca.number,ca.nam,ca.price);3.菜譜查詢函數(shù)對于就餐買單函數(shù),這部分程序調用了reads和read函數(shù),整個程序的實現(xiàn)是在結構體數(shù)組stu和ca中實現(xiàn)的。由于這個程序的實現(xiàn)涉及到兩個數(shù)組元素的信息交換,因此還需要定義一個中間變量來協(xié)助。就餐買單函數(shù)使學生數(shù)據(jù)發(fā)生了變化,因此也需要對源文件進行更新,將更新的學生信息寫入信息源。具體的程序段如下:structstudentstuN;structcaipucaN;intnum1,num2,n,i,m;floatq;printf("n請輸入食譜編碼n");scanf("%d

14、",&num2);m=read(ca);for(i=0;i<m;i+)if(num2=cai.number)q=cai.price;printf("請輸入學生卡號n");scanf("%d",&num1);n=reads(stu);for(i=0;i<n;i+)if(num1=stui.num)stui.A=q+stui.A;save(stu,n);printf("就餐成功!nn");4餐費查詢函數(shù)在餐費查詢函數(shù)中,這個程序仍然調用了reads函數(shù),整個過程是在結構體數(shù)組stu中實現(xiàn)。實現(xiàn)了對學生

15、的餐費按學號查詢的功能。具體的程序段如下:intd;inti,n;n=reads(stu);printf("n請輸入待查詢的學生學號,按回車鍵確認:n");scanf("%d",&d);for(i=0;i<n;i+)9if(d=stui.num)break;if(i>=n)printf("沒有找到該學生信息!n");return;elseprintf("n%d%s%fn",stui.num,,stui.A);四四四四、課設總結課設總結課設總結課設總結五五五五、參考文獻參考文獻參

16、考文獻參考文獻1譚浩強C程序設計北京:清華大學出版社,2005六六六六、源程序源程序源程序源程序#include<stdio.h>#include<stdlib.h>#include"conio.h"#defineN20structstudentcharnum20;charname10;floatcanfei;structfoodcharnum20;charname10;floatprice;10voidmenu();intreads(structstudentstuN);voidsave(structstudentstuN,intn);intrea

17、ds2(structfoodfoN);voidsave2(structfoodfoN,intn);voidadd();voidadd2();voidquery();voidshow();voidmain()intn;while(1)menu();printf("n請輸入您要選擇的操作序號,按回車鍵確認:");scanf("%d",&n);switch(n)case1:add();break;case2:add2();break;case3:show();break;case4:query();break;case5:exit(0);default

18、:printf("輸入錯誤,請輸入列表中存在的序號!n");voidmenu()printf("*食堂就餐餐費管理系統(tǒng)*");11printf("n1添加學生信息");printf("n2添加菜譜信息");printf("n3菜譜查詢");printf("n4按學號添加餐費");printf("n5退出");intreads(structstudentstuN)/讀取學生文件中的內容FILE*fp;inti=0;if(fp=fopen("e:st

19、udent.txt","r")=NULL)printf("文件打開失敗!n");return0;elsefor(i=0;!feof(fp);i+)fscanf(fp,"%s%s%fn",stui.num,,&stui.canfei);fclose(fp);returni;voidsave(structstudentstuN,intn)/學生信息改變后更新文件FILE*fp;inti=0;if(fp=fopen("e:student.txt","w")=NULL

20、)printf("文件打開失??!n");return;else12for(i=0;i<n;i+)fprintf(fp,"%s%s%fn",stui.num,,stui.canfei);fclose(fp);intreads2(structfoodfoN)/讀取菜譜文件中的內容FILE*fp;inti=0;if(fp=fopen("e:food.txt","r")=NULL)printf("文件打開失?。");return0;elsefor(i=0;!feof(fp);i

21、+)fscanf(fp,"%s%s%fn",foi.num,,&foi.price);fclose(fp);returni;voidsave2(structfoodfoN,intn)/菜譜信息改變后更新文件FILE*fp;inti=0;if(fp=fopen("e:food.txt","w")=NULL)printf("文件打開失敗!n");return;elsefor(i=0;i<n;i+)fprintf(fp,"%s%s%fn",foi.num,

22、,foi.price);13fclose(fp);voidadd()/*添加學生信息*/FILE*fp;intn,i;structstudentstu;if(fp=fopen("e:student.txt","a")=NULL)/如果文件已經(jīng)存在,可以追加學生信息if(fp=fopen("e:student.txt","w")=NULL)/文件不存在時,創(chuàng)建新文件,輸入學生信息printf("文件打開失?。");return;printf("請輸入要添加的學生數(shù)量,按回車鍵確認:&q

23、uot;);scanf("%d",&n);for(i=1;i<=n;i+)printf("n請輸入第%d個學生的學號、姓名,用空格分開,并按回車鍵確認:n",i);scanf("%s%s",stu.num,);printf("n請輸入第%d個學生的餐費,并按回車鍵確認:n",i);scanf("%f",&stu.canfei);fprintf(fp,"%s%s%fn",stu.num,,stu.canfei);fclose

24、(fp);voidadd2()/*添加菜譜信息*/FILE*fp;intn,i;structfoodfo;14if(fp=fopen("e:food.txt","a")=NULL)/如果文件已經(jīng)存在,可以追加菜譜信息if(fp=fopen("e:food.txt","w")=NULL)/文件不存在時,創(chuàng)建新文件,輸入菜譜信息printf("文件打開失??!n");return;printf("請輸入要添加的菜譜數(shù)量,按回車鍵確認:");scanf("%d",&n);for(i=1;i<=n;i+)printf("n請輸入第%d個菜的編號、名稱,用空格分開,并按回車鍵確認:n",i);scanf("%s%s",fo.num,);printf("n請輸入第%d個菜的價格,并按回車鍵確認:n",i);scanf("%f",

溫馨提示

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

評論

0/150

提交評論