




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、目 課題分析 . 2邏輯分析 . 22.1 數(shù)據(jù)結(jié)構的描述和每個基本操作的功能說明 2.1 給出本程序包含的模塊及模塊之間的調(diào)用關系圖 2.3 寫出重要部分的偽碼算法 三 詳細設計 43.1 數(shù)據(jù)結(jié)構的定義,及其基本操作的實現(xiàn) .43.2 主函數(shù)和其他函數(shù)的實現(xiàn)或偽碼算法.3.3 程序的層次結(jié)構的函數(shù)調(diào)用關系圖 3.4 詳細設計 程序源代 8程序調(diào)試測試 . 5.1 主界面 5.2 具體操作 5.2.1 站時間與車牌號.5.2.2 車已滿,請進入臨時車道.5.2.3 出與收費.195.2.4 結(jié).195.3 相關操作 六 程序中遇到的問與解決方法 . 206.1 寫提綱 6.2 在程序調(diào)試過程
2、,遇到的相關問題 七 總結(jié) . 八 參考文獻 25iiii i i-1, i一 課題分析 該程序主要利用棧和隊列來實現(xiàn)車的到達及其離開功能,其中主要有對 各種情況的處理,要求如下:要求以棧模擬停車場以隊列模擬車場外的便道按照從終端讀入的 數(shù)據(jù)序列進行模擬管理要求處理的數(shù)據(jù)元素包括三個數(shù)據(jù)項:汽車“到達”或“離去”信息,汽 車牌照號碼及到達或離去的時間該系統(tǒng)完成以下功能:若是車輛到達,則輸出汽車在停車場內(nèi)或便 道上的停車位置;若是離去,則輸出汽車在停車場內(nèi)停留的時間和應繳 納的費用(在便道上停留的時間不收費)要求棧以順序結(jié)構實現(xiàn);程序的輸入,程序功能選擇,字符型A 到達,D 離開 退出系統(tǒng); 車
3、的編號是整型,輸入數(shù)字即可;時間是 float 類型,可精確到分鐘程序的輸出,當車到達,程序輸出車的編號及到達時間,若棧滿則提示 停到便道上;車離開時,輸出車的編號及其所需費用。測試數(shù)據(jù)A,1,5,2,10,3, 4,5,2,35),4, 以及 a)中的要求。 其中A表示到達, 表示離開, 表示結(jié)束。二 邏輯分析2.1 數(shù)結(jié)的述每基操的能明 數(shù)據(jù)對象:D=a | a n0 數(shù)據(jù)關系:R1=| a a D,i=2, 基本操作:initstack()操作結(jié)果:構造一個空棧,并返回地址。 gettop(&S)初使條件:棧 S 存在。ii iii i i-1, iin操作結(jié)果:棧 S 為空,輸出頂元素
4、。初始條件:棧 S 存在。操作結(jié)果:要棧 S 棧頂插入新的棧頂元素 e。 queue數(shù)據(jù)對象:D=a | a ElemSet,i=1,2,n,n 數(shù)據(jù)關系:R1=| a a D,i=2, 約定其中 a 端為隊列的頭,a 端為隊列的尾 initqueue(&Q)操作結(jié)果:構造一個空棧,并返回地址。 初使條件:棧 S 存在。操作結(jié)果:棧 S 為空,輸出頂元素。 enqueue(&S,e)初始條件:棧 S 存在。操作結(jié)果:要棧 S 棧頂插入新的棧頂元素 e2.1 給本序含模及塊間調(diào)關圖 本程序含三個模塊1)主程序塊: )初始化;do接受命令;處理命令;(命令!=“退出棧模塊實現(xiàn)棧抽象數(shù)據(jù)類型隊列模塊
5、實現(xiàn)隊列抽象數(shù)據(jù)類型2.3 寫重部的碼法車輛到達或者離開的偽碼算法:do輸出菜單選項;如果選擇 A,即車輛到達,則棧不滿,車輛進棧,停到停車場; 否則,車入隊,車停在便道上;如果選擇 D,即車輛離開,則 如果隊不空并且棧不滿被選的車輛離開隊列上的車出隊入 棧;被選的車輛離開;計算時間及其所需費用;如果選擇 E退出程序;(輸入的菜單選項不正確)三 詳細設計3.1 數(shù)結(jié)的義及基操的現(xiàn) timeint hour;int 車信息 label10;float time;Car,Car2; 車庫信息Car *top;Car *base;int 臨時車道Car2 *top2;Car2 *base2;int
6、stacksize2; QNode/車道信Car *next;QNode,*QueuePtr; front; rear;LinkQueue;3.2 函和他數(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);當車到達輸入車號;輸入車到達時間;if(!StackFull(S)/棧不滿車入棧;printf(ntttt 繼續(xù)請輸入 1ntttt 棄請輸入 0 scanf(%d,&ch);getchar();/if車入隊;printf(ntttt 繼續(xù)請輸入 1ntttt 棄請輸入 0 scanf(%d,&ch);getchar();/else/if 當車到達 當車離開*do輸入車號;輸入車離開時間;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)棧不滿的話,臨時車道上的車進棧/if/whiletime=car_D.time-car_I.time;printf(nttttSorry!You input a wrong !nttttPlease check type again.n);/if計算停車時間;計算所需費用;/elseprintf(nttttWelcome ! you want to continue ?b)
9、;scanf(%d,&ch);getchar();while(!mistime); if exit(0);/出程序/第一個 /main3.3 程的次構函調(diào)關圖Main()initstack(initqueueStackFullQueueEmpty3.4 詳設根據(jù)老的要求,在里我主分析程序設中停車管理系統(tǒng)的站模 塊:模塊涉多個函數(shù),過程次有初化選擇進輸入 A,車牌號,時。 若站滿則車進入臨車道,別記錄時間車牌號及臨時車道的位置 站不滿臨時車道上車進站該程序流程如下:車站程()選擇 A進站進 入 臨 時車道繼續(xù)進站臨時車道車進入車站結(jié)束四 程序源代碼 stdio.h stdlib.h string
10、.h NULL 0 OK 1 -1 2/車庫容量 int hour;int /間結(jié)點 車信息 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 ??読f(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; 臨時車道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)/初始化隊列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 隊空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 算機科學與技術學院 劉婷 printf(ntttt 停車場 printf(n);printf(tttt 關信息:n);printf(tttt 輸入字符(A D )進行相關操作); 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 請輸入車牌號 gets(car_I.label);/scanf(%d,&(car_I.label);printf(ntttt 請輸入車輛到達時間: 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 輸車牌號:printf( %sn,car_I.label);printf(ntttt 請輸出車輛到達時間);printf( %5.2f,car_I.time);printf(nn);for(i=0;i80;i+) printf(-);printf(nn);printf(ntttt 歡 迎 來 我 們 車 站 !nntttt 您 的 位 號 是: printf(n);printf(tttt 繼請輸入 棄請輸入 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 進站請輸入 1ntttt 棄請輸入 0 scanf(%d,&ch);getchar();/else/if 當?shù)竭_ if(status=D|status=d)/*當離開*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)/棧不滿的話,臨時車道上的車棧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);/退出程序/一個 while/main五 程序調(diào)試與測試5.1 主面5.2 具操 進站時間車牌號 車站已滿請進入時車道 出站與收 結(jié)束5.3 相操1、輸入(A,1,5時,顯示是 CAR NUMBER :1 ARRIVE :5.00 2、入A,2,)時,顯示 NUMBER :2 ARRIVE : 3、入D,15)時,顯示 Your car number:1 The :入(A320時,顯示 CAR NUMBER :3
21、 ARRIVE :輸入(A,4,25時,顯示 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,)時,顯示 Your 2 :(D440時顯示 The just drived away , car 5 has entered the CAR POSITION . Your number:4 T
22、he :入 時,程序結(jié)束,顯示 any key to 。六 程序中遇到的問與解決方法6.1 寫綱在編寫車場管理系的時候首先列出一基本提,里面包括些基本 函數(shù)與數(shù)間的調(diào)用為整個序提供方向6.2 在序試程遇的關題1)環(huán)中當入的 ch!=1&ch!=0),序進入循環(huán),其源碼如下 while(ch=1)do 車 到 達 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 請輸入車牌號 gets(car_I.label);/scanf(%d,&(car_I.label);printf(ntttt 請輸入車輛到達時間: ?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 輸車牌號:printf( %sn,car_I.label);printf(ntttt 請輸出車輛到達時間:);printf( %5.2f,car_I.time);printf(nn);for(i=
24、0;i80;i+) printf(-);printf(nn);printf(ntttt 歡 迎 您 來 我 車 站 !nntttt 您 的 車 位 號 是: printf(n);printf(tttt 進請輸入 放棄請輸入 0 ?b); scanf(%d,&ch);getchar();/if our thatnnttttOur position full,but you free to your nntttton road.The of is printf(ntttt 進站請輸入 1ntttt 放棄請輸入 ?b); scanf(%d,&ch);getchar();/else結(jié)束死環(huán),修改后代碼
25、如:while(ch=1)do 車 到 達 nttttA/D/E ?b);scanf(%c,&status);getchar();nttttD. 車 輛 離 開 退 出while(status!=A&status!=a&status!=D&status!=d&status!=E&status!=e);printf(ntttt 請輸入車牌號 gets(car_I.label);/scanf(%d,&(car_I.label);printf(ntttt 請輸入車輛到達時間: ?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 輸車牌號:printf( %sn,car_I.label);printf(ntttt 請輸出車輛到達時間:);printf( %5.2f,car_I.time);printf(nn);for(i=0;i80;i+) printf(-);printf(nn);printf(ntttt 歡 迎 您 來 我 車 站 !nntttt 您 的 車 位 號 是: printf(n);printf(tttt 進請輸入 放棄請輸入 0 ?b); scanf(%d,&ch);getchar();/
27、if our thatnnttttOur position full,but you free to your nntttton road.The of is printf(ntttt 進站請輸入 1ntttt 放棄請輸入 ?b); scanf(%d,&ch);if(ch)getchar();/else2) 初調(diào)試車牌號寫為 int ,輸入只能是數(shù)字但現(xiàn)實活中車牌號都為漢 +英文字母 +數(shù),在改過程中,改字符型后來發(fā)現(xiàn),是治標 不治本方法,經(jīng)過次折騰試探,都沒成功!相信只要堅,即使 個程序試不好,也關系,為只要盡全去做了就不會讓自后悔。修改前序源代碼: stdio.h stdlib.h NUL
28、L 0 OK 1 -1 車庫容量 int hour;int /時間結(jié)點 車信息int label;float time;Car,Car2;printf(ntttt 請輸入車牌號 :);printf(ntttt 請輸入車輛到達時間: ?b);scanf(%f,&(car_I.time);修改后序源代碼: stdio.h stdlib.h#include string.h NULL 0 OK 1 -1 車庫容量 int hour;int /時間結(jié)點 車信息char label10;float time;Car,Car2;printf(ntttt 請輸入車牌號 :);gets(car_I.label);/sca
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 離婚協(xié)議補充條款法律咨詢合同
- 商業(yè)綜合體車位使用權轉(zhuǎn)讓與商業(yè)運營協(xié)議
- 拆遷安置補償與社區(qū)安全合同模板
- 生態(tài)草場承包租賃管理合同范本
- 車輛保險理賠與購銷合作合同范本
- 綜合性離婚財產(chǎn)分配及子女撫養(yǎng)協(xié)議標準范本
- 水產(chǎn)養(yǎng)殖魚塘承包合同范本
- 高級采購談判技巧與合同簽訂培訓協(xié)議
- 高端餐廳廚師聘用與廚藝競賽合作協(xié)議
- 能源采購與法務碳排放管理合同
- 2024年湖北省丹江口市初中畢業(yè)生適應性考試地理·生物試題
- DZ∕T 0033-2020 固體礦產(chǎn)地質(zhì)勘查報告編寫規(guī)范(正式版)
- 2024年輔警招聘考試試題庫附參考答案(完整版)
- NY-T 3213-2023 植保無人駕駛航空器 質(zhì)量評價技術規(guī)范
- 2023年春季內(nèi)蒙古高一化學學業(yè)水平合格性考試卷真題
- 2024年北京北方昆曲劇院招聘筆試沖刺題含答案解析
- 北師大版六年級下學期小升初數(shù)學期末考試試題(含答案)
- 司母戊鼎的介紹
- 2024年兒童童車行業(yè)分析報告及未來發(fā)展趨勢
- 23秋國家開放大學《漢語基礎》期末大作業(yè)(課程論文)參考答案
- 《公務接待》課件
評論
0/150
提交評論