



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.目 錄一 課題分析 .3二 邏輯分析 .42.1數(shù)據(jù)結(jié)構(gòu)的描述和每個基本操作的功能說明 .42.1給出本程序包含的模塊及模塊之間的調(diào)用關(guān)系圖 .52.3寫出重要部分的偽碼算法 .6三 詳細(xì)設(shè)計(jì) .73.1數(shù)據(jù)結(jié)構(gòu)的定義 ,及其基本操作的實(shí)現(xiàn) .73.2 主函數(shù)和其他函數(shù)的實(shí)現(xiàn)或偽碼算法 .93.3程序的層次結(jié)構(gòu)的函數(shù)調(diào)用關(guān)系圖 .133.4詳細(xì)設(shè)計(jì) .13四 程序源代碼 .14五 程序調(diào)試與測試 .305.1主界面 .305.2具體操作 .315.2.1 進(jìn)站時間與車牌號 .315.2.2 車站已滿 ,請進(jìn)入臨時車道 .325.2.3出站與收費(fèi) .335.2.4結(jié)束 .335.3相關(guān)操作 .
2、33六 程序中遇到的問題與解決方法 .34.下載可編輯 .6.1寫提綱 .346.2在程序調(diào)試過程 ,遇到的相關(guān)問題 .35七 總結(jié) .42八 參考文獻(xiàn) .43.下載可編輯 .一 課題分析a) 該程序主要利用棧和隊(duì)列來實(shí)現(xiàn)車的到達(dá)及其離開功能 ,其中主要有對各種情況的處理 ,要求如下 :1、要求以棧模擬停車場 ,以隊(duì)列模擬車場外的便道 ,按照從終端讀入的數(shù)據(jù)序列進(jìn)行模擬管理2、要求處理的數(shù)據(jù)元素包括三個數(shù)據(jù)項(xiàng) :汽車 “到達(dá) ”或 “離去 ”信息 ,汽車牌照號碼及到達(dá)或離去的時間3、該系統(tǒng)完成以下功能 :若是車輛到達(dá) ,則輸出汽車在停車場內(nèi)或便道上的停車位置 ;若是離去 ,則輸出汽車在停車場內(nèi)
3、停留的時間和應(yīng)繳納的費(fèi)用 (在便道上停留的時間不收費(fèi) )4、要求棧以順序結(jié)構(gòu)實(shí)現(xiàn) ;b) 程序的輸入 ,程序功能選擇 ,字符型 , A 為到達(dá) , D 離開, E 退出系統(tǒng);車的編號是整型 ,輸入數(shù)字即可 ;時間是 float 類型,可精確到分鐘c) 程序的輸出 ,當(dāng)車到達(dá) ,程序輸出車的編號及到達(dá)時間 ,若棧滿則提示停到便道上 ;車離開時 ,輸出車的編號及其所需費(fèi)用 。d) 測試數(shù)據(jù) ,( A,1,5),( A,2,10 ),( D,1,15),( A,3,.下載可編輯 .20),( A,4,25),( A,5,30),(D,2,35),(D, 4,40),E 以及 a)中的要求 。其中 A
4、表示到達(dá) ,D 表示離開 ,E 表示結(jié)束 。二 邏輯分析2.1 數(shù)據(jù)結(jié)構(gòu)的描述和每個基本操作的功能說明ADT stack數(shù)據(jù)對象 :D=a i | ai CharSet,i=1,2,n,n0數(shù)據(jù)關(guān)系 :R1=<a i-1 ,ai >| a i-1, a i D,i=2,n基本操作 :initstack()操作結(jié)果 :構(gòu)造一個空棧 ,并返回地址 。gettop(&S)初使條件 :棧 S 已存在 。操作結(jié)果 :棧 S 不為空 ,輸出頂元素 。stop(&S,e)初始條件 :棧 S 已存在 。操作結(jié)果 :要棧 S 中棧頂插入新的棧頂元素e。ADT queue數(shù)據(jù)對象 :D
5、=a i | ai ElemSet,i=1,2,n,n0.下載可編輯 .數(shù)據(jù)關(guān)系 :R1=<a i-1 ,ai >| a i-1, a i D,i=2,n約定其中 ai 端為隊(duì)列的頭 ,an 端為隊(duì)列的尾initqueue(&Q)操作結(jié)果 :構(gòu)造一個空棧 ,并返回地址 。gethead(&S)初使條件 :棧 S 已存在 。操作結(jié)果 :棧 S 不為空 ,輸出頂元素 。enqueue(&S,e)初始條件 :棧 S 已存在 。操作結(jié)果 :要棧 S 中棧頂插入新的棧頂元素e2.1 給出本程序包含的模塊及模塊之間的調(diào)用關(guān)系圖本程序包含三個模塊 :1)主程序模塊 :Vo
6、id main ()初始化;do接受命令 ;處理命令 ;.下載可編輯 .while (命令!= “退出 ”)2)棧模塊 實(shí)現(xiàn)棧抽象數(shù)據(jù)類型3)隊(duì)列模塊 實(shí)現(xiàn)隊(duì)列抽象數(shù)據(jù)類型2.3 寫出重要部分的偽碼算法車輛到達(dá)或者離開的偽碼算法:do輸出菜單選項(xiàng) ;如果選擇 A,即車輛到達(dá) ,則若棧不滿 ,車輛進(jìn)棧 ,停到停車場 ;否則,車入隊(duì),車停在便道上 ;如果選擇 D,即車輛離開 ,則 如果隊(duì)不空并且棧不滿 ,被選的車輛離開 ,隊(duì)列上的車出隊(duì)入棧;被選的車輛離開 ;計(jì)算時間及其所需費(fèi)用 ;如果選擇 E,退出程序 ;while (輸入的菜單選項(xiàng)不正確 ).下載可編輯 .三 詳細(xì)設(shè)計(jì)3.1 數(shù)據(jù)結(jié)構(gòu)的定義
7、,及其基本操作的實(shí)現(xiàn)typedef struct timeint hour;int min;Time;typedef struct/車信息char label10;float time;Car,Car2;typedef struct/車庫信息Car *top;Car *base;int stacksize;.下載可編輯 .SqStack;typedef struct/臨時車道Car2 *top2;Car2 *base2;int stacksize2;SqStack2;typedef struct QNode/車道信息Car data;struct QNode *next;QNode,*Queu
8、ePtr;typedef structQueuePtr front;QueuePtr rear;LinkQueue;.下載可編輯 .3.2 主函數(shù)和其他函數(shù)的實(shí)現(xiàn)或偽碼算法void main()SqStack S;SqStack2 S2;InitStack(&S);InitStack2(&S2);InitQueue(&Q);/初始化while(ch=1)doprintf("nttttA-車 輛 到 達(dá)nttttD-車 輛 離 開nttttE-退出 nttttA/D/E ?b");scanf("%c",&status);ge
9、tchar();while(status!='A'&&status!='a'&&status!='D'&&status!='d'&&status!='E'&&status!='e');if(status='A'|status='a')/當(dāng)車到達(dá).下載可編輯 .輸入車號 ;輸入車到達(dá)時間 ;if(!StackFull(S)/ 棧不滿車入棧;printf("ntttt繼續(xù)請輸入1nt
10、ttt放棄請輸入0 ?b");scanf("%d",&ch);getchar();/ifelse車入隊(duì);printf("ntttt繼續(xù)請輸入1ntttt放棄請輸入0 ?b");scanf("%d",&ch);getchar();/else/if 當(dāng)車到達(dá)else if(status='D'|status='d')/*當(dāng)車離開 */.下載可編輯 .do輸入車號 ;輸入車離開時間 ;doPop(&S,&car_M);if(car_D.label!=car_M.lab
11、el)Push2(&S2,car_M);elsecar_I.time=car_M.time;while(car_D.label!=car_M.label);position_s-;while(!StackEmpty2(S2)/棧 2 不空Pop2(&S2,&car_M);Push(&S,car_M);/whilewhile(!QueueEmpty(Q)&&!StackFull(S)if(!StackFull(S).下載可編輯 .棧不滿的話 ,臨時車道上的車進(jìn)棧/if/whiletime=car_D.time-car_I.time;if(time&
12、lt;0.00)printf("nttttSorry!Youinputawrongtime !nttttPlease check and type again.n");/ifelse計(jì)算停車時間 ;計(jì)算所需費(fèi)用 ;/elseprintf("nttttWelcome to back ! Do you want to continuentttt1-contine/0-quit ?b");scanf("%d",&ch);getchar();while(!mistime);/else ifelse exit(0);/退出程序.下載可編
13、輯 ./ 第一個 while/main3.3 程序的層次結(jié)構(gòu)的函數(shù)調(diào)用關(guān)系圖Main()initstack(Initstack2(DeQueue(EnQueue)initqueueStackFullQueueEmpty3.4 詳細(xì)設(shè)計(jì)根據(jù)老師的要求 ,在這里我主要分析程序設(shè)計(jì)中停車場管理系統(tǒng)的進(jìn)站模塊:該模塊涉及多個函數(shù),過程依次有初始化 ,選擇進(jìn)站輸入A ,車牌號,時間。若站滿 ,則車進(jìn)入臨時車道 ,分別記錄時間和車牌號以及臨時車道上的位置,站不滿時臨時車道上的車進(jìn)站。該程序流程圖如下 :車進(jìn)站流程圖.下載可編輯 .開始Main ()選擇 A進(jìn)入臨時繼續(xù)車道進(jìn)站臨時車道車進(jìn)入車站結(jié)束四 程序
14、源代碼#include "stdio.h"#include "stdlib.h"#include "string.h".下載可編輯 .#define NULL 0#define ERROR 0#define OK 1#define OVERFLOW -1#define STACK_INIT_SIZE 2/ 車庫容量typedef struct timeint hour;int min;Time; / 時間結(jié)點(diǎn)typedef struct/車信息char label10;float time;Car,Car2;typedef struc
15、t/車庫信息Car *top;Car *base;int stacksize;.下載可編輯 .SqStack;int InitStack(SqStack *S)/棧的初始化S->base=(Car *)malloc(STACK_INIT_SIZE*sizeof(Car);if(!(S->base) return ERROR;S->top=S->base;S->stacksize=STACK_INIT_SIZE;return OK;int StackEmpty(SqStack S)/??読f(S.top=S.base)return OK;elsereturn ERR
16、OR;int StackFull(SqStack S)/棧滿if(S.top-S.base>=STACK_INIT_SIZE).下載可編輯 .return OK;elsereturn ERROR;int Push(SqStack *S,Car e)/入棧if(S->top-S->base>=STACK_INIT_SIZE)return OVERFLOW;else *(S->top+)=e;return OK;/elseint Pop(SqStack *S,Car *e)/出棧if(S->top=S->base)return ERROR;else *e=
17、*(-(S->top);return OK;.下載可編輯 .int GetTop(SqStack *S,Car *e)/返回棧頂元素if(S->top=S->base) return ERROR;else *e=*(S->top-1);return OK;typedef struct/臨時車道Car2 *top2;Car2 *base2;int stacksize2;SqStack2;int InitStack2(SqStack2 *S2)S2->base2=(Car2 *)malloc(STACK_INIT_SIZE*sizeof(Car2);if(!(S2-&
18、gt;top2) return ERROR;S2->top2=S2->base2;S2->stacksize2=STACK_INIT_SIZE;return OK;.下載可編輯 .int Push2(SqStack2 *S2,Car2 e2)if(S2->top2-S2->base2>=STACK_INIT_SIZE)return OVERFLOW;*(S2->top2+)=e2;return OK;int Pop2(SqStack2 *S2,Car2 *e2)if(S2->top2=S2->base2)exit(OVERFLOW);*e2
19、=*(-(S2->top2);return OK;int StackEmpty2(SqStack2 S2)if(S2.top2=S2.base2)return OK;else.下載可編輯 .return ERROR;typedef struct QNode/車道信息Car data;struct QNode *next;QNode,*QueuePtr;typedef structQueuePtr front;QueuePtr rear;LinkQueue;int InitQueue(LinkQueue *Q)/初始化隊(duì)列Q->front=Q->rear=(QueuePtr)m
20、alloc(sizeof(QNode);if(!(Q->front) return ERROR;Q->front->next=NULL;return OK;.下載可編輯 .int EnQueue(LinkQueue *Q,Car e)/插入元素QueuePtr p;p=(QueuePtr)malloc(sizeof(QNode);if(!p) return ERROR;p->data=e;p->next=NULL;Q->rear->next=p;Q->rear=p;return OK;int QueueEmpty(LinkQueue Q)/隊(duì)空i
21、f(Q.front=Q.rear)return OK;elsereturn ERROR;int DeQueue(LinkQueue *Q,Car *e).下載可編輯 .QueuePtr p;if(Q->front=Q->rear) return ERROR;p=Q->front->next;*e=p->data;Q->front->next=p->next;if(Q->rear=p)Q->rear=Q->front;free(p);return OK;void main()int i,position_s=1,position_
22、q=1,mistime=1;int ch=1;char status;float time,money;LinkQueue Q;Car car_I,car_D,car_M,car_S;SqStack S;SqStack2 S2;.下載可編輯 .InitStack(&S);InitStack2(&S2);InitQueue(&Q);for(i=0;i<80;i+)printf("*");printf("ntttt停車場管理系統(tǒng) ");printf("nnnttt09計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院劉婷200917020117n&
23、quot;);printf("ntttt停車場 tt");printf("n");printf("tttt相關(guān)信息 :n");printf("tttt請輸入字符 (A D E )進(jìn)行相關(guān)操作 ");printf("n");while(ch=1)doprintf("nttttA.車 輛 到 達(dá)nttttD.車 輛 離 開nttttE.退出 nttttA/D/E ?b");scanf("%c",&status);.下載可編輯 .getchar();wh
24、ile(status!='A'&&status!='a'&&status!='D'&&status!='d'&&status!='E'&&status!='e');if(status='A'|status='a')printf("ntttt請輸入車牌號:");gets(car_I.label);/scanf("%d",&(car_I.labe
25、l);printf("ntttt請輸入車輛到達(dá)時間 : ?b");scanf("%f",&(car_I.time);if(!StackFull(S)/ 棧不滿Push(&S,car_I);printf("nn");for(i=0;i<80;i+) printf("-");printf("n");printf("tttt輸出車牌號 :");printf(" %sn",car_I.label);printf("ntttt請輸出車
26、輛到達(dá)時間 :");printf(" %5.2f",car_I.time);printf("nn");for(i=0;i<80;i+) printf("-");.下載可編輯 .printf("nn");printf("ntttt歡迎您來我們車站 !nntttt您的車位號是 : %d",position_s);position_s+;printf("n");printf("tttt繼 續(xù) 請 輸 入1ntttt放 棄請 輸 入0?b");sc
27、anf("%d",&ch);getchar();/ifelseEnQueue(&Q,car_I);printf("ttttWelcometoourCAR POSITION ,We aresorry thatnnttttOur position is full,but you are freeto place nnttttyourcar on ourroad.Thepositionofyourcarnttttis %d",position_q);position_q+;printf("ntttt進(jìn)站請輸入1ntttt放棄請輸入0?
28、b");scanf("%d",&ch);.下載可編輯 .getchar();/else/if 當(dāng)車到達(dá)else if(status='D'|status='d')/*當(dāng)車離開 */dofor(i=0;i<80;i+)printf("*");printf("n");printf("ttttCAR POSITION");printf("ntttt");printf("Information");printf("nn
29、");printf("ttttYouraregoingtodriveyourcaraway ,nttttPleasefill of the form !n");printf("ttttYour car Number :");scanf("%d",&car_D.label);printf("nttttTime : ?b");scanf("%f",&(car_D.time);do.下載可編輯 .Pop(&S,&car_M);if(car_D.label!=c
30、ar_M.label)Push2(&S2,car_M);elsecar_I.time=car_M.time;while(car_D.label!=car_M.label);position_s-;while(!StackEmpty2(S2)/棧 2 不空Pop2(&S2,&car_M);Push(&S,car_M);/whilewhile(!QueueEmpty(Q)&&!StackFull(S)if(!StackFull(S)/ 棧不滿的話 ,臨時車道上的車進(jìn)棧DeQueue(&Q,&car_S);position_q-;car
31、_S.time=car_D.time;.下載可編輯 .Push(&S,car_S);printf("nttttThecar%djustdrivedaway ,nnttttthe car %d has entered the CARPOSITION .n",car_D.label,car_S.label);/if/whiletime=car_D.time-car_I.time;if(time<0.00)printf("nttttSorry!Youinputa wrongtime!Pleasecheck and type again.n");/
32、ifelsemistime=1;money=time*2;printf("nn");for(i=0;i<80;i+)printf("-");printf("nt");printf("tttYourcarnumber%d:nttttThefee.下載可編輯 .is :%5.2f",car_D.label,money);printf("nn");for(i=0;i<80;i+)printf("-");printf("nn");/elseprintf
33、("ttttWelcometoback!Doyouwanttocontinuentttt 1-contine/0-quit ?b");scanf("%d",&ch);getchar();while(!mistime);/else ifelse exit(0);/ 退出程序/ 第一個 while/main.下載可編輯 .五 程序調(diào)試與測試5.1 主界面.下載可編輯 .5.2 具體操作進(jìn)站時間與車牌號.下載可編輯 .車站已滿 ,請進(jìn)入臨時車道.下載可編輯 .出站與收費(fèi)結(jié)束5.3 相關(guān)操作1、輸入(A,1,5)時,顯示是 CAR NUMBER : 1A
34、RRIVE TIME:5.00.下載可編輯 .2、入(A,2,10 )時,顯示 CAR NUMBER : 2ARRIVE TIME:10.003、入(D,1,15 )時,顯示 Your car number : 1 The fee is :20.004、入(A,3,20 )時,顯示 CAR NUMBER : 3ARRIVE TIME:20.005、輸入(A,4,25 )時,顯示 Welcome to our CAR POSITION ,We are sorrythat Our position is full, but you are free to place your car on our
35、 road Theposition of your car is16、入(A,5,30 )時,顯示 Welcome to our CAR POSITION ,We are sorrythat Our position is full, but you are free to place your car on our road Theposition of your car is27、入(D,2,35)時,顯示 Your car number : 2 The fee is :50.008、入(D,4,40)時,顯示 The car 4 just drivedaway , the car 5hasentered the CAR POSITION .Your car number :4The fee is :10.009、入 E 時,程序結(jié)束 ,顯示 Press any key to continue。六 程序中遇到的問題與解決方法6.1 寫提綱在編寫停車場管理系統(tǒng)的時候,首先列出一個基本提綱,里面包括一些基本的函數(shù)與函數(shù)間的調(diào)用 ,為整個程序提供方向 。.下載可編輯 .6.2 在程序調(diào)試過程 ,遇到的相關(guān)問題1)循環(huán)中當(dāng)輸入的 (ch!=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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貨物運(yùn)輸代理授權(quán)委托合同
- VR技術(shù)在教育培訓(xùn)行業(yè)的創(chuàng)新應(yīng)用
- 客戶往來商務(wù)信函管理規(guī)范
- 《歷史經(jīng)典著作〈紅樓夢〉閱讀教學(xué)設(shè)計(jì)》
- 產(chǎn)品采購及供應(yīng)協(xié)議規(guī)范內(nèi)容
- 高考語文復(fù)習(xí):文言文專題訓(xùn)練《莊子》
- 人才培訓(xùn)與招聘服務(wù)協(xié)議
- 中小學(xué)必讀經(jīng)典書目征文
- 古詩詞中情感與意象的探討
- GB/T 43868-2024電化學(xué)儲能電站啟動驗(yàn)收規(guī)程
- 2024年時政試題庫(綜合卷)
- 追悼會主持詞開場白-追悼會流程主持詞
- Unit7ArtLesson2BeijingOpera課件高中英語北師版
- 人教版七年級數(shù)學(xué)下冊 第五章 相交線與平行線5.4 平移(課件)
- 數(shù)學(xué)之美:欣賞數(shù)學(xué)的優(yōu)雅與美麗
- 2023高考語文文言文復(fù)習(xí):《說苑》練習(xí)題(含答案解析)
- 成都印鈔公司招聘考試題
- 低血糖健康宣教
- 跨文化商務(wù)交際導(dǎo)論-教學(xué)課件Unit 2 Intercultural business communication
- 《射頻同軸電纜》課件2
評論
0/150
提交評論