(完整版)機(jī)房預(yù)定位系統(tǒng)_第1頁(yè)
(完整版)機(jī)房預(yù)定位系統(tǒng)_第2頁(yè)
(完整版)機(jī)房預(yù)定位系統(tǒng)_第3頁(yè)
(完整版)機(jī)房預(yù)定位系統(tǒng)_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余27頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系課程設(shè)計(jì)報(bào)告20 12 20 13 學(xué)年第一 學(xué)期課程C 語(yǔ)言課程設(shè)計(jì)課程設(shè)計(jì)題目機(jī)房機(jī)位預(yù)訂系統(tǒng)學(xué)生姓名學(xué)號(hào)1204032015專業(yè)班級(jí)網(wǎng)絡(luò)工程( 2)班指導(dǎo)教師2013年1月語(yǔ)言課程設(shè)計(jì)C目錄一、課程設(shè)計(jì)目的2二、課程設(shè)計(jì)名稱及內(nèi)容2三、對(duì)任務(wù)和要求的分析2四.詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)3五、源代碼18六、程序測(cè)試24七、總結(jié)25語(yǔ)言課程設(shè)計(jì)C一、課程設(shè)計(jì)目的將理論教學(xué)中涉及到的知識(shí)點(diǎn)貫穿起來(lái),對(duì)不同的數(shù)據(jù)類型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設(shè)計(jì)題目進(jìn)行綜合性應(yīng)用,對(duì)所學(xué)知識(shí)達(dá)到融會(huì)貫通的程度。通過(guò)課程設(shè)計(jì),學(xué)生在下述各方面的能力應(yīng)該得到鍛煉:(1)進(jìn)一步鞏固、加

2、深學(xué)生所學(xué)專業(yè)課程 C 語(yǔ)言教程的基本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)學(xué)生綜合分析問(wèn)題,解決問(wèn)題的能力。(2)全面考核學(xué)生所掌握的基本理論知識(shí)及其實(shí)際業(yè)務(wù)能力,從而達(dá)到提高學(xué)生素質(zhì)的最終目的。(3)利用所學(xué)知識(shí),開(kāi)發(fā)小型應(yīng)用系統(tǒng),掌握運(yùn)用 C 語(yǔ)言編寫調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練獨(dú)立開(kāi)發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。(4)對(duì)于給定的設(shè)計(jì)題目,如何進(jìn)行分析,理清思路,并給出相應(yīng)的數(shù)學(xué)模型。(5)掌握自頂而下的設(shè)計(jì)方法,將大問(wèn)題進(jìn)行模塊化,領(lǐng)會(huì)結(jié)構(gòu)化程序設(shè)計(jì)的方法。( 6)熟練掌握 C 語(yǔ)言的基本語(yǔ)法,靈活運(yùn)用各種數(shù)據(jù)類型。(7)進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序(單步調(diào)試,設(shè)置斷點(diǎn)、觀察表達(dá)式,

3、分塊調(diào)試)和修改程序。二、課程設(shè)計(jì)名稱及內(nèi)容課程設(shè)計(jì)名稱:機(jī)房機(jī)位預(yù)定系統(tǒng)設(shè)計(jì)內(nèi)容:設(shè)計(jì)一個(gè)機(jī)房機(jī)位預(yù)定系統(tǒng),該系統(tǒng)要求對(duì)機(jī)房電腦機(jī)位進(jìn)行管理和維護(hù)。 20 臺(tái)機(jī)器 , 從早八點(diǎn)到晚八點(diǎn) , 每?jī)蓚€(gè)小時(shí)一個(gè)時(shí)間段 .任務(wù)和要求: 20 臺(tái)機(jī)器,編號(hào) 1 到 20,從早八點(diǎn)到晚八點(diǎn)。兩小時(shí)一個(gè)時(shí)間段,每次可預(yù)定一個(gè)時(shí)間段。設(shè)計(jì)一個(gè)機(jī)房機(jī)位預(yù)定系統(tǒng),通過(guò)該系統(tǒng)實(shí)現(xiàn)對(duì)機(jī)房機(jī)位的預(yù)定管理。三、對(duì)任務(wù)和要求的分析可行研究階段的目標(biāo)是:使工作人員從繁瑣的機(jī)位管理工作中解放出來(lái);提高工作質(zhì)量,使供需雙方都獲得滿意的結(jié)果;促進(jìn)報(bào)表,提高工作效率。本系統(tǒng)包含的主要模塊有:(1)界面系統(tǒng)以菜單方式工作。(2)機(jī)位

