c語言課程設(shè)計(jì)機(jī)房機(jī)位預(yù)定系統(tǒng)絕對正確,附源代碼_第1頁
c語言課程設(shè)計(jì)機(jī)房機(jī)位預(yù)定系統(tǒng)絕對正確,附源代碼_第2頁
c語言課程設(shè)計(jì)機(jī)房機(jī)位預(yù)定系統(tǒng)絕對正確,附源代碼_第3頁
c語言課程設(shè)計(jì)機(jī)房機(jī)位預(yù)定系統(tǒng)絕對正確,附源代碼_第4頁
c語言課程設(shè)計(jì)機(jī)房機(jī)位預(yù)定系統(tǒng)絕對正確,附源代碼_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1 設(shè)計(jì)目的機(jī)房機(jī)位預(yù)定系統(tǒng)2 任務(wù)概述20臺機(jī)器,編號 1到 20,從早八點(diǎn)到晚八點(diǎn)。兩小時一個時間段,每次可預(yù)定一個 時間段。功能要求:(1)系統(tǒng)以菜單方式工作( 2)查詢,根據(jù)輸入時間,輸出機(jī)位信息。 (3)機(jī)位預(yù)定,根據(jù)輸入的時間查詢是否有空機(jī)位,若有則預(yù)約,若無則提供最近的時間 段,另:若用戶在非空時間上機(jī),則將用戶信息列入等待列表。(4)退出預(yù)定,根據(jù)輸入的時間,機(jī)器號撤銷該事件的預(yù)定?。?5 )查詢是否有等待信息,若有則提供最優(yōu)解決方案(等待時間盡量短),若無則顯示提示信息。3 模塊劃分4 主要函數(shù)說明及其 N-S 圖1. 主函數(shù) :int main()Menu(); /* 當(dāng)前

2、狀態(tài)函數(shù) */void Menu() /* 主界面 */int n,w;doputs("tt*機(jī)房機(jī)位預(yù)約系統(tǒng)puts("tt*n");puts("ttt 1.puts("ttt 2.puts("ttt 3.puts("ttt 4.puts("ttt 5.查詢某時間段機(jī)位狀態(tài) "); /* 查詢某時間段機(jī)位狀態(tài) */ 預(yù)定空機(jī)位 "); /* 預(yù)定空機(jī)位 */ 取消預(yù)訂 "); /* 取消預(yù)訂 */查詢等待信息 "); /* 查詢等待信息 */退出 "); /* 退

3、出*/puts("tt*n");printf(" 選擇菜單號 (1-5):");scanf("%d",&n);if(n<1|n>5)w=1;getchar();elsew=0;while(w=1);switch(n)case 1:Situation();break;case 2:Book();break;case 3:Cancel();break;case 4:SearchWaiting();break;case 5:exit(0);break;getch();2. 機(jī)位查詢 : void Situation()

4、int time;printf(" 輸在 (8-20) 范圍內(nèi)的時間 :"); scanf("%d",&time);if(time<8|time>20)printf("t 時間輸入錯誤 !n");printf(" 輸入在 (8-20) 范圍內(nèi)的時間 :"); scanf("%d",&time);detail(time); /* 函數(shù)調(diào)用 */ getchar();Menu();3. 機(jī)位預(yù)定 :void Book()int time,i=0,x,y;FILE *fp;

5、char c;printf(" 在 (8-20) 時間范圍內(nèi)輸入你想要預(yù)定的時間 :");scanf("%d",&time);if(time<8|time>20)printf("t 時間輸入錯誤 !n");printf("t在 (8-20) 時間范圍內(nèi)輸入你想要預(yù)定的時間 :");scanf("%d",&time);detail(time); /* 函數(shù)調(diào)用 */if(sumT>0) if(fp=fopen("","a")

6、=NULL)printf("n 無法打開文件 !n");exit(0);!:n");printf("nt 請輸入你想要預(yù)定的機(jī)號,并且留下你的電話號碼scanf("%s %s",waiti.number,waiti.telephonenumber);for(i=0;i<1;i+)fwrite(&waiti,sizeof(struct waitlist),1,fp);fclose(fp);/* 向文本文檔添加一個結(jié)構(gòu)體單元 */printf("t 再次輸入你想要預(yù)定的時間 !n");scanf(&quo

7、t;%d",&x);/*sumT-; / * 預(yù)定后該時間段空機(jī)位數(shù)減 1*/*computerTx=1; / * 預(yù)定后該機(jī)狀態(tài)變?yōu)?1*/printf("t 預(yù)訂成功 !n");getchar();Menu();elseprintf(" 這是在這個時間段內(nèi)未預(yù)定的電腦 !n");for(i=T+1;i<6;i+) time=9+2*i;detail(time); /* 函數(shù)調(diào)用 */if(sumT>0)printf("tThe latest free time is %d,%dn",2*i+8,2*i

8、+10);break;printf("t 你想要預(yù)定嗎 :y/n");scanf("%s",&c);getchar();if(c='Y'|c='y')if(fp=fopen("","r")=NULL)printf("n 無法打開文件 !n");exit(0);else printf("waitlist : number telephonenumbern"); for(i=0;!feof(fp);i+)fscanf(fp,"%s

9、 %s",&waiti.number,&waiti.telephonenumber);fclose(fp); for(i=0;i<10;i+) prione(i);printf("nt 請輸入你想要預(yù)定的機(jī)號,并且留下你的電話號碼 !:n"); if(fp=fopen("","a")=NULL)printf("n 無法打開文件 !n");exit(0);scanf("%s %s",waiti.number,waiti.telephonenumber);for(i=

10、0;i<1;i+)fwrite(&waiti,sizeof(struct waitlist),1,fp);fclose(fp); /*若等待, 就用文件的方式列出當(dāng)時的等待列表并提示輸入你的等待序號和聯(lián)系方式 */printf(" 再次輸入電腦的序號 !n");scanf("%d",&y);sumT-;computerTy=1;printf("t好了 , 請等待我們的電話 !n");Menu();else Menu();4. 取消預(yù)定 :void Cancel()int time,number;printf(&q

11、uot; 在 (8-20) 時間范圍內(nèi)輸入你已經(jīng)預(yù)定的時間 :"); scanf("%d",&time);if(time<8|time>20) N printf("t 輸入時間錯誤 !n");printf("t在 (8-20) 時間范圍內(nèi)輸入你已經(jīng)預(yù)定的時間 :");scanf("%d",&time);elseprintf("t 輸入你預(yù)定的機(jī)號 :");scanf("%d",&number);detail(time);/* su

12、mT+; / *預(yù)定后該時間段空機(jī)位數(shù)加 1*/*computerTnumber=0; / * 預(yù)定后該機(jī)狀態(tài)變?yōu)?0*/printf("t 取消成功 !n");getchar();Menu();5. 查詢等待信息 :void SearchWaiting()int time,i;FILE *fp;printf("tInput time you want to search between(8-20):"); scanf("%d",&time);if(time<8|time>20)printf("tWron

13、g time!n");printf("tInput time you want to search between(8-20):"); scanf("%d",&time);elseif(fp=fopen("","r")=NULL) printf("nCannot open file!n"); exit(0);else printf("waitlist : number telephonenumbern"); for(i=0;!feof(fp);i+)fsca

14、nf(fp,"%s %s",&waiti.number,&waiti.telephonenumber); fclose(fp);for(i=0;i<10;i+) prione(i); Menu();5 程序運(yùn)行數(shù)據(jù)及其結(jié)果1. 主菜單 :2. 機(jī)位查詢 :3. 機(jī)位預(yù)定 :4. 查詢等待信息 :6 課程設(shè)計(jì)心得課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識, 發(fā)現(xiàn), 提出,分析和解決實(shí)際問題 ,鍛煉實(shí)踐能力的重要環(huán)節(jié) , 是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程 . 隨著科學(xué)技術(shù)發(fā)展的日新日 異,當(dāng)今計(jì)算機(jī)應(yīng)用在生活中可以說得是無處不在。 因此作為二十一世紀(jì)的大學(xué)

15、來說掌握一 些基本的軟件開發(fā)技術(shù)是十分重要和必要的。回顧起此次課程設(shè)計(jì),至今我仍感慨頗多,的確,自從拿到題目到完成整個編程,從理 論到實(shí)踐, 在整整一個星期的日子里, 可以學(xué)到很多很多的的東西, 同時不僅可以鞏固了以 前所學(xué)過的知識, 而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。 通過這次課程設(shè)計(jì)使我懂 得了理論與實(shí)際相結(jié)合是很重要的, 只有理論知識是遠(yuǎn)遠(yuǎn)不夠的, 只有把所學(xué)的理論知識與 實(shí)踐相結(jié)合起來, 從理論中得出結(jié)論, 從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力, 這 樣才能真正為體會和認(rèn)識它, 才能寫出一個完整的程序代碼, 才能使自己在過程中得到鍛煉 和提高。在設(shè)計(jì)的過程中遇到問題,這畢

16、竟獨(dú)立做的,難免會遇到過各種各樣的問題,同時 在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處, 對以前所學(xué)過的知識理解得不夠深刻, 掌握得不夠 牢固,比如說結(jié)構(gòu)體的建立 , 指針的應(yīng)用等都不太熟練。通過這次課程設(shè)計(jì),也使我對以前 所學(xué)過的知識重新溫故和加強(qiáng)。程序設(shè)計(jì)過程有如解決一實(shí)際問題, 從解決實(shí)際問題的角度, 我們可以這樣來看: 首先 要了解這個問題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么 ; 其次,從問 題的要害入手, 從前到后的解決問題的每個方面, 即從輸入開始入手, 著重考慮如何從輸入 導(dǎo)出輸出,在這個過程中,可確定所需的變量、數(shù)組、函數(shù),然后確定處理過程算法; 最后可得結(jié)論。通過

17、這次課程設(shè)計(jì),我深刻地體會到:<1>. 細(xì)節(jié)決定成?。?在學(xué)習(xí)的過程中, 要注意每一個細(xì)節(jié), 要知道一個分隔符或一個括 號都會使整個程序出現(xiàn)錯誤。<2>. 要熟練掌握一些經(jīng)典的結(jié)構(gòu)和方法,如選擇排序,遞歸,遞推等,在遇到問題是可 直接應(yīng)用,快速解決問題。<3>. 要熟悉一些標(biāo)準(zhǔn)數(shù)據(jù)庫,對一些可直接利用的函數(shù)就直接利用,沒必要重新定義。<4>. 在設(shè)計(jì)過程中最好使程序模塊化,既便于閱讀,也可增加其移植性。<5>. 熟能生巧。平時應(yīng)該多加訓(xùn)練,要知道,即使我們能完全看懂一個程序,但要讓你 自己寫出一個時仍是很困難的。它要求你對每一個語句,

18、每一個變量,每一個函數(shù),每一個 模塊都充分的熟悉,要知道它們的作用,作用域等等。因此只有平時做的多了,到時候才會 游刃有余。一個多禮拜中 , 我有過山窮水盡的困惑;有過柳暗花明的驚喜;一個多禮拜的時間我經(jīng) 歷了很多, 也收獲了很多。 與其說它是體力與腦力的作業(yè), 不如說它是合作精神和毅力的考 驗(yàn)。經(jīng)過這次課程設(shè)計(jì),我不僅學(xué)到了很多知識和技能 , 更重要的是我學(xué)會了如何運(yùn)用所學(xué) 知識去解決實(shí)際問題 .附錄:#include<>#include<>#include<>#define N 20#define T (time-8)/2int sum6=0;int c

19、omputer620=1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1;/* 該數(shù)組表示假設(shè)某天某人查詢時機(jī) 房各個時間段機(jī)位數(shù)情況 */void Menu();voi

20、d Situation();void Book();void Cancel();void SearchWaiting();void detail(int time);void prione(int i);struct waitlist /* 等待列表 */char number3;char telephonenumber11; waitN;void printone(int i);int main()Menu(); /* 當(dāng)前狀態(tài)函數(shù) */void Menu() /* 主界面 */int n,w;doputs("tt*n");puts("tt*機(jī)房機(jī)位預(yù)約系統(tǒng)*n

21、");puts("tt*菜單*n");puts("ttt 1.查詢某時間段機(jī)位狀態(tài) "); /* 查詢某時間段機(jī)位狀態(tài)*/puts("ttt 2.預(yù)定空機(jī)位 "); /* 預(yù)定空機(jī)位 */puts("ttt 3.取消預(yù)訂 ");/* 取消預(yù)訂 */puts("ttt 4.查詢等待信息"); /* 查詢等待信息 */puts("ttt 5.退出 "); /*退出*/printf(" 選擇菜單號 (1-5):");scanf("%d&quo

22、t;,&n);if(n<1|n>5)w=1;getchar(); else w=0;while(w=1);switch(n)case 1:Situation();break;case 2:Book();break;case 3:Cancel();break;case 4:SearchWaiting();break;case 5:exit(0);break;getch();/* 時間查詢 */void Situation()int time;printf(" 輸在 (8-20) 范圍內(nèi)的時間 :"); scanf("%d",&t

23、ime);if(time<8|time>20) printf("t 時間輸入錯誤 !n"); printf(" 輸入在 (8-20) 范圍內(nèi)的時間 :"); scanf("%d",&time); detail(time); /* 函數(shù)調(diào)用 */ getchar();Menu();/* 預(yù)定函數(shù) */ void Book() int time,i=0,x,y;FILE *fp;char c;printf(" 在 (8-20) 時間范圍內(nèi)輸入你想要預(yù)定的時間 :"); scanf("%d&

24、quot;,&time);if(time<8|time>20)printf("t 時間輸入錯誤 !n");printf("t在 (8-20) 時間范圍內(nèi)輸入你想要預(yù)定的時間 :");scanf("%d",&time);detail(time); /* 函數(shù)調(diào)用 */ if(sumT>0) if(fp=fopen("","a")=NULL)printf("n 無法打開文件 !n");exit(0);!:n");printf("

25、;nt 請輸入你想要預(yù)定的機(jī)號,并且留下你的電話號碼scanf("%s %s",waiti.number,waiti.telephonenumber);for(i=0;i<1;i+) fwrite(&waiti,sizeof(struct waitlist),1,fp); fclose(fp);/* 向文本文檔添加一個結(jié)構(gòu)體單元 */ printf("t 再次輸入你想要預(yù)定的時間 !n"); scanf("%d",&x);/*sumT-; / * 預(yù)定后該時間段空機(jī)位數(shù)減 1*/ /*computerTx=1;

26、/ * 預(yù)定后該機(jī)狀態(tài)變?yōu)?1*/ printf("t 預(yù)訂成功 !n");getchar();Menu();elseprintf(" 這是在這個時間段內(nèi)未預(yù)定的電腦 !n");for(i=T+1;i<6;i+) time=9+2*i;detail(time); /* 函數(shù)調(diào)用 */if(sumT>0)printf("t 最近的空閑時間是 %d,%dn",2*i+8,2*i+10);break;printf("t 你想要預(yù)定嗎 :y/n");scanf("%s",&c);ge

27、tchar();if(c='Y'|c='y')if(fp=fopen("","r")=NULL)printf("n 無法打開文件 !n");exit(0);else printf("waitlist : number telephonenumbern"); for(i=0;!feof(fp);i+)fscanf(fp,"%s %s",&waiti.number,&waiti.telephonenumber);fclose(fp);for(i=0;i

28、<10;i+) prione(i);printf("nt 請輸入您想預(yù)定的機(jī)號并留下您的聯(lián)系方式 !:n"); if(fp=fopen("","a")=NULL)printf("n 無法打開文件 !n");exit(0);scanf("%s %s",waiti.number,waiti.telephonenumber); for(i=0;i<1;i+)fwrite(&waiti,sizeof(struct waitlist),1,fp);fclose(fp); /*若等待,

29、就用文件的方式列出當(dāng)時的等待列表并提示輸入你的等待序號和聯(lián)系方式 */printf(" 再次輸入電腦的序號 !n");scanf("%d",&y);sumT-;computerTy=1;printf("t好了 , 請等待我們的電話 !n");Menu();else Menu();/* 取消預(yù)訂 */void Cancel()int time,number;printf(" 在 (8-20) 時間范圍內(nèi)輸入你已經(jīng)預(yù)定的時間 :");scanf("%d",&time);if(time<8|time>20)printf("t 輸入時間錯誤 !n");printf("t 在 (8-20) 時間范圍內(nèi)輸入你已經(jīng)預(yù)定的時間 :"); scanf("%d",&time);elseprintf("t 輸入你預(yù)定的機(jī)號 :");scanf("%d",&number);detail(time);/* sumT+; / * 預(yù)定后該時間段空機(jī)位數(shù)加 1*/

溫馨提示

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

評論

0/150

提交評論