




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、語言課程設(shè)計(jì)C合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系課程設(shè)計(jì)報(bào)告2013 2014 學(xué)年第 2 學(xué)期課程面向過程綜合設(shè)計(jì)課程設(shè)計(jì)名稱機(jī)房機(jī)位預(yù)訂系統(tǒng)學(xué)生姓名學(xué)號(hào)專業(yè)班級(jí)指導(dǎo)教師2014 年 6 月一、題目及要求 課程設(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),每兩個(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),通過該系統(tǒng)實(shí)現(xiàn)對(duì)機(jī)房機(jī)位的預(yù)定管理。二、需求分析可行研究階段的目標(biāo)是:使工作人員從繁瑣的機(jī)位管理工作中解放出來;提高工
2、作質(zhì)量,使供需雙方都獲得滿意的結(jié)果;促進(jìn)報(bào)表,提高工作效率。 本系統(tǒng)包含的主要模塊有:(1)界面系統(tǒng)以菜單方式工作。(2)機(jī)位預(yù)定,根據(jù)輸入的時(shí)間查詢是否有空機(jī)位,若有則預(yù)約,若無則提供最近的時(shí)間段,另:若用戶在非空時(shí)間上機(jī),則將用戶信息列入等待列表。(3)查詢,根據(jù)輸入時(shí)間,輸出機(jī)位信息。(4)退出預(yù)定,根據(jù)輸入的時(shí)間,機(jī)器號(hào)撤銷該事件的預(yù)定?。?)查詢是否有等待信息,若有則提供最優(yōu)解決方案(等待時(shí)間盡量短),若無則顯示提示信息。程序達(dá)到的功能:機(jī)房機(jī)位模擬系統(tǒng)預(yù)定查詢空機(jī)位查詢預(yù)訂的機(jī)位取消預(yù)定參加排隊(duì)查詢等待者時(shí)間列表三、算法設(shè)計(jì)1宏定義#include<stdio.h> #
3、include<stdlib.h> #include<string.h> #define time 6 #define MAX 20 #define T(r) (r-8)/2 #define NULL 0 struct yonghu/*用戶信息*/ int jh; char data10; struct yonghu *next; ; struct yonghu *head; struct cell/*排隊(duì)的隊(duì)列*/ int CNum; struct yonhu *first; /*指向隊(duì)列開頭*/struct yonghu *middle; /*指向排隊(duì)隊(duì)列*/str
4、uct yonghu *last; /*指向?qū)Y(jié)尾*/Timetime;1.主函數(shù)主函數(shù)一般設(shè)計(jì)的比較簡潔,只提供輸入,處理和輸出部分的函數(shù)調(diào)用.其中個(gè)功開 始能模塊用菜單方式選擇。本模塊通過do-while語句和switch語句實(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)為止。 顯示一系列功能模塊根據(jù)的值調(diào)用各功能模塊函數(shù)YN輸入n的值1-6返回主菜單【程序】main() /*
5、主函數(shù)模塊*/ int i; for(i=0;i<time;i+) Timei.CNum=0; Timei.first=NULL; Timei.middle=NULL; Timei.last=NULL; while(1) printf("請(qǐng)輸入序號(hào)!:n"); puts("tt*機(jī)房機(jī)位預(yù)約系統(tǒng)*n"); puts("tt*菜單*n"); puts("ttt 1.預(yù)定"); /*預(yù)定*/ puts("ttt 2.查詢空機(jī)位"); /*查詢空機(jī)位*/ puts("ttt 3.查詢預(yù)
6、定的機(jī)位"); /*查詢預(yù)訂的機(jī)位*/ puts("ttt 4.取消預(yù)定"); /*取消預(yù)訂*/ puts("ttt 5.參加排隊(duì)");/*參加排隊(duì)*/ puts("ttt 6.查詢等待者時(shí)間列表");/*查詢等待者時(shí)間列表*/ puts("ttt 0.退出");/*退出*/ puts("tt*n");scanf("%d",&i); switch(i) case 1:booking();break;case 2:inquir();break; case 3:
7、search();break;case 4:cancel();break; case 5:paidui();break; case 6:search_waiting();break; case 0:exit(0); default:printf("錯(cuò)誤!n"); 2.查詢我的狀態(tài)模塊數(shù)據(jù)結(jié)構(gòu)我的原始數(shù)據(jù)是預(yù)約者預(yù)約的信息,將它儲(chǔ)存在用指針處理的鏈表中?!痉治觥扛鶕?jù)輸入的時(shí)間來判斷應(yīng)該查詢的結(jié)構(gòu)體,把其首地址賦給pp,然后通過指針的移動(dòng),比較輸入的學(xué)號(hào)和存儲(chǔ)在該結(jié)構(gòu)體中的pp->data,來判斷我的預(yù)約狀態(tài),子函數(shù)void search ():本模塊的功能是通過調(diào)用函數(shù)
8、指向隊(duì)列的指針查詢用戶輸入的時(shí)間段的機(jī)位狀態(tài)如果有空機(jī)位就在屏幕上顯示出來當(dāng)前時(shí)刻的空機(jī)位的總數(shù)和所有的空機(jī)位的序號(hào),如果沒有空位則在屏幕上顯示有零臺(tái)空機(jī)位。開始輸入要查詢的時(shí)間n,判斷n是否820YNn=s(n)根據(jù)的n值和輸入的學(xué)號(hào)來查找鏈表中是否有該值和其的位置,從而達(dá)到查詢出我的狀態(tài)的目的提示:輸入錯(cuò)誤,請(qǐng)重新輸入void search() int n; char xh10; struct yonghu *pp; system("cls");printf("輸入查詢時(shí)間(24 hours 820 o'clock,include 8o'clo
9、ck)n"); /*驗(yàn)證輸入的時(shí)間*/scanf("%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) /*通過指針后移查找信息*/if(strcmp(pp->jh,xh)=0)break; if(pp->jh!=0) printf("The computer number is
10、%dn",pp->jh); else printf("對(duì)不起.你依舊在等待列表中或者沒有預(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ī)位則提示用戶輸入其想要愛預(yù)定的機(jī)位號(hào)并留下學(xué)號(hào)并將其信息加入預(yù)定者信息鏈表中;若沒有空機(jī)位則向用戶顯示其想要預(yù)定的那臺(tái)機(jī)器最短的等待時(shí)間并提示是否等待,如果用戶愿意等待則提示用戶輸入其想要愛預(yù)定的機(jī)位號(hào)并留下學(xué)號(hào)將用戶的信息加入等待列表中。分析
11、在該模塊的設(shè)計(jì)中,要讓預(yù)約者按預(yù)約的順序儲(chǔ)存在結(jié)構(gòu)體中。當(dāng)預(yù)約者的總數(shù)小于最大值時(shí),就要用到通過指針的移動(dòng)來把預(yù)約者的信息按順序儲(chǔ)存起來,用兩個(gè)不同的指針分別指向鏈表的開始,鏈表的結(jié)尾處。流程圖輸入時(shí)間8-20調(diào)用detail函數(shù),sumT的值改變開始輸出空機(jī)位數(shù),是否等待Y調(diào)用指向隊(duì)列的指針,輸入預(yù)定機(jī)位號(hào)學(xué)號(hào),追加一個(gè)結(jié)構(gòu)體成員。返回主菜單執(zhí)行一個(gè)循環(huán),進(jìn)入后面的時(shí)間段【程序】void booking() /*預(yù)定模塊*/ int n; char xh10; struct yonghu *pp; struct yonghu *p; system("cls");print
12、f("輸入想要預(yù)定的時(shí)間n"); 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 yonghu *)malloc(sizeof(struct yonghu); /*動(dòng)態(tài)申請(qǐng)存儲(chǔ)空間*/pp->jh=1; /*預(yù)定到第一臺(tái)機(jī)器*/strcpy(pp->data,x
13、h); pp->next=NULL; Timen.first=pp; Timen.last=pp; Timen.CNum+; printf("成功預(yù)定n"); else pp=(struct yonghu *)malloc(sizeof(struct yonghu); 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.CN
14、um+; /*被預(yù)定的機(jī)器數(shù)目追加一*/printf("成功預(yù)定n"); else printf("沒有空余機(jī)位!"); else printf("錯(cuò)誤.請(qǐng)?jiān)俅屋斎?n"); void search() int n; char xh10; struct yonghu *pp; system("cls");printf("輸入查詢時(shí)間(24 hours 820 o'clock,include 8o'clock)n"); /*驗(yàn)證輸入的時(shí)間*/scanf("%d"
15、,&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) /*通過指針后移查找信息*/if(strcmp(pp->jh,xh)=0)break; if(pp->jh!=0) printf("The computer number is %dn",pp->jh); else printf("對(duì)不起.
16、你依舊在等待列表中或者沒有預(yù)定"); else printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?n"); 4.查詢空機(jī)位模塊分析根據(jù)輸入的時(shí)間確定n值,然后根據(jù)結(jié)構(gòu)體中Time中的Time n->Cnum的值,求出最大值與該值的差即為空機(jī)位數(shù)。本模塊的功能是通過調(diào)用鏈表查詢用戶輸入的時(shí)間段的機(jī)位狀態(tài)如果有空機(jī)位就在屏幕上顯示出來當(dāng)前時(shí)刻的空機(jī)位的總數(shù)和所有的空機(jī)位的序號(hào),如果沒有空位則在屏幕上顯示有零臺(tái)空機(jī)位。流程圖輸入要查詢的時(shí)間n判斷n是否820Yns(n) N根據(jù)n的值判斷TimeQueuen->Cnum的值是否小于最大值MAX NY輸出:沒有空機(jī)位空機(jī)位數(shù)=
17、MAXTimeQueuen->CNum 提示:輸入錯(cuò)誤,請(qǐng)重新輸入void inquire() /*查詢空機(jī)位模塊*/ int n; system("cls");printf("輸入想要查詢的時(shí)間(24 hours 820o'clock,include 8 o'clock)n"); scanf("%d",&n); if(n>=8&&n<20) n=T(n); if(Timen.CNum<MAX) printf("There are %d empty comput
18、er!n",MAX-Timen.CNum); else printf("對(duì)不起.沒有空余機(jī)位n"); else printf("錯(cuò)誤,再次輸入.n"); 5.排隊(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ì)的第一人,通過指針的移動(dòng),用指向表尾的指針指向真?zhèn)€鏈表的結(jié)尾。輸入時(shí)間8-20調(diào)用detail函數(shù),sumT的值改變開始輸出空機(jī)位數(shù),是
19、否等待Y在Time n中追加一個(gè)結(jié)構(gòu)體成員。返回主菜單執(zhí)行一個(gè)循環(huán),進(jìn)入后面的時(shí)間段【程序】void paidui() /*排隊(duì)模塊*/ int n; char xh10; struct yonghu *pp; struct yonghu *p; system("cls");printf("請(qǐng)輸入想要排隊(duì)的時(shí)間n"); scanf("%d",&n); if(n>=8&&n<20) n=T(n); if(Timen.CNum>=MAX) printf("請(qǐng)輸入你的學(xué)號(hào)n");
20、 scanf("%s",xh); if(Timen.CNum)=MAX) pp=(struct yonghu *)malloc(sizeof(struct yonghu); 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"); else pp=(struct yonghu *)malloc(si
21、zeof(struct yonghu); 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ī)位,無須等待n"); else printf("錯(cuò)誤.再次輸入.n"); 6.取消預(yù)約模塊分析 要取消預(yù)約,有兩種情況,第一是從有機(jī)位的人要取消預(yù)約,在該種情況下,排隊(duì)的第一人的位置就插入到該取消者的位置。
22、而指向等待隊(duì)列首地址的指針就指向原來排隊(duì)的第二人。第二種情況就是取消約的人本來就在等待隊(duì)列中,只需要直接刪除該結(jié)點(diǎn)即可。流程圖輸入要查詢的時(shí)間n判斷n是否820N提示:輸入錯(cuò)誤請(qǐng)重新輸入nT(n)輸入學(xué)號(hào),查找該鏈表中該信息的位置i,i是否不大于MAXYNNN 退出預(yù)約退出預(yù)約,排隊(duì)者的第一人插入該預(yù)約者的位置?!境绦颉縱oid cancel() /*取消模塊*/ int n; int i; char xh10; struct yonghu *pp; struct yonghu *q; struct yonghu *p; system("cls");printf("
23、;請(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->next=NULL) q->next=NULL; Timen.last=q; fre
24、e(pp); Timen.CNum-; printf("取消成功!n"); else q->next=pp->next; free(pp); Timen.CNum-; printf("成功退出!n"); else if(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; free(pp); Timen.
25、CNum-; printf("成功取消預(yù)定!n"); else printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?n"); 7.查詢等待信息模塊分析通過輸入的時(shí)間,判斷儲(chǔ)存該時(shí)間段的結(jié)構(gòu)體鏈表,通過比較Timen中Cnum的值與最大值的大小關(guān)系就可以得到是否有等待者的信息,本模塊通過讀取用戶輸入的時(shí)間先調(diào)用結(jié)構(gòu)體鏈表在屏幕上顯示出用戶要查詢的時(shí)間段的包含用戶的機(jī)位號(hào)和學(xué)號(hào)。流程圖 N輸入要查詢的時(shí)間n判斷n是否820Yns(n)提示:輸入錯(cuò)誤請(qǐng)重新輸入根據(jù)n的值判斷Time n->Cnum的值是否小于最大值MAX YN有等待者沒有等待者【程序】void searc
26、h_waiting() /*查詢等待模塊*/ int n; struct yonghu *q; system("cls");printf("查詢其他等待者的預(yù)定時(shí)間n"); scanf("%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&quo
27、t;,q->data); printf("%sn",Timen.last->data); /*輸出等待者*/ else printf("這個(gè)時(shí)間段沒有預(yù)定者n"); else printf("錯(cuò)誤。請(qǐng)?jiān)俅屋斎?n"); 輸入時(shí)間8-20調(diào)用Timen中Cnum輸出到屏幕上,顯示等待信息YN開始返回主菜單五、用戶手冊(cè)請(qǐng)根據(jù)系統(tǒng)提示正確輸入以防止程序無法進(jìn)行。六、調(diào)試及測試菜單界面1、 預(yù)定功能:2、 查詢功能3、 查詢預(yù)定機(jī)位的功能4、取消功能七、總結(jié)短短的一個(gè)星期的上機(jī)實(shí)習(xí)結(jié)束了。復(fù)習(xí)了理論知識(shí)、編程、調(diào)試、改錯(cuò),直至存盤
28、,同樣的環(huán)節(jié)、同樣的工作步驟,重復(fù)又重復(fù),枯燥而乏味;看似簡單的程序題,編寫后調(diào)試卻屢屢出錯(cuò)。如何改如何錯(cuò),怎么編寫怎么調(diào)試失敗,心煩而意亂。但奇怪的是,越是如此,我越是不甘失敗。不斷地調(diào)試,反復(fù)地編寫。一旦在黑屏幕的左下角意外地發(fā)現(xiàn)所輸出的信息正是自己意想中的結(jié)果,那份驚喜,那份滿足感,真是令人難以形容。好比幼兒經(jīng)過長時(shí)間堆積不斷倒塌的積木后,終于壘起了一座“大樓”。那份心底里的成就感,可以讓你頓時(shí)忘記了所有的煩躁,因?yàn)槟且磺懈冻龆际侵档玫?。在?shí)習(xí)的過程中,我得到的不僅僅是將理論與實(shí)踐結(jié)合在一起的技巧與方法,而更可貴的是做事情的態(tài)度緩和懂得與人相處的重要性。在學(xué)習(xí)C語言程序設(shè)計(jì)理論時(shí),總覺得
29、這一切都太簡單了,原來什神秘的IT領(lǐng)域是那么的簡單易懂,只要掌握了其中的方法,上機(jī)并不成問題。結(jié)果卻是大大出乎我的意料。編寫的程序從理論上來說并未出錯(cuò),但一到上機(jī)調(diào)試時(shí)卻無法運(yùn)行;即算是課本的問題原封不動(dòng)地照搬,也可能回得到截然不同的結(jié)果這讓我對(duì)于鄧小平同志所提倡的做事態(tài)度“解放思想,實(shí)事求是”頓時(shí)有了一種清晰的認(rèn)識(shí)。正因?yàn)榫幊痰睦щy與復(fù)雜,同學(xué)間的合作與互助就顯得尤為有效。對(duì)于同一道程序題,合作互助讓我們掌握更多種方法;對(duì)于復(fù)雜乏味的調(diào)試,合作互助讓我們更容易找到錯(cuò)誤所在,從而提高編程效率。合作互助更增進(jìn)了同學(xué)之間(不管之前認(rèn)識(shí)與否)的感情與友誼,拉近了彼此的距離。經(jīng)過一學(xué)期的C語言學(xué)習(xí),我
30、們對(duì)C語言這門課程有了一定的了解。從開始接觸C語言到現(xiàn)在,經(jīng)過一學(xué)期的學(xué)習(xí)。對(duì)C語言了解也越來越多。在我看來C語言是一門很難學(xué)的學(xué)科,不僅需要我們動(dòng)手去寫,更需要我們用腦去思考,用心去體會(huì)。慢慢理解吸收。如同樞紐一樣,C串聯(lián)許多重要的內(nèi)容。我們要很好的學(xué)好這一學(xué)科,就必須下大工夫,把點(diǎn)滴內(nèi)容掌握扎實(shí),用心學(xué)習(xí)。編程是我們之前在與電腦的相處中未曾觸碰到的一個(gè)領(lǐng)域,通過這一學(xué)期的學(xué)習(xí),初步體會(huì)到了編程的方法和魅力的地方,也消除了一些之前對(duì)“電腦是怎么工作”的疑問??梢哉f,它開闊了我們的視野,使我們進(jìn)入了一個(gè)全新的世界,這個(gè)世界里還有很多事物等著我們?nèi)グl(fā)現(xiàn)和學(xué)習(xí),許多東西等著我們?nèi)パ芯?,很多道路等?/p>
31、我們?nèi)ラ_拓!那么通過這一個(gè)學(xué)期的學(xué)習(xí)我們的收獲如何呢?學(xué)校安排的這門新課程C語言課程設(shè)計(jì),正是對(duì)我們之前學(xué)習(xí)的一種考驗(yàn)。對(duì)于我們自己來說,這也是一次自我考驗(yàn)的機(jī)會(huì);不僅僅是對(duì)語言知識(shí)的考驗(yàn),它更加重要的是對(duì)我們動(dòng)手能力的考驗(yàn)!在程序的調(diào)試與測試以及心得體會(huì)。1、我是在C程序設(shè)計(jì)系統(tǒng)中調(diào)試程序的。開始時(shí)錯(cuò)誤很多,我一下子被嚇住了, 從開始學(xué)習(xí)C語言到現(xiàn)在從未遇到過那么多的錯(cuò)誤,我都不知道如何去改正錯(cuò)誤。那么多的錯(cuò)誤意味著我有好多知識(shí)沒掌握。但是對(duì)于這份程序,我必須去慢慢逐個(gè)檢查,慢慢縮減錯(cuò)誤。要讓這個(gè)程序能通過運(yùn)行。在這個(gè)信念的支持下,我開始在改正錯(cuò)誤的道路上前行,雖然進(jìn)度緩慢,但也不是沒有成就
32、。一些簡單的錯(cuò)誤在我的細(xì)心努力下,錯(cuò)誤一點(diǎn)一點(diǎn)的減少。再次運(yùn)行后還有一些錯(cuò)誤,這些錯(cuò)誤都是不常見的,所以改正起來并沒有那么簡單。但世上無難事,只怕有心人。經(jīng)過努力,還是讓程序成功運(yùn)行。2、心得體會(huì):編寫C語言程序首先要有思路,只要要了基本的骨架,那接下來的工作就簡單了。但很多方面仍需要我們注意,例如一些語法上的錯(cuò)誤要盡量避免。 第一次遇到這么難的題目,難免心里 覺得畏懼。有上網(wǎng)百度搜索的想法,但我覺得這畢竟是一份作業(yè),更側(cè)重的是鍛煉我們的學(xué)習(xí)能力,檢查我們上學(xué)期的知識(shí)掌握情況,如果隨便在百度上搜索,難免有些對(duì)自己不負(fù)責(zé)任。對(duì)自己學(xué)習(xí)的馬虎。對(duì)于C語言作業(yè)應(yīng)該先自己思考,即使剛開始一點(diǎn)思路也沒有
33、,也要這樣做,在老師的耐心幫助下我最終克服了我在完成這一次的課程設(shè)計(jì)作業(yè)的過程中遇到的各種困難。因此,在此我也要向幫助過我的高老師和屠老師表示感謝。參考文獻(xiàn):1 黃明等編著C語言課程設(shè)計(jì)北京:電子工業(yè)出版社2 郭翠英編著C語言課程設(shè)計(jì)案例精編北京:中國水利水電出版社3 寧正元數(shù)據(jù)結(jié)構(gòu)(c語言) 南京:東南大學(xué)出版社。2000年6月第1版4 嚴(yán)蔚敏等 數(shù)據(jù)結(jié)構(gòu)(c語言版) 北京:清華大學(xué)出版社,1997年4月第1版5 譚浩強(qiáng)編著C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第3版) 北京:清華大學(xué)出版社6 譚浩強(qiáng)編著C程序設(shè)計(jì)(第3版) 北京:清華大學(xué)出版社源程序:#include<stdio.h> #
34、include<stdlib.h> #include<string.h> #define time 6 #define MAX 20 #define T(r) (r-8)/2 #define NULL 0 struct yonghu/*用戶信息*/ int jh; char data10; struct yonghu *next; ; struct yonghu *head; struct cell/*排隊(duì)的隊(duì)列*/ int CNum; struct yonhu *first; /*指向隊(duì)列開頭*/struct yonghu *middle; /*指向排隊(duì)隊(duì)列*/str
35、uct yonghu *last; /*指向?qū)Y(jié)尾*/Timetime; void booking() /*預(yù)定模塊*/ int n; char xh10; struct yonghu *pp; struct yonghu *p; system("cls");printf("輸入想要預(yù)定的時(shí)間n"); scanf("%d",&n); if(n>=8&&n<20) n=T(n); if(Timen.CNum<MAX) printf("請(qǐng)輸入你的學(xué)號(hào)n"); scanf(&qu
36、ot;%s",xh); if(Timen.first=NULL) pp=(struct yonghu *)malloc(sizeof(struct yonghu); /*動(dòng)態(tài)申請(qǐng)存儲(chǔ)空間*/pp->jh=1; /*預(yù)定到第一臺(tái)機(jī)器*/strcpy(pp->data,xh); pp->next=NULL; Timen.first=pp; Timen.last=pp; Timen.CNum+; printf("成功預(yù)定n"); else pp=(struct yonghu *)malloc(sizeof(struct yonghu); strcpy(
37、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("沒有空余機(jī)位!"); else printf("錯(cuò)誤.請(qǐng)?jiān)俅屋斎?n"); void search() int n; char xh10; struc
38、t yonghu *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); printf("請(qǐng)輸入學(xué)號(hào)n"); scanf("%s",xh); pp=Timen.first; for(;pp->next!=NULL;pp=pp->next)
39、 /*通過指針后移查找信息*/if(strcmp(pp->jh,xh)=0)break; if(pp->jh!=0) printf("The computer number is %dn",pp->jh); else printf("對(duì)不起.你依舊在等待列表中或者沒有預(yù)定"); else printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?n"); void paidui() /*排隊(duì)模塊*/ int n; char xh10; struct yonghu *pp; struct yonghu *p; system("cls
40、");printf("請(qǐng)輸入想要排隊(duì)的時(shí)間n"); 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.CNum)=MAX) pp=(struct yonghu *)malloc(sizeof(struct yonghu); strcpy(pp->data,xh); pp->next=NULL; p
41、p->jh=0; p=Timen.last; /*指向排隊(duì)隊(duì)列結(jié)尾處*/Timen.last=pp; p->next=pp; Timen.middle=pp; Timen.CNum+; printf("成功排隊(duì)n"); else pp=(struct yonghu *)malloc(sizeof(struct yonghu); strcpy(pp->data,xh); pp->next=NULL; pp->jh=0; p=Timen.last; Timen.last=pp; p->next=pp; Timen.CNum+; printf(
42、"成功排隊(duì)n"); else printf("有空余機(jī)位,無須等待n"); else printf("錯(cuò)誤.再次輸入.n"); void inquire() /*查詢空機(jī)位模塊*/ int n; system("cls");printf("輸入想要查詢的時(shí)間(24 hours 820o'clock,include 8 o'clock)n"); scanf("%d",&n); if(n>=8&&n<20) n=T(n); if
43、(Timen.CNum<MAX) printf("There are %d empty computer!n",MAX-Timen.CNum); else printf("對(duì)不起.沒有空余機(jī)位n"); else printf("錯(cuò)誤,再次輸入.n"); void cancel() /*取消模塊*/ int n; int i; char xh10; struct yonghu *pp; struct yonghu *q; struct yonghu *p; system("cls");printf("
44、請(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->next=NULL) q->next=NULL; Timen.last=q; free(pp); Timen.CNum-; printf("取消成功!n"); else q->next=pp->next; free(pp); Timen.CNum-; pri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北工藝美術(shù)職業(yè)學(xué)院《地下工程項(xiàng)目管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 硅湖職業(yè)技術(shù)學(xué)院《信息系統(tǒng)分析與設(shè)計(jì)實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025河南省安全員A證考試題庫附答案
- 2025山西省建筑安全員知識(shí)題庫
- 南京理工大學(xué)泰州科技學(xué)院《機(jī)械CAD-CAM》2023-2024學(xué)年第二學(xué)期期末試卷
- 石家莊城市經(jīng)濟(jì)職業(yè)學(xué)院《美術(shù)鑒賞》2023-2024學(xué)年第二學(xué)期期末試卷
- 云南現(xiàn)代職業(yè)技術(shù)學(xué)院《汽車標(biāo)準(zhǔn)與法規(guī)》2023-2024學(xué)年第二學(xué)期期末試卷
- 電梯保養(yǎng)合同-文書模板
- 2024年中學(xué)教學(xué)年終工作總結(jié)范本
- 新本月工作計(jì)劃
- 涂裝工技能鑒定考試題庫匯總-下(多選、判斷題部分)
- 非遺傳統(tǒng)文化課件
- 橋梁施工常見問題及預(yù)防控制要點(diǎn)(PPT,46)
- 中俄文一般貿(mào)易合同范本
- 知情同意書核查要點(diǎn)課件
- 廣東省深圳市2021-2022學(xué)年高二下學(xué)期期末考試 語文 Word版含解析
- 專項(xiàng)施工方案專家論證意見回復(fù)表
- 《醫(yī)古文》教學(xué)全套課件580頁
- 水電廠計(jì)算機(jī)監(jiān)控系統(tǒng)改造技術(shù)要求
- 勝利油田壓驅(qū)技術(shù)工藝研究進(jìn)展及下步工作方向
- 依戀理論之母嬰依戀
評(píng)論
0/150
提交評(píng)論