4、預(yù)定,根據(jù)輸入的時(shí)間查詢是否有空機(jī)位,若有則預(yù)約,若無(wú)則提供最近的時(shí)間段,另:若用戶在非空時(shí)間上機(jī),則將用戶信息列入等待列表。(3)查詢,根據(jù)輸入時(shí)間,輸出機(jī)位信息。(4)退出預(yù)定,根據(jù)輸入的時(shí)間,機(jī)器號(hào)撤銷該事件的預(yù)定!2語(yǔ)言課程設(shè)計(jì)C(5)查詢是否有等待信息,若有則提供最優(yōu)解決方案(等待時(shí)間盡量短) ,若無(wú)則顯示提示信息。程序達(dá)到的功能:機(jī)房機(jī)位模擬系統(tǒng)我的 預(yù)約查詢空位預(yù)約取消預(yù)約排隊(duì)查詢等帶狀態(tài)信息四 .詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)1宏定義#include<stdio.h>#include<stdlib.h>#include<string.h>#define ti

5、me 6#define MAX 20#define T(r) (r-8)/2#define NULL 0struct xx/* 用戶信息 */int jh;char data10;struct xx *next;3語(yǔ)言課程設(shè)計(jì)Cstruct xx *head;struct cell/* 排隊(duì)的隊(duì)列 */int CNum;struct xx *first; /*指向隊(duì)列開(kāi)頭*/struct xx *middle; /*指向排隊(duì)隊(duì)列*/struct xx *last; /* 指向?qū)Y(jié)尾 */Timetime;1 .主函數(shù)主函數(shù)一般設(shè)計(jì)的比較簡(jiǎn)潔,只提供輸入 ,處理和輸出部分的函數(shù)調(diào)用.其中個(gè)功能模

6、塊用菜單方式選擇。本模塊通過(guò)do-while語(yǔ)句和 switch語(yǔ)句實(shí)現(xiàn)主菜單的顯示和對(duì)功能的選擇。用戶可以根據(jù)自己的需求選擇相應(yīng)功能的序號(hào),如果用戶輸入的數(shù)據(jù)在0到6 的范圍內(nèi), w將會(huì)被系統(tǒng)賦值為 1,程序結(jié)束循環(huán)進(jìn)入下一步操作;如果用戶輸入的序號(hào)不再 0 到 6 的范圍內(nèi)則系統(tǒng)會(huì)要求用戶重新輸入服務(wù)序號(hào)直到用戶輸入的數(shù)據(jù)在0 到 6的范圍內(nèi)為止。4開(kāi)始語(yǔ)言課程設(shè)計(jì)C顯示一系列功能模塊N輸入 n 的值 1-6Y根據(jù)的值調(diào)用各功能模塊函數(shù)返回主菜單【程序】main()/ 主函數(shù)模塊int i;for(i=0;i<time;i+)Timei.CNum=0;Timei.first=NULL

7、;Timei.middle=NULL;Timei.last=NULL;while(1)printf(" 請(qǐng)輸入序號(hào) !:n");printf("1.預(yù)定2.查詢空機(jī)位3.查詢預(yù)定的機(jī)位4. 取消預(yù)定5.參加排隊(duì)6.查詢等待者時(shí)間列表0.退出 n");scanf("%d",&i);switch(i)case 1:booking();break;case 2:inquir();break;case 3:search();break;case 4:cancel();break;case 5:paidui();break;5語(yǔ)言課程設(shè)

