




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、目 課題分析 . 2邏輯分析 . 22.1 數(shù)據(jù)結(jié)構(gòu)的描述和每個(gè)基本操作的功能說明 2.1 給出本程序包含的模塊及模塊之間的調(diào)用關(guān)系圖 2.3 寫出重要部分的偽碼算法 三 詳細(xì)設(shè)計(jì) 43.1 數(shù)據(jù)結(jié)構(gòu)的定義,及其基本操作的實(shí)現(xiàn) .43.2 主函數(shù)和其他函數(shù)的實(shí)現(xiàn)或偽碼算法.3.3 程序的層次結(jié)構(gòu)的函數(shù)調(diào)用關(guān)系圖 3.4 詳細(xì)設(shè)計(jì) 程序源代 8程序調(diào)試測試 . 5.1 主界面 5.2 具體操作 5.2.1 站時(shí)間與車牌號(hào).5.2.2 車已滿,請(qǐng)進(jìn)入臨時(shí)車道.5.2.3 出與收費(fèi).195.2.4 結(jié).195.3 相關(guān)操作 六 程序中遇到的問與解決方法 . 206.1 寫提綱 6.2 在程序調(diào)試過程
2、,遇到的相關(guān)問題 七 總結(jié) . 八 參考文獻(xiàn) 25iiii i i-1, i一 課題分析 該程序主要利用棧和隊(duì)列來實(shí)現(xiàn)車的到達(dá)及其離開功能,其中主要有對(duì) 各種情況的處理,要求如下:要求以棧模擬停車場以隊(duì)列模擬車場外的便道按照從終端讀入的 數(shù)據(jù)序列進(jìn)行模擬管理要求處理的數(shù)據(jù)元素包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息,汽 車牌照號(hào)碼及到達(dá)或離去的時(shí)間該系統(tǒng)完成以下功能:若是車輛到達(dá),則輸出汽車在停車場內(nèi)或便 道上的停車位置;若是離去,則輸出汽車在停車場內(nèi)停留的時(shí)間和應(yīng)繳 納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))要求棧以順序結(jié)構(gòu)實(shí)現(xiàn);程序的輸入,程序功能選擇,字符型A 到達(dá),D 離開 退出系統(tǒng); 車
3、的編號(hào)是整型,輸入數(shù)字即可;時(shí)間是 float 類型,可精確到分鐘程序的輸出,當(dāng)車到達(dá),程序輸出車的編號(hào)及到達(dá)時(shí)間,若棧滿則提示 停到便道上;車離開時(shí),輸出車的編號(hào)及其所需費(fèi)用。測試數(shù)據(jù)A,1,5,2,10,3, 4,5,2,35),4, 以及 a)中的要求。 其中A表示到達(dá), 表示離開, 表示結(jié)束。二 邏輯分析2.1 數(shù)結(jié)的述每基操的能明 數(shù)據(jù)對(duì)象:D=a | a n0 數(shù)據(jù)關(guān)系:R1=| a a D,i=2, 基本操作:initstack()操作結(jié)果:構(gòu)造一個(gè)空棧,并返回地址。 gettop(&S)初使條件:棧 S 存在。ii iii i i-1, iin操作結(jié)果:棧 S 為空,輸出頂元素
4、。初始條件:棧 S 存在。操作結(jié)果:要棧 S 棧頂插入新的棧頂元素 e。 queue數(shù)據(jù)對(duì)象:D=a | a ElemSet,i=1,2,n,n 數(shù)據(jù)關(guān)系:R1=| a a D,i=2, 約定其中 a 端為隊(duì)列的頭,a 端為隊(duì)列的尾 initqueue(&Q)操作結(jié)果:構(gòu)造一個(gè)空棧,并返回地址。 初使條件:棧 S 存在。操作結(jié)果:棧 S 為空,輸出頂元素。 enqueue(&S,e)初始條件:棧 S 存在。操作結(jié)果:要棧 S 棧頂插入新的棧頂元素 e2.1 給本序含模及塊間調(diào)關(guān)圖 本程序含三個(gè)模塊1)主程序塊: )初始化;do接受命令;處理命令;(命令!=“退出棧模塊實(shí)現(xiàn)棧抽象數(shù)據(jù)類型隊(duì)列模塊
5、實(shí)現(xiàn)隊(duì)列抽象數(shù)據(jù)類型2.3 寫重部的碼法車輛到達(dá)或者離開的偽碼算法:do輸出菜單選項(xiàng);如果選擇 A,即車輛到達(dá),則棧不滿,車輛進(jìn)棧,停到停車場; 否則,車入隊(duì),車停在便道上;如果選擇 D,即車輛離開,則 如果隊(duì)不空并且棧不滿被選的車輛離開隊(duì)列上的車出隊(duì)入 棧;被選的車輛離開;計(jì)算時(shí)間及其所需費(fèi)用;如果選擇 E退出程序;(輸入的菜單選項(xiàng)不正確)三 詳細(xì)設(shè)計(jì)3.1 數(shù)結(jié)的義及基操的現(xiàn) timeint hour;int 車信息 label10;float time;Car,Car2; 車庫信息Car *top;Car *base;int 臨時(shí)車道Car2 *top2;Car2 *base2;int
6、stacksize2; QNode/車道信Car *next;QNode,*QueuePtr; front; rear;LinkQueue;3.2 函和他數(shù)實(shí)或碼法 main()SqStack S;SqStack2 S2;InitStack(&S);InitStack2(&S2);InitQueue(&Q);/初始化while(ch=1)doprintf(nttttA- 車 nttttD- 車 離 開 nttttE- 退 nttttA/D/E ?b);scanf(%c,&status);getchar();while(status!=A&status!=a&status!=D&status!=
7、d&status!=E&status!=e);當(dāng)車到達(dá)輸入車號(hào);輸入車到達(dá)時(shí)間;if(!StackFull(S)/棧不滿車入棧;printf(ntttt 繼續(xù)請(qǐng)輸入 1ntttt 棄請(qǐng)輸入 0 scanf(%d,&ch);getchar();/if車入隊(duì);printf(ntttt 繼續(xù)請(qǐng)輸入 1ntttt 棄請(qǐng)輸入 0 scanf(%d,&ch);getchar();/else/if 當(dāng)車到達(dá) 當(dāng)車離開*do輸入車號(hào);輸入車離開時(shí)間;doPop(&S,&car_M);if(car_D.label!=car_M.label)Push2(&S2,car_M);car_I.time=car_M.ti
8、me;while(car_D.label!=car_M.label);position_s-;while(!StackEmpty2(S2)/棧 2 空Push(&S,car_M);/whileif(!StackFull(S)棧不滿的話,臨時(shí)車道上的車進(jìn)棧/if/whiletime=car_D.time-car_I.time;printf(nttttSorry!You input a wrong !nttttPlease check type again.n);/if計(jì)算停車時(shí)間;計(jì)算所需費(fèi)用;/elseprintf(nttttWelcome ! you want to continue ?b)
9、;scanf(%d,&ch);getchar();while(!mistime); if exit(0);/出程序/第一個(gè) /main3.3 程的次構(gòu)函調(diào)關(guān)圖Main()initstack(initqueueStackFullQueueEmpty3.4 詳設(shè)根據(jù)老的要求,在里我主分析程序設(shè)中停車管理系統(tǒng)的站模 塊:模塊涉多個(gè)函數(shù),過程次有初化選擇進(jìn)輸入 A,車牌號(hào),時(shí)。 若站滿則車進(jìn)入臨車道,別記錄時(shí)間車牌號(hào)及臨時(shí)車道的位置 站不滿臨時(shí)車道上車進(jìn)站該程序流程如下:車站程()選擇 A進(jìn)站進(jìn) 入 臨 時(shí)車道繼續(xù)進(jìn)站臨時(shí)車道車進(jìn)入車站結(jié)束四 程序源代碼 stdio.h stdlib.h string
10、.h NULL 0 OK 1 -1 2/車庫容量 int hour;int /間結(jié)點(diǎn) 車信息 label10;float time;Car,Car2; 車庫信息Car *top;Car *base;int int InitStack(SqStack 棧的初始化S-base=(Car *)malloc(STACK_INIT_SIZE*sizeof(Car);if(!(S-base) return S-stacksize=STACK_INIT_SIZE; OK;int StackEmpty(SqStack 棧空if(S.top=S.base) OK; int StackFull(SqStack 棧
11、滿 OK; int *S,Car e)/入棧if(S-top-S-base=STACK_INIT_SIZE) *(S-top+)=e; OK;/elseint Pop(SqStack *e)/出棧 *e=*(-(S-top); OK;int *e)/返回棧頂元素 if(S-top=S-base) OK; 臨時(shí)車道Car2 *top2;Car2 *base2;int stacksize2;int *S2) *)malloc(STACK_INIT_SIZE*sizeof(Car2); S2-stacksize2=STACK_INIT_SIZE; OK;int Push2(SqStack2 e2)i
12、f(S2-top2-S2-base2=STACK_INIT_SIZE) OK;int Pop2(SqStack2 *S2,Car2 exit(OVERFLOW); OK;int StackEmpty2(SqStack2 OK; QNode/車道信Car *next;QNode,*QueuePtr; front; rear;LinkQueue;int *Q)/初始化隊(duì)列Q-front=Q-rear=(QueuePtr)malloc(sizeof(QNode); Q-front-next=NULL; OK;int EnQueue(LinkQueue *Q,Car 插入元素 p;p=(QueuePt
13、r)malloc(sizeof(QNode);if(!p) return ERROR;p-data=e;p-next=NULL; OK;int 隊(duì)空if(Q.front=Q.rear) OK; int *Q,Car *e) p;if(Q-front=Q-rear) p=Q-front-next;*e=p-data;Q-front-next=p-next;if(Q-rear=p)Q-rear=Q-front;free(p); OK; main()int i,position_s=1,position_q=1,mistime=1;int float LinkQueue Q;Car car_I,ca
14、r_D,car_M,car_S;SqStack S;SqStack2 S2;InitStack(&S);InitStack2(&S2);InitQueue(&Q);for(i=0;i80;i+)printf(*);printf(ntttt 停車場管理系統(tǒng)); printf(nnnttt09 算機(jī)科學(xué)與技術(shù)學(xué)院 劉婷 printf(ntttt 停車場 printf(n);printf(tttt 關(guān)信息:n);printf(tttt 輸入字符(A D )進(jìn)行相關(guān)操作); printf(n);while(ch=1)do200917020117n); 車 nttttD. 車 輛 離 開 nttttE.
15、 退 nttttA/D/E ?b);scanf(%c,&status);getchar();while(status!=A&status!=a&status!=D&status!=d&status!=E&status!=e);printf(ntttt 請(qǐng)輸入車牌號(hào) gets(car_I.label);/scanf(%d,&(car_I.label);printf(ntttt 請(qǐng)輸入車輛到達(dá)時(shí)間: scanf(%f,&(car_I.time);if(!StackFull(S)/棧不滿Push(&S,car_I);printf(nn);for(i=0;i80;i+) printf(-);print
16、f(n);printf(tttt 輸車牌號(hào):printf( %sn,car_I.label);printf(ntttt 請(qǐng)輸出車輛到達(dá)時(shí)間);printf( %5.2f,car_I.time);printf(nn);for(i=0;i80;i+) printf(-);printf(nn);printf(ntttt 歡 迎 來 我 們 車 站 !nntttt 您 的 位 號(hào) 是: printf(n);printf(tttt 繼請(qǐng)輸入 棄請(qǐng)輸入 0 scanf(%d,&ch);getchar();/if our CAR sorry thatnnttttOur position full,but y
17、ou free to nnttttyour car on our road.The of your carnttttis printf(ntttt 進(jìn)站請(qǐng)輸入 1ntttt 棄請(qǐng)輸入 0 scanf(%d,&ch);getchar();/else/if 當(dāng)?shù)竭_(dá) if(status=D|status=d)/*當(dāng)離開*for(i=0;i80;i+)printf(*);printf(n);printf(ttttCAR POSITION);printf(Information);printf(nn);printf(ttttYour going to drive your away ,nttttPlea
18、se fill of form !n);printf(ttttYour car Number :); : ?b);scanf(%f,&(car_D.time);doPop(&S,&car_M);if(car_D.label!=car_M.label)Push2(&S2,car_M);car_I.time=car_M.time;while(car_D.label!=car_M.label);position_s-;while(!StackEmpty2(S2)/棧 2 空Push(&S,car_M);/whileif(!StackFull(S)/棧不滿的話,臨時(shí)車道上的車棧DeQueue(&Q,&
19、car_S);position_q-;printf(nttttThe just drived away car %d has the POSITION /if/whiletime=car_D.time-car_I.time;printf(nttttSorry!You input a wrong type again.n);/ifmoney=time*2;printf(nn);for(i=0;i80;i+)printf(nt);printf(tttYour car :%5.2f,car_D.label,money);printf(nn);printf(nn);/else :nttttThe ba
20、ck ! you want 1-contine/0-quit ?b);scanf(%d,&ch);getchar();while(!mistime);/else if exit(0);/退出程序/一個(gè) while/main五 程序調(diào)試與測試5.1 主面5.2 具操 進(jìn)站時(shí)間車牌號(hào) 車站已滿請(qǐng)進(jìn)入時(shí)車道 出站與收 結(jié)束5.3 相操1、輸入(A,1,5時(shí),顯示是 CAR NUMBER :1 ARRIVE :5.00 2、入A,2,)時(shí),顯示 NUMBER :2 ARRIVE : 3、入D,15)時(shí),顯示 Your car number:1 The :入(A320時(shí),顯示 CAR NUMBER :3
21、 ARRIVE :輸入(A,4,25時(shí),顯示 CAR POSITION ,We that Our position is full, you to car on position of your (A30顯示 to our CAR POSITION ,We that position full, you are to your on our road position of car is2入(D,2,)時(shí),顯示 Your 2 :(D440時(shí)顯示 The just drived away , car 5 has entered the CAR POSITION . Your number:4 T
22、he :入 時(shí),程序結(jié)束,顯示 any key to 。六 程序中遇到的問與解決方法6.1 寫綱在編寫車場管理系的時(shí)候首先列出一基本提,里面包括些基本 函數(shù)與數(shù)間的調(diào)用為整個(gè)序提供方向6.2 在序試程遇的關(guān)題1)環(huán)中當(dāng)入的 ch!=1&ch!=0),序進(jìn)入循環(huán),其源碼如下 while(ch=1)do 車 到 達(dá) nttttD. 車 輛 離 開 nttttE. 退 出 nttttA/D/E ?b);scanf(%c,&status);getchar();while(status!=A&status!=a&status!=D&status!=d&status!=E&status!=e);print
23、f(ntttt 請(qǐng)輸入車牌號(hào) gets(car_I.label);/scanf(%d,&(car_I.label);printf(ntttt 請(qǐng)輸入車輛到達(dá)時(shí)間: ?b)scanf(%f,&(car_I.time);if(!StackFull(S)/棧不滿Push(&S,car_I);printf(nn);for(i=0;i80;i+) printf(-);printf(n);printf(tttt 輸車牌號(hào):printf( %sn,car_I.label);printf(ntttt 請(qǐng)輸出車輛到達(dá)時(shí)間:);printf( %5.2f,car_I.time);printf(nn);for(i=
24、0;i80;i+) printf(-);printf(nn);printf(ntttt 歡 迎 您 來 我 車 站 !nntttt 您 的 車 位 號(hào) 是: printf(n);printf(tttt 進(jìn)請(qǐng)輸入 放棄請(qǐng)輸入 0 ?b); scanf(%d,&ch);getchar();/if our thatnnttttOur position full,but you free to your nntttton road.The of is printf(ntttt 進(jìn)站請(qǐng)輸入 1ntttt 放棄請(qǐng)輸入 ?b); scanf(%d,&ch);getchar();/else結(jié)束死環(huán),修改后代碼
25、如:while(ch=1)do 車 到 達(dá) nttttA/D/E ?b);scanf(%c,&status);getchar();nttttD. 車 輛 離 開 退 出while(status!=A&status!=a&status!=D&status!=d&status!=E&status!=e);printf(ntttt 請(qǐng)輸入車牌號(hào) gets(car_I.label);/scanf(%d,&(car_I.label);printf(ntttt 請(qǐng)輸入車輛到達(dá)時(shí)間: ?b)scanf(%f,&(car_I.time);if(!StackFull(S)/棧不滿Push(&S,car_I);p
26、rintf(nn);for(i=0;i80;i+) printf(-);printf(n);printf(tttt 輸車牌號(hào):printf( %sn,car_I.label);printf(ntttt 請(qǐng)輸出車輛到達(dá)時(shí)間:);printf( %5.2f,car_I.time);printf(nn);for(i=0;i80;i+) printf(-);printf(nn);printf(ntttt 歡 迎 您 來 我 車 站 !nntttt 您 的 車 位 號(hào) 是: printf(n);printf(tttt 進(jìn)請(qǐng)輸入 放棄請(qǐng)輸入 0 ?b); scanf(%d,&ch);getchar();/
27、if our thatnnttttOur position full,but you free to your nntttton road.The of is printf(ntttt 進(jìn)站請(qǐng)輸入 1ntttt 放棄請(qǐng)輸入 ?b); scanf(%d,&ch);if(ch)getchar();/else2) 初調(diào)試車牌號(hào)寫為 int ,輸入只能是數(shù)字但現(xiàn)實(shí)活中車牌號(hào)都為漢 +英文字母 +數(shù),在改過程中,改字符型后來發(fā)現(xiàn),是治標(biāo) 不治本方法,經(jīng)過次折騰試探,都沒成功!相信只要堅(jiān),即使 個(gè)程序試不好,也關(guān)系,為只要盡全去做了就不會(huì)讓自后悔。修改前序源代碼: stdio.h stdlib.h NUL
28、L 0 OK 1 -1 車庫容量 int hour;int /時(shí)間結(jié)點(diǎn) 車信息int label;float time;Car,Car2;printf(ntttt 請(qǐng)輸入車牌號(hào) :);printf(ntttt 請(qǐng)輸入車輛到達(dá)時(shí)間: ?b);scanf(%f,&(car_I.time);修改后序源代碼: stdio.h stdlib.h#include string.h NULL 0 OK 1 -1 車庫容量 int hour;int /時(shí)間結(jié)點(diǎn) 車信息char label10;float time;Car,Car2;printf(ntttt 請(qǐng)輸入車牌號(hào) :);gets(car_I.label);/sca
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年 河南省特招醫(yī)學(xué)院校畢業(yè)生計(jì)劃招聘筆試試題附答案
- 2025年鉿項(xiàng)目可行性研究報(bào)告
- 2025年金屬制衛(wèi)生、烹飪、餐飲器具項(xiàng)目提案報(bào)告模板
- 2025年中國超聲波清洗機(jī)行業(yè)市場前景預(yù)測及投資戰(zhàn)略咨詢報(bào)告
- 中國有機(jī)農(nóng)場未來發(fā)展趨勢分析及投資規(guī)劃建議研究報(bào)告
- 2022-2027年中國中空夾膠玻璃行業(yè)市場深度評(píng)估及投資前景預(yù)測報(bào)告
- 2021-2026年中國高端采煤機(jī)市場供需現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 中國號(hào)角揚(yáng)聲器行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報(bào)告
- 2025年中國周林頻譜儀行業(yè)發(fā)展現(xiàn)狀與投資戰(zhàn)略規(guī)劃可行性報(bào)告
- 中國塑料型材市場供需預(yù)測調(diào)查咨詢報(bào)告
- 工業(yè)互聯(lián)網(wǎng)與智能制造
- 司母戊鼎的介紹
- 肺炎衣原體醫(yī)學(xué)課件
- 2024年兒童童車行業(yè)分析報(bào)告及未來發(fā)展趨勢
- 23秋國家開放大學(xué)《漢語基礎(chǔ)》期末大作業(yè)(課程論文)參考答案
- 《公務(wù)接待》課件
- 中醫(yī)內(nèi)科學(xué)消渴課件
- 《新能源汽車動(dòng)力電池及管理系統(tǒng)檢修》 課件 模塊3 新能源汽車動(dòng)力電池PACK檢修
- 工藝知識(shí)培訓(xùn)課件
- 公司關(guān)停并轉(zhuǎn)方案
- 集裝箱場站安全管理制度范本
評(píng)論
0/150
提交評(píng)論