機房機位預(yù)約模擬系統(tǒng)的設(shè)計與實現(xiàn)--課程設(shè)計報告.doc
《機房機位預(yù)約模擬系統(tǒng)的設(shè)計與實現(xiàn)--課程設(shè)計報告.doc》由會員分享,可在線閱讀,更多相關(guān)《機房機位預(yù)約模擬系統(tǒng)的設(shè)計與實現(xiàn)--課程設(shè)計報告.doc(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、課程設(shè)計(論文)任務(wù)書 軟件 學(xué)院軟件+ 信控 專業(yè) 1 班 一、課程設(shè)計(論文)題目機房機位預(yù)約模擬系統(tǒng)的設(shè)計與實現(xiàn) 二、課程設(shè)計(論文)工作自 2017 年 1 月 2 日起至 2017 年 1 月 6 日止。三、課程設(shè)計(論文) 地點: 南區(qū) 創(chuàng)新大樓東樓406 四、課程設(shè)計(論文)內(nèi)容要求:1課程設(shè)計的目的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計是計算機科學(xué)與技術(shù)專業(yè)集中實踐性環(huán)節(jié)之一,是學(xué)習完數(shù)據(jù)結(jié)構(gòu)課程后進行的一次全面的綜合練習。目的是要達到理論與實際應(yīng)用相結(jié)合,使學(xué)生能夠根據(jù)數(shù)據(jù)對象的特性,學(xué)會數(shù)據(jù)組織的方法,能把現(xiàn)實世界中的實際問題在計算機內(nèi)部表示出來,并培養(yǎng)良好的程序設(shè)計技能。要求能從實際應(yīng)用問題出
2、發(fā),合理地選擇數(shù)據(jù)結(jié)構(gòu),設(shè)計相應(yīng)的數(shù)據(jù)處理算法,并對算法進行必要的分析;合理選擇編程工具,實現(xiàn)數(shù)據(jù)的物理結(jié)構(gòu)和相應(yīng)的數(shù)據(jù)處理算法;對算法進行調(diào)試和測試,并對調(diào)試及測試結(jié)果進行分析;針對數(shù)據(jù)結(jié)構(gòu)及算法的設(shè)計、調(diào)試及測試過程認真寫出設(shè)計分析報告。2課程設(shè)計的要求及任務(wù)(1)基本要求1)初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、調(diào)試等基本方法和技能。 2)要求從問題需求入手,完成系統(tǒng)的分析與設(shè)計,獨立完成系統(tǒng)的數(shù)據(jù)和功能分析,應(yīng)用數(shù)據(jù)結(jié)構(gòu)知識,設(shè)計抽象數(shù)據(jù)類型、構(gòu)思算法、完成系統(tǒng)的設(shè)計。3)結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識,編寫程序求解指定問題,程序設(shè)計語言推薦使用C/C+,程序書寫規(guī)范,源程序需加必
3、要的注釋。4)認真完成系統(tǒng)的調(diào)試與測試工作,測試數(shù)據(jù)要完備,詳細記錄測試結(jié)果。5)規(guī)范撰寫課程設(shè)計報告。(2)課程設(shè)計論文撰寫要求1)按照書稿的規(guī)格撰寫打印課程設(shè)計論文;2)論文包括任務(wù)書、目錄、緒論、正文、總結(jié)、參考文獻、附錄等;3)正文中要有問題描述與分析、數(shù)據(jù)結(jié)構(gòu)的設(shè)計、算法的設(shè)計、算法的實現(xiàn)、調(diào)試分析與結(jié)果;4)課程設(shè)計論文裝訂按學(xué)校的統(tǒng)一要求完成(3)課設(shè)考核1)考勤和態(tài)度; 2)任務(wù)的難易程度及設(shè)計思路;3)編碼及調(diào)試能力;4)論文撰寫的水平、格式的規(guī)范性。(4)課程設(shè)計進度安排內(nèi)容 天數(shù)地點構(gòu)思及收集資料 1圖書館程序設(shè)計與調(diào)試 3計算機房撰寫論文 1圖書館具體任務(wù):20臺機器,
4、從早8點到晚8點,每兩個小時一個時間段。實現(xiàn)如下功能:(1)機位空閑查詢,查詢空閑機位;(2)機位預(yù)定,根據(jù)輸入的日期和時間段查詢是否有空機位,若有則預(yù)約,若無則提供最近時間段的空機信息。另外,如果用戶要求在非空時間上機,則將用戶信息插入該時間段的等待列表。(3)退出預(yù)定,根據(jù)輸入的時間撤銷該時間的預(yù)定。(4)查詢是否有等待信息,若有則按順序顯示聯(lián)系方式,若無則顯示提示信息。提高部分:利用外部.txt文件同步記錄所有數(shù)據(jù)。學(xué)生簽名: 2017年 1月 2 日課程設(shè)計(論文)評審意見(1)考勤和態(tài)度 :優(yōu)()、良()、中()、一般()、差()(2)任務(wù)難易及設(shè)計思路:優(yōu)()、良()、中()、一般
5、()、差()(3)編碼及調(diào)試能力 :優(yōu)()、良()、中()、一般()、差()(4)論文撰寫水平及規(guī)范性:優(yōu)()、良()、中()、一般()、差()評閱人: 職稱: 副教授 年 月 日目錄1. 緒論11.1 設(shè)計題目11.2 模塊劃分12. 需求分析.13. 系統(tǒng)設(shè)計1 3.1數(shù)據(jù)結(jié)構(gòu).13.2 系統(tǒng)包含的函數(shù)24. 編碼實現(xiàn)24.1主菜單34.2機位查詢.44.3機位預(yù)定44.4取消預(yù)定74.5查詢等待信息85. 調(diào)試及運行結(jié)果106. 課程設(shè)計心得12參考文獻13附 錄14華東交通大學(xué)課程設(shè)計1.緒論1.1 設(shè)計題目 機房預(yù)約系統(tǒng)的設(shè)計與實現(xiàn) 操作系統(tǒng):Windows 軟件:Visual C+
6、 6.0軟件1.2 模塊劃分機房機位預(yù)約系統(tǒng)查詢機位預(yù)定機位退出預(yù)定查詢等待信息 2.需求分析(1) .建立一個比較完善的菜單系統(tǒng)保證可以滿足用戶的所有需求;(2) .利用二維數(shù)組和一維數(shù)組建立一個模擬數(shù)據(jù)庫,使查詢系統(tǒng)建立在數(shù)據(jù)庫上進行查詢;(3) 將程序模塊化處理方便修改并且比較有條理,用函數(shù)來實現(xiàn)菜單的各種功能;(4) 利用結(jié)構(gòu)體構(gòu)造所需的要的數(shù)組以及線性表,線性表采用順序儲存。3.系統(tǒng)設(shè)計3.1 數(shù)據(jù)結(jié)構(gòu) 程序主要是用一維數(shù)組以及二維數(shù)組作為程序的樣本庫,用順序表順序儲存所有的信息,然后用文本轉(zhuǎn)換函數(shù)將其轉(zhuǎn)換成文本文檔存儲。其中信息包括預(yù)定的機位、預(yù)定的時間段、以及預(yù)定所用的電話號碼。
7、3.2 系統(tǒng)包含的函數(shù)(1) 主函數(shù)包含菜單,所以用while判斷語句來進行處理。(2) 機位查詢函數(shù)調(diào)用了通用函數(shù)庫同時用if的判斷語句來處理查詢問題(3) 機位預(yù)訂函數(shù)調(diào)用了通用函數(shù)和之前建立的數(shù)組結(jié)構(gòu)體,同時在這個函數(shù)中建立文本文檔的的數(shù)據(jù)庫用以儲存用戶想要儲存的信息 4.編碼實現(xiàn)4.1 主函數(shù) void Menu() /*主界面*/ int n,w;do printf(tttt機房機位預(yù)約系統(tǒng)n); printf(tttt菜單n); printf(ttt 1.查詢某時間段機位狀態(tài)n); /*查詢某時間段機位狀態(tài)*/ printf(ttt 2.預(yù)定空機位n); /*預(yù)定空機位*/ pri
8、ntf(ttt 3.取消預(yù)訂n); /*取消預(yù)訂*/ printf(ttt 4.查詢等待信息n); /*查詢等待信息*/ printf(ttt 5.退出n); /*退出*/ printf(選擇菜單號(1-5):); scanf(%d,&n); if(n5) w=1;getchar(); else w=0;while(w=1);switch(n)case 1:shijianchaxun();break;case 2:yuding();break; case 3:quxiaoyuding();break;case 4:dengdaixinxi();break;case 5:exit(0);brea
9、k;getchar();4.2機位查詢*時間查詢*/void shijianchaxun()int time;prin/tf(輸在 (8-20)范圍內(nèi)的時間:);scanf(%d,&time);if(time20)printf(t時間輸入錯誤!n);printf(輸入在 (8-20)范圍內(nèi)的時間:);scanf(%d,&time); detail(time); /*函數(shù)調(diào)用*/getchar();Menu();4.3機位預(yù)定/*預(yù)定函數(shù)*/void yuding()int time,i=0,x,y;FILE *fp; char c; printf(在(8-20)時間范圍內(nèi)輸入你想要預(yù)定的時間:
10、); scanf(%d,&time); if(time20) printf(t時間輸入錯誤!n); printf(t在(8-20)時間范圍內(nèi)輸入你想要預(yù)定的時間:); scanf(%d,&time); detail(time); /*函數(shù)調(diào)用*/if(sumT0) if(fp=fopen(waitlist.txt,a)=NULL) printf(n無法打開文件!n); exit(0); printf(nt請輸入你想要預(yù)定的機號,并且留下你的電話號碼!:n); scanf(%s %s,waiti.number,waiti.telephonenumber);for(i=0;i20)printf(t
11、預(yù)定時間錯誤請重新輸入tn);sumT-; /*預(yù)定后該時間段空機位數(shù)減1*/computerTx=1; /*預(yù)定后該機狀態(tài)變?yōu)?*/printf(t預(yù)訂成功!n);getchar();Menu();elseprintf(這是在這個時間段內(nèi)未預(yù)定的電腦!n);for(i=T+1;i0)printf(t最近的空閑時間是 %d,%dn,2*i+8,2*i+10);break;printf(t你想要預(yù)定嗎?:y/n?);scanf(%s,&c);getchar();if(c=Y|c=y) if(fp=fopen(waitlist.txt,r)=NULL) printf(n無法打開文件!n); exi
12、t(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;i10;i+) prione(i); printf(nt請輸入您想預(yù)定的機號并留下您的聯(lián)系方式!:n); if(fp=fopen(waitlist.txt,a)=NULL) printf(n無法打開文件!n); exit(0); scanf(%s %s,waiti.number,waiti.tel
13、ephonenumber); for(i=0;i1;i+) fwrite(&waiti,sizeof(struct waitlist),1,fp); fclose(fp); /*若等待,就用文件的方式列出當時的等待列表并提示輸入你的等待序號和聯(lián)系方式*/printf(再次輸入電腦的序號!n);scanf(%d,&y);sumT-; computerTy=1; printf(t好了,請等待我們的電話!n); Menu(); else Menu();4.4取消預(yù)定/*取消預(yù)訂*/void quxiaoyuding()int time,number;printf(在(8-20)時間范圍內(nèi)輸入你已經(jīng)預(yù)
14、定的時間:);scanf(%d,&time); if(time20) printf(t輸入時間錯誤!n); printf(t在(8-20)時間范圍內(nèi)輸入你已經(jīng)預(yù)定的時間:); scanf(%d,&time); elseprintf(t輸入你預(yù)定的機號 :);scanf(%d,&number);detail(time); sumT+; /*預(yù)定后該時間段空機位數(shù)加1*/computerTnumber=0; /*預(yù)定后該機狀態(tài)變?yōu)?*/printf(t取消成功!n);getchar();Menu();4.5查詢等待信息/*查看等待信息*/void dengdaixinxi()int time,i;
15、 FILE *fp;printf(t在(8-20)之間輸入您要搜索的時間:);scanf(%d,&time);if(time20) printf(t時間輸入錯誤!n); printf(t在(8-20)之間輸入您要搜索的時間:); scanf(%d,&time);else; if(fp=fopen(waitlist.txt,r)=NULL) printf(nCannot open file!n); exit(0); else printf(waitlist: number telephonenumbern); for(i=0;!feof(fp);i+) fscanf(fp,%s %s,&wait
16、i.number,&waiti.telephonenumber); fclose(fp); for(i=0;i10;i+) prione(i);Menu(); 5.調(diào)試以及運行結(jié)果5.1運行結(jié)果 5.1.1主菜單 5.1.2預(yù)定機位 5.1.3取消預(yù)定 5.1.4 查詢等待機位6.課程設(shè)計心得課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,當今計算機應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀的大學(xué)來說掌握一些基本的軟件開發(fā)技術(shù)是十分重要和必要的。回顧起此次課程設(shè)計,至今我仍
17、感慨頗多,的確,自從拿到題目到完成整個編程,從理論到實踐,在整整一個星期的日子里,可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。程序設(shè)計過程有如解決一實際問題,從解決實際問題的角度,我們可以這樣來看:首先要了解這個問題的基本要求,即輸入、輸出、完成從輸入到輸出的要求是什么;其次,從問題的要害入手,從前到后的解決問題的每個方面,即從輸入開始入手,著重考慮如何從輸入導(dǎo)出輸出,在這個過程中,可確定所需的變量、數(shù)組、函數(shù),然后確定處理過程算法;最后可得結(jié)論。熟能生巧。平時應(yīng)該多加訓(xùn)練,要知道,即使我們能完全看懂一個程序,但要讓你自己寫出一個時仍
18、是很困難的。它要求你對每一個語句,每一個變量,每一個函數(shù),每一個模塊都充分的熟悉,要知道它們的作用,作用域等等。因此只有平時做的多了,到時候才會游刃有余。一個多禮拜中,我有過山窮水盡的困惑;有過柳暗花明的驚喜;一個多禮拜的時間我經(jīng)歷了很多,也收獲了很多。與其說它是體力與腦力的作業(yè),不如說它是合作精神和毅力的考驗。經(jīng)過這次課程設(shè)計,我不僅學(xué)到了很多知識和技能,更重要的是我學(xué)會了如何運用所學(xué)知識去解決實際問題.參考文獻1 嚴蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語言版)M. 北京:清華大學(xué)出版社, 2007.2 譚浩強 C語言程序設(shè)計(第二版)M.北京:清華大學(xué)出版社20083 譚浩強 C語言程序設(shè)計(第三
19、版)M.北京:清華大學(xué)出版社 20144 姜仲秋主編 C語言程序設(shè)計,南京大學(xué)出版社 20015 譚浩強 C語言程序設(shè)計教程(第四版)M.北京:清華大學(xué)出版社201419附 錄源代碼#include#include#include#define N 20#define T (time-8)/2int sum6=0;int computer620=1,0,1,0,1,1,0,0,0,0,0,0,1,1,1,1,0,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,0,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,1,1,1,1,
20、1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,1,1,1,1;/*該數(shù)組表示假設(shè)某天某人查詢時機房各個時間段機位數(shù)情況*/void Menu(); void shijianchaxun();void yuding();void quxiaoyuding();void dengdaixinxi();void detail(int time);void prione(int i);struct waitlist /*等待列表*/ ch
21、ar number3; char telephonenumber11; waitN;void printone(int i);void main()Menu(); /*當前狀態(tài)函數(shù)*/void Menu() /*主界面*/int n,w;do printf(tttt機房機位預(yù)約系統(tǒng)n); printf(tttt菜單n); printf(ttt 1.查詢某時間段機位狀態(tài)n); /*查詢某時間段機位狀態(tài)*/ printf(ttt 2.預(yù)定空機位n); /*預(yù)定空機位*/ printf(ttt 3.取消預(yù)訂n); /*取消預(yù)訂*/ printf(ttt 4.查詢等待信息n); /*查詢等待信息*/
22、printf(ttt 5.退出n); /*退出*/ printf(選擇菜單號(1-5):); scanf(%d,&n); if(n5) w=1;getchar(); else w=0;while(w=1);switch(n)case 1:shijianchaxun();break;case 2:yuding();break; case 3:quxiaoyuding();break;case 4:dengdaixinxi();break;case 5:exit(0);break;getchar();/*時間查詢*/void shijianchaxun()int time;printf(輸在 (8
23、-20)范圍內(nèi)的時間:);scanf(%d,&time);if(time20)printf(t時間輸入錯誤!n);printf(輸入在 (8-20)范圍內(nèi)的時間:);scanf(%d,&time); detail(time); /*函數(shù)調(diào)用*/getchar();Menu();/*預(yù)定函數(shù)*/void yuding()int time,i=0,x,y;FILE *fp; char c; printf(在(8-20)時間范圍內(nèi)輸入你想要預(yù)定的時間:); scanf(%d,&time); if(time20) printf(t時間輸入錯誤!n); printf(t在(8-20)時間范圍內(nèi)輸入你想要
24、預(yù)定的時間:); scanf(%d,&time); detail(time); /*函數(shù)調(diào)用*/if(sumT0) if(fp=fopen(waitlist.txt,a)=NULL) printf(n無法打開文件!n); exit(0); printf(nt請輸入你想要預(yù)定的機號,并且留下你的電話號碼!:n); scanf(%s %s,waiti.number,waiti.telephonenumber);for(i=0;i20)printf(t預(yù)定時間錯誤請重新輸入tn);sumT-; /*預(yù)定后該時間段空機位數(shù)減1*/computerTx=1; /*預(yù)定后該機狀態(tài)變?yōu)?*/printf(t
25、預(yù)訂成功!n);getchar();Menu();elseprintf(這是在這個時間段內(nèi)未預(yù)定的電腦!n);for(i=T+1;i0)printf(t最近的空閑時間是 %d,%dn,2*i+8,2*i+10);break;printf(t你想要預(yù)定嗎?:y/n?);scanf(%s,&c);getchar();if(c=Y|c=y) if(fp=fopen(waitlist.txt,r)=NULL) printf(n無法打開文件!n); exit(0); else printf(waitlist: number telephonenumbern); for(i=0;!feof(fp);i+)
26、 fscanf(fp,%s %s,&waiti.number,&waiti.telephonenumber); fclose(fp); for(i=0;i10;i+) prione(i); printf(nt請輸入您想預(yù)定的機號并留下您的聯(lián)系方式!:n); if(fp=fopen(waitlist.txt,a)=NULL) printf(n無法打開文件!n); exit(0); scanf(%s %s,waiti.number,waiti.telephonenumber); for(i=0;i1;i+) fwrite(&waiti,sizeof(struct waitlist),1,fp);
27、fclose(fp); /*若等待,就用文件的方式列出當時的等待列表并提示輸入你的等待序號和聯(lián)系方式*/printf(再次輸入電腦的序號!n);scanf(%d,&y);sumT-; computerTy=1; printf(t好了,請等待我們的電話!n); Menu(); else Menu();/*取消預(yù)訂*/void quxiaoyuding()int time,number;printf(在(8-20)時間范圍內(nèi)輸入你已經(jīng)預(yù)定的時間:);scanf(%d,&time); if(time20) printf(t輸入時間錯誤!n); printf(t在(8-20)時間范圍內(nèi)輸入你已經(jīng)預(yù)定的
28、時間:); scanf(%d,&time); elseprintf(t輸入你預(yù)定的機號 :);scanf(%d,&number);detail(time); sumT+; /*預(yù)定后該時間段空機位數(shù)加1*/computerTnumber=0; /*預(yù)定后該機狀態(tài)變?yōu)?*/printf(t取消成功!n);getchar();Menu();/*查看等待信息*/void dengdaixinxi()int time,i; FILE *fp;printf(t在(8-20)之間輸入您要搜索的時間:);scanf(%d,&time);if(time20) printf(t時間輸入錯誤!n); printf
29、(t在(8-20)之間輸入您要搜索的時間:); scanf(%d,&time);else; if(fp=fopen(waitlist.txt,r)=NULL) printf(nCannot open file!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;i10;i+) prione(i);Menu();/*公共函數(shù)*/ void detail(int time) /*此函數(shù)功能是實現(xiàn)查找每個時間段空機位總數(shù)和空機位號*/ int i,j=0,k,s=0;int v30; for(i=0;i20;i+) if(computerTi=0) s+; vj+=i;sumT=s;printf(t目前空置的電腦:%dn,sumT);for(k=0;kj;k+)printf(t空置的電腦是:%dn,vk);void prione(int i) /*此函數(shù)功能是實現(xiàn)輸出等待列表到屏幕*/printf(tt%s %s n,waiti.number,waiti.telephonenumber);
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復(fù)習題含答案
- 1 各種煤礦安全考試試題含答案