8、計(jì)Ccase 6:search_waiting();break;case 0:exit(0);default:printf("errorn");2.查詢我的狀態(tài)模塊 數(shù)據(jù)結(jié)構(gòu) 我的原始數(shù)據(jù)是預(yù)約者預(yù)約的信息,將它儲(chǔ)存在用指針處理的鏈表中。【分析】根據(jù)輸入的時(shí)間來(lái)判斷應(yīng)該查詢的結(jié)構(gòu)體,把其首地址賦給 pp,然后通過(guò)指針的移動(dòng),比較輸入的學(xué)號(hào)和存儲(chǔ)在該結(jié)構(gòu)體中的 pp->data,來(lái)判斷我的預(yù)約狀態(tài) ,子函數(shù) void search (): 本模塊的功能是通過(guò)調(diào)用函數(shù)指向隊(duì)列的指針查詢用戶輸入的時(shí)間段的機(jī)位狀態(tài)如果有空機(jī)位就在屏幕上顯示出來(lái)當(dāng)前時(shí)刻的空機(jī)位的總數(shù)和所有的空

9、機(jī)位的序號(hào),如果沒(méi)有空位則在屏幕上顯示有零臺(tái)空機(jī)位。流程圖 開(kāi)始輸入要查詢的時(shí)間n,判斷 n 是否 820YNn=s(n)根據(jù)的n 值和輸入的學(xué)號(hào)來(lái)查找鏈表中是否有該值和其的位置, 從而達(dá)到查詢出我的狀態(tài)的目的提示:輸入錯(cuò)誤,請(qǐng)重新輸入【程序】void search ()6語(yǔ)言課程設(shè)計(jì)Cint n;char xh10;struct xx *pp;system("cls");printf(" 輸入查詢時(shí)間 (24 hours 820 o'clock,include 8o'clock)n"); /*驗(yàn)證輸入的時(shí)間*/scanf("%

10、d",&n);if(n>=8&&n<20)n=T(n);printf(" 請(qǐng)輸入學(xué)號(hào) n");scanf("%s ",xh);pp=Timen.first;for(;pp->next!=NULL;pp=pp->next) /* 通過(guò)指針后移查找信息 */ if(strcmp(pp->jh,xh)=0)break;if(pp->jh!=0)printf("The computer number is %dn",pp->jh);else printf("

11、對(duì)不起 . 你依舊在等待列表中或者沒(méi)有預(yù)定");else printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?.n");3. 預(yù)約模塊 數(shù)據(jù)結(jié)構(gòu) 定義兩個(gè)指向結(jié)構(gòu)體的指針,用強(qiáng)制類型轉(zhuǎn)換使他們指向動(dòng)態(tài)分配的存儲(chǔ)空間的首地址,把預(yù)約者的信息儲(chǔ)存在其中一個(gè)結(jié)構(gòu)體中。若有空機(jī)位則提示用戶輸入其想要愛(ài)預(yù)定的機(jī)位號(hào)并留下學(xué)號(hào)并將其信息加入預(yù)定者信息鏈表中;若沒(méi)有空機(jī)位則向用戶顯示其想要預(yù)定的那臺(tái)機(jī)器最短的等待時(shí)間并提示是否等待,如果用戶愿意等待則提示用戶輸入其想要愛(ài)預(yù)定的機(jī)位號(hào)并留下學(xué)號(hào)將用戶的信息加入等待列表中。 分析在該模塊的設(shè)計(jì)中,要讓預(yù)約者按預(yù)約的順序儲(chǔ)存在結(jié)構(gòu)體中。當(dāng)預(yù)約者的總數(shù)小

