版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 程序設(shè)計報告</b></p><p><b> C語言程序設(shè)計</b></p><p> 編程實踐是學(xué)習(xí)C語言程序設(shè)計的一重要環(huán)節(jié),為提高學(xué)生程序設(shè)計能力,通過課堂和上機實踐練習(xí)使學(xué)生的程序設(shè)計能力上一臺階。通過前四單元溫顧而知新、庖丁解牛、舉一反三、熟能生巧等過程的練習(xí)設(shè)計下面一個完整的程序</p>
2、<p><b> 題目要求</b></p><p> 設(shè)計“機房機位預(yù)約模擬系統(tǒng)”</p><p> 要求:20臺機器,從早8點到晚8點,每兩個小時一個時間段。 </p><p><b> 需要實現(xiàn)功能: </b></p><p> 1,查詢,根據(jù)輸入時間,輸出機位信息。 &
3、lt;/p><p> 2,即為預(yù)定,根據(jù)輸入的日期和時間段查詢是否有空機位,若有則預(yù)約,若無則提供最近空機時間段。另:若用戶要求在非空時間上機,則將用戶信息插入該時間段的等待列表. </p><p> 3,退出預(yù)定,根據(jù)輸入的時間,撤銷該時間的預(yù)定。 </p><p> 4,查詢是否有等待的信息,若有則按順序顯示聯(lián)系方式,若無則顯示提示信息。</p>
4、<p><b> 2需求分析</b></p><p> 根據(jù)題目要求在程序中需實現(xiàn)查詢,預(yù)定,排隊等功能的操作,所以需要建立相應(yīng)的模塊來實現(xiàn);另外還需提供鍵盤式選擇菜單實現(xiàn)功能,在運行時達(dá)到所要目的。</p><p><b> 3總體設(shè)計</b></p><p> 整個系統(tǒng)可分為3個模塊 查詢模塊 預(yù)定
5、模塊 取消模塊</p><p><b> 詳細(xì)設(shè)計 </b></p><p> 主函數(shù)比較簡潔,只提供輸入、功能處理和輸出部分的函數(shù)調(diào)用。</p><p><b> main() </b></p><p><b> { </b></p><p>
6、;<b> int i; </b></p><p> for(i=0;i<LENGTH;i++){ </p><p> TimeQueue[i].CNum=0; </p><p> TimeQueue[i].first=NULL; </p><p> TimeQueue[i].middle=NULL; &
7、lt;/p><p> TimeQueue[i].last=NULL; </p><p><b> } </b></p><p> while(1){ </p><p> printf("請輸入序號!:\n"); </p><p> printf("1. 查詢預(yù)定
8、的機位 2.查詢空機位 3.預(yù)定 4. 取消預(yù)定 5.等待列表 6.查詢等待者列表 0.退出\n"); </p><p> scanf("%d",&i); </p><p> switch(i) </p><p><b> { </b></p><p> case 1:Inq
9、uir();break; </p><p> case 2:inquir();break; </p><p> case 3:booking();break; </p><p> case 4:cancel();break; </p><p> case 5:waiting();break; </p><p>
10、 case 6:inquir_waiting();break; </p><p> case 0:exit(0); </p><p> default:printf("error\n");</p><p><b> } </b></p><p><b> } </b>&
11、lt;/p><p><b> }</b></p><p> void Inquir() </p><p><b> { </b></p><p><b> int n; </b></p><p> char Infor[10]; </p>
12、;<p> struct node *Rem; </p><p> printf("輸入查詢時間(24 hours 8~20 o'clock,include 8o'clock)\n"); </p><p> scanf("%d",&n); </p><p> if(n>=8&
13、amp;&n<20){ </p><p><b> n=S(n); </b></p><p> printf("請輸入學(xué)號\n"); </p><p> scanf("%s",Infor); </p><p> Rem=TimeQueue[n].first;
14、</p><p> for(;Rem->next!=NULL;Rem=Rem->next) </p><p> if(strcmp(Rem->data,Infor)==0)break; </p><p> if(Rem->locat!=0) </p><p> printf("The computer
15、 number is %d\n",Rem->locat); </p><p> else printf("對不起.你依舊在等待列表中或者沒有預(yù)定"); </p><p><b> } </b></p><p> else printf("錯誤,請再次輸入.\n"); </p&g
16、t;<p><b> } </b></p><p> void inquir() </p><p><b> { </b></p><p><b> int n; </b></p><p> printf("輸入想要查詢的時間(24 hours
17、 8~20o'clock,include 8 o'clock)\n"); </p><p> scanf("%d",&n); </p><p> if(n>=8&&n<20){ </p><p><b> n=S(n); </b></p>&l
18、t;p> if(TimeQueue[n].CNum<MAX) </p><p> printf("There are %d empty computer!\n",MAX-TimeQueue[n].CNum); </p><p> else printf("對不起.沒有空余機位\n"); </p><p>&l
19、t;b> } </b></p><p> else printf("錯誤,再次輸入.\n"); </p><p><b> }</b></p><p> 預(yù)定模塊 </p><p> void booking() &
20、lt;/p><p><b> { </b></p><p><b> int n; </b></p><p> char Infor[10]; </p><p> struct node *Rem; </p><p> struct node *p; </p>
21、;<p> printf("輸入想要預(yù)定的時間\n"); </p><p> scanf("%d",&n); </p><p> if(n>=8&&n<20){ </p><p><b> n=S(n); </b></p><p
22、> if(TimeQueue[n].CNum<MAX){ </p><p> printf("請輸入你的學(xué)號\n"); </p><p> scanf("%s",Infor); </p><p> if(TimeQueue[n].first==NULL){ </p><p> Re
23、m=(struct node *)malloc(sizeof(struct node)); </p><p> Rem->locat=1; </p><p> strcpy(Rem->data,Infor); </p><p> Rem->next=NULL; </p><p> TimeQueue[n].first
24、=Rem; </p><p> TimeQueue[n].last=Rem; </p><p> TimeQueue[n].CNum++; </p><p> printf("成功預(yù)定\n"); </p><p><b> } </b></p><p><b>
25、; else{ </b></p><p> Rem=(struct node *)malloc(sizeof(struct node)); </p><p> strcpy(Rem->data,Infor); </p><p> Rem->next=NULL; </p><p> p=TimeQueue[n]
26、.last; </p><p> Rem->locat=TimeQueue[n].CNum+1; </p><p> printf("%d",Rem->locat); </p><p> TimeQueue[n].last=Rem; </p><p> p->next=Rem; </p>
27、;<p> TimeQueue[n].CNum++; </p><p> printf("成功預(yù)定\n"); </p><p><b> } </b></p><p><b> } </b></p><p> else printf("沒有空余機
28、位!"); </p><p><b> } </b></p><p> else printf("錯誤.請再次輸入.\n"); </p><p><b> } </b></p><p> void waiting() </p><p>&
29、lt;b> { </b></p><p><b> int n; </b></p><p> char Infor[10]; </p><p> struct node *Rem; </p><p> struct node *p; </p><p> printf(
30、"請輸入想要排隊的時間\n"); </p><p> scanf("%d",&n); </p><p> if(n>=8&&n<20){ </p><p><b> n=S(n); </b></p><p> if(TimeQueue[n
31、].CNum>=MAX){ </p><p> printf("請輸入你的學(xué)號\n"); </p><p> scanf("%s",Infor); </p><p> if((TimeQueue[n].CNum)==MAX){ </p><p> Rem=(struct node *)ma
32、lloc(sizeof(struct node)); </p><p> strcpy(Rem->data,Infor); </p><p> Rem->next=NULL; </p><p> Rem->locat=0; </p><p> p=TimeQueue[n].last; </p><
33、p> TimeQueue[n].last=Rem; </p><p> p->next=Rem; </p><p> TimeQueue[n].middle=Rem; </p><p> TimeQueue[n].CNum++; </p><p> printf("成功排隊\n"); </p&g
34、t;<p><b> } </b></p><p><b> else{ </b></p><p> Rem=(struct node *)malloc(sizeof(struct node)); </p><p> strcpy(Rem->data,Infor); </p>&l
35、t;p> Rem->next=NULL; </p><p> Rem->locat=0; </p><p> p=TimeQueue[n].last; </p><p> TimeQueue[n].last=Rem; </p><p> p->next=Rem; </p><p>
36、TimeQueue[n].CNum++; </p><p> printf("成功排隊\n"); </p><p><b> } </b></p><p><b> } </b></p><p> else printf("有空余機位,無須等待\n")
37、; </p><p><b> } </b></p><p> else printf("錯誤.再次輸入.\n"); </p><p><b> }</b></p><p> 取消模塊 </p><p>
38、; void cancel() </p><p><b> { </b></p><p><b> int n; </b></p><p><b> int i; </b></p><p> char Infor[10]; </p><p>
39、 struct node *Rem; </p><p> struct node *q; </p><p> struct node *p; </p><p> printf("請輸入預(yù)定的時間\n"); </p><p> scanf("%d",&n); </p><
40、;p> if(n>=8&&n<20){ </p><p> printf("Please input your No.!\n"); </p><p> scanf("%s",Infor); </p><p><b> n=S(n); </b></p>
41、<p> Rem=TimeQueue[n].first; </p><p><b> q=Rem; </b></p><p> for(i=1;;q=Rem,Rem=Rem->next,i++) </p><p> if(strcmp(Rem->data,Infor)==0)break; </p>
42、<p> if(i>MAX){ </p><p> if(Rem->next==NULL){ </p><p> q->next=NULL; </p><p> TimeQueue[n].last=q; </p><p> free(Rem); </p><p> TimeQue
43、ue[n].CNum--; </p><p> printf("Succeed to out the queue!\n"); </p><p><b> } </b></p><p><b> else{ </b></p><p> q->next=Rem->
44、next; </p><p> free(Rem); </p><p> TimeQueue[n].CNum--; </p><p> printf("Succeed to out the queue!\n"); </p><p><b> } </b></p><p>
45、;<b> } </b></p><p><b> else{ </b></p><p> if(TimeQueue[n].CNum>MAX){ </p><p> TimeQueue[n].middle->locat=Rem->locat; </p><p> Time
46、Queue[n].middle=TimeQueue[n].middle->next; </p><p><b> } </b></p><p> if(i==1) TimeQueue[n].first=Rem->next; </p><p> else q->next=Rem->next; </p>
47、<p> free(Rem); </p><p> TimeQueue[n].CNum--; </p><p> printf("成功取消預(yù)定!\n");</p><p> 附錄源代碼:#include<stdio.h> </p><p> #include<stdlib.h>
48、</p><p> #include<string.h> </p><p> #define LENGTH 6 </p><p> #define MAX 20 </p><p> #define S(r) (r-8)/2 </p><p> #define NULL 0 </p>
49、<p> struct node{ </p><p> int locat; </p><p> char data[10]; </p><p> struct node *next; </p><p><b> }; </b></p><p> struct node *h
50、ead; </p><p> struct cell{ </p><p> int CNum; </p><p> struct node *first; </p><p> struct node *middle; </p><p> struct node *last; </p><p
51、> }TimeQueue[LENGTH]; </p><p> void Inquir() </p><p><b> { </b></p><p><b> int n; </b></p><p> char Infor[10]; </p><p> st
52、ruct node *Rem; </p><p> printf("輸入查詢時間(24 hours 8~20 o'clock,include 8o'clock)\n"); </p><p> scanf("%d",&n); </p><p> if(n>=8&&n<20
53、){ </p><p><b> n=S(n); </b></p><p> printf("請輸入學(xué)號\n"); </p><p> scanf("%s",Infor); </p><p> Rem=TimeQueue[n].first; </p><
54、p> for(;Rem->next!=NULL;Rem=Rem->next) </p><p> if(strcmp(Rem->data,Infor)==0)break; </p><p> if(Rem->locat!=0) </p><p> printf("The computer number is %d\n&
55、quot;,Rem->locat); </p><p> else printf("對不起.你依舊在等待列表中或者沒有預(yù)定"); </p><p><b> } </b></p><p> else printf("錯誤,請再次輸入.\n"); </p><p><
56、;b> } </b></p><p> void inquir() </p><p><b> { </b></p><p><b> int n; </b></p><p> printf("輸入想要查詢的時間(24 hours 8~20o'clock
57、,include 8 o'clock)\n"); </p><p> scanf("%d",&n); </p><p> if(n>=8&&n<20){ </p><p><b> n=S(n); </b></p><p> if(Time
58、Queue[n].CNum<MAX) </p><p> printf("There are %d empty computer!\n",MAX-TimeQueue[n].CNum); </p><p> else printf("對不起.沒有空余機位\n"); </p><p><b> } </
59、b></p><p> else printf("錯誤,再次輸入.\n"); </p><p><b> } </b></p><p> void booking() </p><p><b> { </b></p><p><b>
60、; int n; </b></p><p> char Infor[10]; </p><p> struct node *Rem; </p><p> struct node *p; </p><p> printf("輸入想要預(yù)定的時間\n"); </p><p> sc
61、anf("%d",&n); </p><p> if(n>=8&&n<20){ </p><p><b> n=S(n); </b></p><p> if(TimeQueue[n].CNum<MAX){ </p><p> printf("
62、請輸入你的學(xué)號\n"); </p><p> scanf("%s",Infor); </p><p> if(TimeQueue[n].first==NULL){ </p><p> Rem=(struct node *)malloc(sizeof(struct node)); </p><p> Rem
63、->locat=1; </p><p> strcpy(Rem->data,Infor); </p><p> Rem->next=NULL; </p><p> TimeQueue[n].first=Rem; </p><p> TimeQueue[n].last=Rem; </p><p>
64、; TimeQueue[n].CNum++; </p><p> printf("成功預(yù)定\n"); </p><p><b> } </b></p><p><b> else{ </b></p><p> Rem=(struct node *)malloc(size
65、of(struct node)); </p><p> strcpy(Rem->data,Infor); </p><p> Rem->next=NULL; </p><p> p=TimeQueue[n].last; </p><p> Rem->locat=TimeQueue[n].CNum+1; </p&
66、gt;<p> printf("%d",Rem->locat); </p><p> TimeQueue[n].last=Rem; </p><p> p->next=Rem; </p><p> TimeQueue[n].CNum++; </p><p> printf("成
67、功預(yù)定\n"); </p><p><b> } </b></p><p><b> } </b></p><p> else printf("沒有空余機位!"); </p><p><b> } </b></p><p
68、> else printf("錯誤.請再次輸入.\n"); </p><p><b> } </b></p><p> void waiting() </p><p><b> { </b></p><p><b> int n; </b>&
69、lt;/p><p> char Infor[10]; </p><p> struct node *Rem; </p><p> struct node *p; </p><p> printf("請輸入想要排隊的時間\n"); </p><p> scanf("%d",&
70、amp;n); </p><p> if(n>=8&&n<20){ </p><p><b> n=S(n); </b></p><p> if(TimeQueue[n].CNum>=MAX){ </p><p> printf("請輸入你的學(xué)號\n"); &
71、lt;/p><p> scanf("%s",Infor); </p><p> if((TimeQueue[n].CNum)==MAX){ </p><p> Rem=(struct node *)malloc(sizeof(struct node)); </p><p> strcpy(Rem->data,In
72、for); </p><p> Rem->next=NULL; </p><p> Rem->locat=0; </p><p> p=TimeQueue[n].last; </p><p> TimeQueue[n].last=Rem; </p><p> p->next=Rem; <
73、;/p><p> TimeQueue[n].middle=Rem; </p><p> TimeQueue[n].CNum++; </p><p> printf("成功排隊\n"); </p><p><b> } </b></p><p><b> else
74、{ </b></p><p> Rem=(struct node *)malloc(sizeof(struct node)); </p><p> strcpy(Rem->data,Infor); </p><p> Rem->next=NULL; </p><p> Rem->locat=0; <
75、/p><p> p=TimeQueue[n].last; </p><p> TimeQueue[n].last=Rem; </p><p> p->next=Rem; </p><p> TimeQueue[n].CNum++; </p><p> printf("成功排隊\n");
76、</p><p><b> } </b></p><p><b> } </b></p><p> else printf("有空余機位,無須等待\n"); </p><p><b> } </b></p><p> els
77、e printf("錯誤.再次輸入.\n"); </p><p><b> } </b></p><p> void cancel() </p><p><b> { </b></p><p><b> int n; </b></p>
78、<p><b> int i; </b></p><p> char Infor[10]; </p><p> struct node *Rem; </p><p> struct node *q; </p><p> struct node *p; </p><p> pr
79、intf("請輸入預(yù)定的時間\n"); </p><p> scanf("%d",&n); </p><p> if(n>=8&&n<20){ </p><p> printf("Please input your No.!\n"); </p><
80、;p> scanf("%s",Infor); </p><p><b> n=S(n); </b></p><p> Rem=TimeQueue[n].first; </p><p><b> q=Rem; </b></p><p> for(i=1;;q=Rem
81、,Rem=Rem->next,i++) </p><p> if(strcmp(Rem->data,Infor)==0)break; </p><p> if(i>MAX){ </p><p> if(Rem->next==NULL){ </p><p> q->next=NULL; </p>
82、<p> TimeQueue[n].last=q; </p><p> free(Rem); </p><p> TimeQueue[n].CNum--; </p><p> printf("Succeed to out the queue!\n"); </p><p><b> } &l
83、t;/b></p><p><b> else{ </b></p><p> q->next=Rem->next; </p><p> free(Rem); </p><p> TimeQueue[n].CNum--; </p><p> printf("Su
84、cceed to out the queue!\n"); </p><p><b> } </b></p><p><b> } </b></p><p><b> else{ </b></p><p> if(TimeQueue[n].CNum>MAX
85、){ </p><p> TimeQueue[n].middle->locat=Rem->locat; </p><p> TimeQueue[n].middle=TimeQueue[n].middle->next; </p><p><b> } </b></p><p> if(i==1)
86、TimeQueue[n].first=Rem->next; </p><p> else q->next=Rem->next; </p><p> free(Rem); </p><p> TimeQueue[n].CNum--; </p><p> printf("成功取消預(yù)定!\n"); &l
87、t;/p><p><b> } </b></p><p><b> } </b></p><p> else printf("錯誤,請再次輸入.\n"); </p><p><b> } </b></p><p> void i
88、nquir_waiting() </p><p><b> { </b></p><p><b> int n; </b></p><p> struct node *q; </p><p> printf("查詢其他等待者的預(yù)定時間\n"); </p>&
89、lt;p> scanf("%d",&n); </p><p> if(n>=8&&n<20){ </p><p><b> n=S(n); </b></p><p> if(TimeQueue[n].CNum>MAX){ </p><p> p
90、rintf("等待列表 are:\n"); </p><p> q=TimeQueue[n].middle; </p><p> for(;q->next!=NULL;q=q->next) printf("%s\n",q->data); </p><p> printf("%s\n"
91、,TimeQueue[n].last->data); </p><p><b> } </b></p><p> else printf("這個時間段沒有預(yù)定者\n"); </p><p><b> } </b></p><p> else printf("
92、;錯誤。請再次輸入.\n"); </p><p><b> } </b></p><p><b> main() </b></p><p><b> { </b></p><p><b> int i; </b></p>&
93、lt;p> for(i=0;i<LENGTH;i++){ </p><p> TimeQueue[i].CNum=0; </p><p> TimeQueue[i].first=NULL; </p><p> TimeQueue[i].middle=NULL; </p><p> TimeQueue[i].last=NU
94、LL; </p><p><b> } </b></p><p> while(1){ </p><p> printf("請輸入序號!:\n"); </p><p> printf("1. 查詢預(yù)定的機位 2.查詢空機位 3.預(yù)定 4. 取消預(yù)定 5.等待列表 6.查詢等待者時間列
95、表 0.退出\n"); </p><p> scanf("%d",&i); </p><p> switch(i) </p><p><b> { </b></p><p> case 1:Inquir();break; </p><p> case
96、 2:inquir();break; </p><p> case 3:booking();break; </p><p> case 4:cancel();break; </p><p> case 5:waiting();break; </p><p> case 6:inquir_waiting();break; </p&
97、gt;<p> case 0:exit(0); </p><p> default:printf("error\n"); </p><p><b> } </b></p><p><b> } </b></p><p><b> }</b&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計--機房機位預(yù)定系統(tǒng)
- 機房預(yù)約系統(tǒng)課程設(shè)計報告
- c語言課程設(shè)計報告——機房管理系統(tǒng)
- (c語言)機房收費管理系統(tǒng)課程設(shè)計
- (c語言)機房收費管理系統(tǒng)課程設(shè)計
- (c語言)機房收費管理系統(tǒng)課程設(shè)計
- c語言課程設(shè)計-自動提款模擬系統(tǒng)
- c語言課程設(shè)計---??兆鲬?zhàn)模擬系統(tǒng)
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告-模擬時鐘轉(zhuǎn)動程序
- c語言課程設(shè)計設(shè)計報告--模擬電子時鐘
- c語言課程設(shè)計報告(宿舍管理系統(tǒng))
- c語言課程設(shè)計報告—服裝銷售系統(tǒng)
- c語言課程設(shè)計報告--車票管理系統(tǒng)
- c語言課程設(shè)計報告--成績管理系統(tǒng)
- c語言課程設(shè)計報告(宿舍管理系統(tǒng))
- c語言課程設(shè)計---交通模擬導(dǎo)航系統(tǒng)
評論
0/150
提交評論