12、于最大值時(shí),就要用到通過(guò)指針的移動(dòng)來(lái)把預(yù)約者的信息按順序儲(chǔ)存起來(lái),用兩個(gè)不同的指針?lè)謩e指向鏈表的開(kāi)始,鏈表的結(jié)尾處。流程圖7語(yǔ)言課程設(shè)計(jì)C開(kāi)始輸入時(shí)間 8-20調(diào)用 detail 函數(shù) ,sumT 的值改變執(zhí)行一個(gè)循環(huán),進(jìn)入后面的時(shí)間段輸出空機(jī)位數(shù),是否等待Y調(diào)用指向隊(duì)列的指針,輸入預(yù)定機(jī)位號(hào)學(xué)號(hào),追加一個(gè)結(jié)構(gòu)體成員。返回主菜單【程序】void booking() /*預(yù)定模塊 */int n;char xh10;struct xx *pp;struct xx *p;system("cls");8語(yǔ)言課程設(shè)計(jì)Cprintf("輸入想要預(yù)定的時(shí)間 n");

13、scanf("%d",&n);if(n>=8&&n<20)n=T(n);if(Timen.CNum<MAX)printf("請(qǐng)輸入你的學(xué)號(hào) n");scanf("%s",xh);if(Timen.first=NULL)pp=(struct xx *)malloc(sizeof(struct xx); /*動(dòng)態(tài)申請(qǐng)存儲(chǔ)空間 */pp->jh=1; /*預(yù)定到第一臺(tái)機(jī)器 */strcpy(pp->data,xh);pp->next=NULL;Timen.first=pp;Time

14、n.last=pp;Timen.CNum+;printf("成功預(yù)定 n");elsepp=(struct xx *)malloc(sizeof(struct xx);strcpy(pp->data,xh);pp->next=NULL;p=Timen.last;pp->jh=Timen.CNum+1;printf("%d",pp->jh);Timen.last=pp;p->next=pp;Timen.CNum+; /*被預(yù)定的機(jī)器數(shù)目追加一*/printf("成功預(yù)定 n");else printf(&q

15、uot;沒(méi)有空余機(jī)位 !");else printf("錯(cuò)誤 . 請(qǐng)?jiān)俅屋斎?.n");4. 查詢空機(jī)位模塊 分析根據(jù)輸入的時(shí)間確定 n 值,然后根據(jù)結(jié)構(gòu)體中 Time 中的 Time n->Cnum 的值,求出最大值與該值的差即為空機(jī)位數(shù)。本模塊的功能是通過(guò)調(diào)用鏈表查詢用戶輸入的時(shí)間段的機(jī)位狀態(tài)如果有空機(jī)位就在屏幕上顯示出來(lái)當(dāng)前時(shí)刻的空機(jī)位的總數(shù)和所有的空機(jī)位的序號(hào),如果沒(méi)有空位則在屏幕上顯示有零臺(tái)空機(jī)位。流程圖9語(yǔ)言課程設(shè)計(jì)C輸入要查詢的時(shí)間 n 判斷 n 是否 820Yn s( n)N根據(jù) n 的值判斷 TimeQueuen->Cnum 的值是否

16、小于最大值MAXYN空機(jī)位數(shù) =MAX TimeQueuen ->CNum輸出:沒(méi)有空機(jī)位提示:輸入錯(cuò)誤,請(qǐng)重新輸入【程序】void inquir()int n;printf("Please input the time you want to search.(24 hours 824oclock,include 8clock)n");scanf("%d",&n);if(n>=8&&n<20)n=S(n);if(TimeQueuen.CNum<MAX)printf("There are %d em

17、oty computer.n",MAX-TimeQueuen.CNum); else printf("Sorry!There is no empty computer!n");else printf("Error.Please input again.n");10語(yǔ)言課程設(shè)計(jì)C5. 排隊(duì)模塊 分析 該模塊主要是針對(duì)是否要排隊(duì)和如何排隊(duì)設(shè)計(jì)的。當(dāng)預(yù)約者總數(shù)小于最大值時(shí)提示不用排隊(duì)。當(dāng)預(yù)約者的總數(shù)大于最大值時(shí)就需要排隊(duì)。把排隊(duì)者的信息儲(chǔ)存在由指向結(jié)構(gòu)體的指針指向的動(dòng)態(tài)分配的存儲(chǔ)區(qū)域,然后連接到time n 的表尾。用指向等待隊(duì)列的指針指向排隊(duì)的第一

18、人,通過(guò)指針的移動(dòng),用指向表尾的指針指向真?zhèn)€鏈表的結(jié)尾。開(kāi)始輸入時(shí)間 8-20調(diào)用 detail 函數(shù) ,sumT 的值改變執(zhí)行一個(gè)循環(huán),進(jìn)入后面的時(shí)間段輸出空機(jī)位數(shù),是否等待Y在 Time n 中追加一個(gè)結(jié)構(gòu)體成員。返回主菜單11語(yǔ)言課程設(shè)計(jì)C【程序】void paidui() /*排隊(duì)模塊 */int n;char xh10;struct xx *pp;struct xx *p;system("cls");printf("請(qǐng)輸入想要排隊(duì)的時(shí)間n");scanf("%d",&n);if(n>=8&&n&

19、lt;20)n=T(n);if(Timen.CNum>=MAX)printf("請(qǐng)輸入你的學(xué)號(hào) n");scanf("%s",xh);if(Timen.CNum)=MAX)pp=(struct xx *)malloc(sizeof(struct xx);strcpy(pp->data,xh);pp->next=NULL;pp->jh=0;p=Timen.last; /*指向排隊(duì)隊(duì)列結(jié)尾處 */Timen.last=pp;p->next=pp;Timen.middle=pp;Timen.CNum+;printf("成

20、功排隊(duì) n");elsepp=(struct xx *)malloc(sizeof(struct xx);strcpy(pp->data,xh);pp->next=NULL;pp->jh=0;p=Timen.last;Timen.last=pp;p->next=pp;Timen.CNum+;printf("成功排隊(duì) n");else printf("有空余機(jī)位,無(wú)須等待 n");else printf("錯(cuò)誤 . 再次輸入 .n");12語(yǔ)言課程設(shè)計(jì)C6. 取消預(yù)約模塊 分析要取消預(yù)約,有兩種情況,第

21、一是從有機(jī)位的人要取消預(yù)約,在該種情況下,排隊(duì)的第一人的位置就插入到該取消者的位置。而指向等待隊(duì)列首地址的指針就指向原來(lái)排隊(duì)的第二人。第二種情況就是取消約的人本來(lái)就在等待隊(duì)列中,只需要直接刪除該結(jié)點(diǎn)即可。流程圖N輸入要查詢的時(shí)間 n 判斷 n 是否 820Yn T(n)提示:輸入錯(cuò)誤請(qǐng)重新輸入輸入學(xué)號(hào),查找該鏈表中該信息的位置 i, i 是否不大于MAXYN退出預(yù)約,排隊(duì)者的第一人插入該預(yù)約退出預(yù)約者的位置?!境绦颉縱oid cancel() /*取消模塊 */int n;int i;char xh10;struct xx *pp;struct xx *q;struct xx *p;syste

22、m("cls");printf("請(qǐng)輸入預(yù)定的時(shí)間 n");scanf("%d",&n);if(n>=8&&n<20)13語(yǔ)言課程設(shè)計(jì)Cprintf("請(qǐng)輸入你的學(xué)號(hào) .!n");scanf("%s",xh);n=T(n);pp=Timen.first;q=pp;for(i=1;q=pp,pp=pp->next,i+)if(strcmp(pp->data,xh)=0)break;if(i>MAX)if(pp->next=NULL)q-&

23、gt;next=NULL;Timen.last=q;free(pp);Timen.CNum-;printf("取消成功 !n");elseq->next=pp->next;free(pp);Timen.CNum-;printf("成功退出 !n");elseif(Timen.CNum>MAX)Timen.middle->jh=pp->jh;Timen.middle=Timen.middle->next;if(i=1) Timen.first=pp->next;else q->next=pp->next

24、;free(pp);Timen.CNum-;printf("成功取消預(yù)定 !n");else printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?.n");void search_waiting() /*查詢等待模塊 */int n;14語(yǔ)言課程設(shè)計(jì)Cstruct xx *q;system("cls");printf("查詢其他等待者的預(yù)定時(shí)間n");scanf("%d",&n);if(n>=8&&n<20)n=T(n);if(Timen.CNum>MAX)printf(

25、"等待列表 are:n");q=Timen.middle;for(;q->next!=NULL;q=q->next) printf("%sn",q->data);printf("%sn",Timen.last->data); /*輸出等待者 */else printf("這個(gè)時(shí)間段沒(méi)有預(yù)定者 n");else printf("錯(cuò)誤。請(qǐng)?jiān)俅屋斎?.n");7. 查詢等待信息模塊 分析通過(guò)輸入的時(shí)間,判斷儲(chǔ)存該時(shí)間段的結(jié)構(gòu)體鏈表,通過(guò)比較Timen 中 Cnum的值與最大值的

26、大小關(guān)系就可以得到是否有等待者的信息,本模塊通過(guò)讀取用戶輸入的時(shí)間先調(diào)用結(jié)構(gòu)體鏈表在屏幕上顯示出用戶要查詢的時(shí)間段的包含用戶的機(jī)位號(hào)和學(xué)號(hào)。流程圖N輸入要查詢的時(shí)間 n 判斷 n 是否 820Yn s( n)提示:輸入錯(cuò)誤請(qǐng)重新輸入根據(jù) n 的值判斷 Time n->Cnum 的值是否小Y于最大值 MAXN有等待者沒(méi)有等待者【程序】void search_waiting() /*查詢等待模塊 */int n;struct xx *q;system("cls");15語(yǔ)言課程設(shè)計(jì)Cprintf("查詢其他等待者的預(yù)定時(shí)間n");scanf("

27、;%d",&n);if(n>=8&&n<20)n=T(n);if(Timen.CNum>MAX)printf("等待列表 are:n");q=Timen.middle;for(;q->next!=NULL;q=q->next) printf("%sn",q->data);printf("%sn",Timen.last->data); /*輸出等待者 */else printf("這個(gè)時(shí)間段沒(méi)有預(yù)定者 n");else printf(&quo

28、t;錯(cuò)誤。請(qǐng)?jiān)俅屋斎?.n");main()/主函數(shù)模塊int i;for(i=0;i<time;i+)Timei.CNum=0;Timei.first=NULL;Timei.middle=NULL;Timei.last=NULL;16語(yǔ)言課程設(shè)計(jì)C開(kāi)始N輸入時(shí)間 8-20Y調(diào)用Timen 中 Cnum 輸出到屏幕上,顯示等待信息返回主菜單【程序】void search_waiting() /* 查詢等待模塊*/int n;struct xx *q;system("cls");printf(" 查詢其他等待者的預(yù)定時(shí)間n");scanf(

29、"%d",&n);if(n>=8&&n<20)n=T(n);if(Timen.CNum>MAX)printf(" 等待列表are:n");q=Timen.middle;for(;q->next!=NULL;q=q->next) printf("%sn",q->data);printf("%sn",Timen.last->data); /*輸出等待者 */17語(yǔ)言課程設(shè)計(jì)Celse printf(" 這個(gè)時(shí)間段沒(méi)有預(yù)定者n");el

30、se printf(" 錯(cuò)誤。請(qǐng)?jiān)俅屋斎?n");main()/ 主函數(shù)模塊int i;for(i=0;i<time;i+)Timei.CNum=0;Timei.first=NULL;Timei.middle=NULL;Timei.last=NULL;五、源代碼#include<stdio.h>#include<stdlib.h>#include<string.h>#define time 6#define MAX 20#define T(r) (r-8)/2#define NULL 0struct xx/* 用戶信息 */int

31、jh;char data10;struct xx *next;struct xx *head;struct cell/* 排隊(duì)的隊(duì)列 */int CNum;struct xx *first; /*指向隊(duì)列開(kāi)頭*/struct xx *middle; /*指向排隊(duì)隊(duì)列*/struct xx *last; /* 指向?qū)Y(jié)尾 */Timetime;18語(yǔ)言課程設(shè)計(jì)Cvoid booking() /* 預(yù)定模塊 */int n;char xh10;struct xx *pp;struct xx *p;system("cls");printf(" 輸入想要預(yù)定的時(shí)間n&qu

32、ot;);scanf("%d",&n);if(n>=8&&n<20)n=T(n);if(Timen.CNum<MAX)printf(" 請(qǐng)輸入你的學(xué)號(hào)n");scanf("%s",xh);if(Timen.first=NULL)pp=(struct xx *)malloc(sizeof(struct xx); /* 動(dòng)態(tài)申請(qǐng)存儲(chǔ)空間 */ pp->jh=1; /* 預(yù)定到第一臺(tái)機(jī)器 */strcpy(pp->data,xh);pp->next=NULL;Timen.first

33、=pp;Timen.last=pp;Timen.CNum+;printf(" 成功預(yù)定 n");elsepp=(struct xx *)malloc(sizeof(struct xx);strcpy(pp->data,xh);pp->next=NULL;p=Timen.last;pp->jh=Timen.CNum+1;printf("%d",pp->jh);Timen.last=pp;p->next=pp;Timen.CNum+;/* 被預(yù)定的機(jī)器數(shù)目追加一*/printf(" 成功預(yù)定 n");19語(yǔ)言

34、課程設(shè)計(jì)Celse printf(" 沒(méi)有空余機(jī)位!");else printf(" 錯(cuò)誤 .請(qǐng)?jiān)俅屋斎?.n");void search()int n;char xh10;struct xx *pp;system("cls");printf(" 輸入查詢時(shí)間 (24 hours 820 o'clock,include 8o'clock)n"); /*驗(yàn)證輸入的時(shí)間*/scanf("%d",&n);if(n>=8&&n<20)n=T(n);pr

35、intf(" 請(qǐng)輸入學(xué)號(hào) n");scanf("%s",xh);pp=Timen.first;for(;pp->next!=NULL;pp=pp->next)/* 通過(guò)指針后移查找信息*/if(strcmp(pp->jh,xh)=0)break;if(pp->jh!=0)printf("The computer number is %dn",pp->jh);else printf(" 對(duì)不起 .你依舊在等待列表中或者沒(méi)有預(yù)定");else printf(" 錯(cuò)誤,請(qǐng)?jiān)俅屋斎?

36、n");void paidui() /* 排隊(duì)模塊 */int n;char xh10;struct xx *pp;struct xx *p;system("cls");printf(" 請(qǐng)輸入想要排隊(duì)的時(shí)間n");scanf("%d",&n);if(n>=8&&n<20)n=T(n);if(Timen.CNum>=MAX)20語(yǔ)言課程設(shè)計(jì)Cprintf(" 請(qǐng)輸入你的學(xué)號(hào)n");scanf("%s",xh);if(Timen.CNum)=MA

37、X)pp=(struct xx *)malloc(sizeof(struct xx);strcpy(pp->data,xh);pp->next=NULL;pp->jh=0;p=Timen.last; /* 指向排隊(duì)隊(duì)列結(jié)尾處*/Timen.last=pp;p->next=pp;Timen.middle=pp;Timen.CNum+;printf(" 成功排隊(duì) n");elsepp=(struct xx *)malloc(sizeof(struct xx);strcpy(pp->data,xh);pp->next=NULL;pp->j

38、h=0;p=Timen.last;Timen.last=pp;p->next=pp;Timen.CNum+;printf(" 成功排隊(duì) n");else printf(" 有空余機(jī)位,無(wú)須等待n");else printf(" 錯(cuò)誤 .再次輸入 .n");void inquir() /* 查詢空機(jī)位模塊*/int n;system("cls");printf(" 輸入想要查詢的時(shí)間 (24 hours 820o'clock,include 8 o'clock)n"); sc

39、anf("%d",&n);if(n>=8&&n<20)n=T(n);if(Timen.CNum<MAX)21語(yǔ)言課程設(shè)計(jì)Cprintf("There are %d empty computer!n",MAX-Timen.CNum); else printf(" 對(duì)不起 .沒(méi)有空余機(jī)位 n");else printf(" 錯(cuò)誤 ,再次輸入 .n");void cancel() /* 取消模塊 */int n;int i;char xh10;struct xx *pp;stru

40、ct xx *q;struct xx *p;system("cls");printf(" 請(qǐng)輸入預(yù)定的時(shí)間n");scanf("%d",&n);if(n>=8&&n<20)printf(" 請(qǐng)輸入你的學(xué)號(hào).!n");scanf("%s",xh);n=T(n);pp=Timen.first;q=pp;for(i=1;q=pp,pp=pp->next,i+)if(strcmp(pp->data,xh)=0)break;if(i>MAX)if(pp

41、->next=NULL)q->next=NULL;Timen.last=q;free(pp);Timen.CNum-;printf(" 取消成功 !n");elseq->next=pp->next;free(pp);Timen.CNum-;printf(" 成功退出 !n");elseif(Timen.CNum>MAX)Timen.middle->jh=pp->jh;22語(yǔ)言課程設(shè)計(jì)CTimen.middle=Timen.middle->next;if(i=1) Timen.first=pp->nex

42、t;else q->next=pp->next;free(pp);Timen.CNum-;printf(" 成功取消預(yù)定 !n");else printf(" 錯(cuò)誤,請(qǐng)?jiān)俅屋斎?n");void search_waiting() /* 查詢等待模塊*/int n;struct xx *q;system("cls");printf(" 查詢其他等待者的預(yù)定時(shí)間n");scanf("%d",&n);if(n>=8&&n<20)n=T(n);if(Tim

43、en.CNum>MAX)printf(" 等待列表are:n");q=Timen.middle;for(;q->next!=NULL;q=q->next) printf("%sn",q->data);printf("%sn",Timen.last->data); /*輸出等待者 */else printf(" 這個(gè)時(shí)間段沒(méi)有預(yù)定者n");else printf(" 錯(cuò)誤。請(qǐng)?jiān)俅屋斎?n");main()/ 主函數(shù)模塊int i;for(i=0;i<time;i

44、+)Timei.CNum=0;Timei.first=NULL;Timei.middle=NULL;Timei.last=NULL;23語(yǔ)言課程設(shè)計(jì)Cwhile(1)printf(" 請(qǐng)輸入序號(hào) !:n");printf("1.預(yù)定2.查詢空機(jī)位3.查詢預(yù)定的機(jī)位4. 取消預(yù)定5.參加排隊(duì)6.查詢等待者時(shí)間列表0.退出 n");scanf("%d",&i);switch(i)case 1:booking();break;case 2:inquir();break;case 3:search();break;case 4:can

45、cel();break;case 5:paidui();break;case 6:search_waiting();break;case 0:exit(0);default:printf("errorn");六、程序測(cè)試1、預(yù)定功能2、查詢功能24語(yǔ)言課程設(shè)計(jì)C3、查詢預(yù)定機(jī)位的功能4、取消功能七、總結(jié)短短的一個(gè)星期的上機(jī)實(shí)習(xí)結(jié)束了。復(fù)習(xí)了理論知識(shí)、編程、調(diào)試、改錯(cuò),直至存盤,同樣的環(huán)節(jié)、同樣的工作步驟,重復(fù)又重復(fù),枯燥而乏味;看似簡(jiǎn)單的程序題,編寫后調(diào)試卻屢屢出錯(cuò)。如何改如何錯(cuò),怎么編寫怎么調(diào)試失敗,心煩而意亂。但奇怪的是,越是如此,我越是不甘失敗。不斷地調(diào)試,反復(fù)地編寫。一旦在黑屏幕的左下角意外地發(fā)現(xiàn)所輸出的信息正是自己意想中的結(jié)果,那份驚喜,那

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論