版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C語言課程設(shè)計(jì)實(shí)習(xí)報(bào)告目 錄一. 題目要求二. 需求分析三. 總體設(shè)計(jì)四. 具體程序五. 上機(jī)操作及使用說明六. 存在問題與不足七. 學(xué) 習(xí) 心 得停車場管理一. 題目要求1.設(shè)計(jì)一個(gè)停車場用長度為N的堆棧來模擬。由于停車場內(nèi)如有某輛車要開走 ,在它之后進(jìn)來的車都必須先退出為它讓道,待其開出停車場后,這些車再依原來的順序進(jìn)入。2.程序輸出每輛車到達(dá)后的停車位置,以及某輛車離開停車場時(shí)應(yīng)交納的費(fèi)用和它在停車場內(nèi)停留的時(shí)間。二. 需求分析根據(jù)題目要求首先設(shè)計(jì)一個(gè)堆棧,以堆棧來模擬停車場,又每輛汽車的車牌號(hào)都不一樣,這樣一來可以根據(jù)車牌號(hào)準(zhǔn)確找到汽車位置,所以堆棧里的數(shù)據(jù)元素設(shè)計(jì)成汽車的車牌號(hào)。當(dāng)停
2、車場內(nèi)某輛車要離開時(shí),在它之后進(jìn)入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進(jìn)入停車場。這是個(gè)一退一進(jìn)的過程,而且讓道的汽車必須保持原有的先后順序,因此可再設(shè)計(jì)一個(gè)堆棧,以之來暫時(shí)存放為出站汽車暫時(shí)讓道的汽車車牌號(hào)。當(dāng)停車場滿后,繼續(xù)進(jìn)來的汽車需要停放在停車場旁邊的便道上等候,若停車場有汽車開走,則按排隊(duì)的先后順序依次進(jìn)站,最先進(jìn)入便道的汽車將會(huì)最先進(jìn)入停車場,這完全是一個(gè)先進(jìn)先出模型,因此可設(shè)計(jì)一個(gè)隊(duì)列來模擬便道,隊(duì)列中的數(shù)據(jù)元素仍然設(shè)計(jì)成汽車的車牌號(hào)。另外,停車場根據(jù)汽車在停車場內(nèi)停放的總時(shí)長來收費(fèi)的,在便道上的時(shí)間不計(jì)費(fèi),因此必須記錄車輛進(jìn)入停車場時(shí)的時(shí)間,車輛
3、離開停車場時(shí)的時(shí)間不需要記錄,當(dāng)從終端輸入時(shí)可直接使用。由于時(shí)間不像汽車一樣需要讓道,可設(shè)計(jì)了一個(gè)順序表來存放時(shí)間。又用順序表用派生法設(shè)計(jì)了一個(gè)堆棧,恰好滿足上面模擬停車場的需要。三. 總體設(shè)計(jì)車輛到達(dá)以堆棧來模擬停車場和以堆棧里的數(shù)據(jù)元素我設(shè)計(jì)成汽車的車牌號(hào)初始化車站, 初始化讓路的臨時(shí)棧, 初始化通道車場未滿,車進(jìn)車場車場已滿,車進(jìn)便道判斷車場是否已滿車輸入車子到達(dá)時(shí)間,車牌號(hào)未滿車進(jìn)入車場判斷車場內(nèi)是否有車不做任何計(jì)算無點(diǎn)x有輸入離開車輛的離開時(shí)間,進(jìn)行停車費(fèi)用的計(jì)算此車后面的車輛退出并進(jìn)入臨時(shí)棧車子離開四. 具體程序#include #include #define SIZE 3 #d
4、efine NULL 0 typedef struct int hour; int min; time; typedef struct int num; int position; time t; float money; Car; typedef struct Car elemSIZE+1; int top; Stack; typedef struct Node Car data; struct Node *next; CQueueNode; typedef struct CQueueNode *front; CQueueNode *rear; LinkQueue; void InitSta
5、ck(Stack *S) S-top=0; void Push(Stack *S,Car *r) S-top+; S-elemS-top.num=r-num; r-position=S-elemS-top.position=S-top; S-elemS-top.t.hour=r-t.hour; S-elemS-top.t.min=r-t.min; int IsEmpty(Stack* S) return(S-top=0?1:0); int IsFull(Stack *S) return(S-top=SIZE?1:0); int GetTop(Stack *S,Car *n) n-num=S-e
6、lemS-top.num; n-position=S-elemS-top.position; n-t.hour=S-elemS-top.t.hour; n-t.min=S-elemS-top.t.min; return 1; void InitQueue(LinkQueue *Q) Q-front=(CQueueNode*)malloc(sizeof(CQueueNode); if(Q-front!=NULL) Q-rear=Q-front; Q-front-next=NULL; int EnterQueue(LinkQueue *Q,Car *t) CQueueNode *NewNode;
7、NewNode=(CQueueNode*)malloc(sizeof(CQueueNode); if(NewNode!=NULL) NewNode-data.num=t-num; NewNode-data.t.hour=t-t.hour; NewNode-data.t.min=t-t.min; NewNode-next=NULL; Q-rear-next=NewNode; Q-rear=NewNode; return 1; else return 0; int DeleteQueue(LinkQueue *Q,Car *x) CQueueNode *p; if(Q-front=Q-rear)
8、return 0; p=Q-front-next; Q-front-next=p-next; if(Q-rear=p) Q-rear=Q-front; x-num=p-data.num; x-t.hour=p-data.t.hour; x-t.min=p-data.t.min; free(p); return 1; void print1(Stack *S) int tag; Car x; printf(停車場停車情況:n); if(IsEmpty(S) printf(無車!); for(tag=S-top;S-top0;S-top-) if(GetTop(S,&x) printf(車牌號(hào) %
9、d,所在位置 %d,到達(dá)/離開時(shí)間 %d:%dn,x.num,x.position,x.t.hour,x.t.min); S-top=tag; void print2(LinkQueue *Q) CQueueNode *p; p=Q-front-next; for(;p!=NULL;p=p-next) printf(等待車牌號(hào) %d, 到達(dá)/離開時(shí)間 %d:%d,p-data.num,p-data.t.hour,p-data.t.min); void TaM(Car *r,int h,int m) if(mr-t.min) r-t.min+=60;r-t.hour-=1; h=r-t.hour
10、-h; m=r-t.min-m; printf(n停車 %d小時(shí) %d 分鐘n,h,m); printf(每小時(shí)收費(fèi)30元n); h=h*60;m=h+m; r-money=0.5*m; printf(請(qǐng)支付金額%.2f元n,r-money); void In(Stack *S,LinkQueue *Q,Car*r) if(IsFull(S) printf(車庫已滿,請(qǐng)等待!); EnterQueue(Q,r); else Push(S,r); printf(n您現(xiàn)在所在位置 %d,r-position); void Out(Stack *S,Stack *S0,Car *r,LinkQueu
11、e *Q) int tag=S-top; Car x; if(IsEmpty(S) printf(沒有此車!); else for(;r-num!=S-elemtag.num&tag0;tag-) Push(S0,&S-elemtag); S-top-; if(r-num=S-elemtag.num) TaM(r,S-elemtag.t.hour,S-elemtag.t.min); S-top-; for(;S0-top0;S0-top-) Push(S,&S0-elemS0-top); if(S-topfront!=Q-rear) DeleteQueue(Q,&x); Push(S,&x);
12、 else if(tag=0) printf(未進(jìn)入停車場應(yīng)支付金額 0元!); for(;S0-top0;S0-top-) Push(S,&S0-elemS0-top); void print() printf(n*歡迎光臨*n); printf(n 請(qǐng)選擇:n); printf(n 1 :到達(dá)); printf(n 2 :離開); printf(n 3 :搜索); printf(n 4 :退出n); printf(n); int main() int n,m,i=1,j,flag=0; Car c10; Car x; Stack S,S0; LinkQueue Q; InitStack(&
13、S); InitStack(&S0); InitQueue(&Q); while(1) print(); scanf(%d,&m); switch(m) case 1:printf(n請(qǐng)輸入車牌號(hào):); scanf(%d,&ci.num); printf(n請(qǐng)輸入到達(dá)/離開時(shí)間:); scanf(%d:%d,&ci.t.hour,&ci.t.min); In(&S,&Q,&ci);i+; break; case 2:printf(n請(qǐng)輸入車牌號(hào):); scanf(%d,&n); for(j=0;j10;j+) if(n=cj.num) break; printf(n請(qǐng)輸入到達(dá)/離開時(shí)間:); scanf(%d:%d,&cj.t.hour,&cj.t.min); Out(&S,&S0,&cj,&Q); break; case 3: print1(&S);print2(&Q);break; case 4: flag=1; break; default:printf(n輸入錯(cuò)誤,請(qǐng)輸入 1,2,3 或4); if(flag)break; return 0; 五. 上機(jī)操作及使用說明運(yùn)行Microsoft Visual C+,進(jìn)入運(yùn)行狀態(tài):1.主菜單:根據(jù)頁面提示,輸入相應(yīng)數(shù)字。2.車輛到達(dá)
溫馨提示
- 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ù)知識(shí)講座》課件
- 浙江省杭州八中2025屆高考沖刺數(shù)學(xué)模擬試題含解析
- 2025屆河南省漯河市重點(diǎn)中學(xué)高考英語三模試卷含解析
- 現(xiàn)代學(xué)徒制課題:現(xiàn)場工程師的內(nèi)涵特征和培養(yǎng)路徑研究(附:研究思路模板、可修改技術(shù)路線圖)
- 福建省莆田市第二十五中學(xué)2025屆高三考前熱身語文試卷含解析
- 黑龍江省雙鴨山市重點(diǎn)中學(xué)2025屆高考數(shù)學(xué)一模試卷含解析
- 穩(wěn)派教育2025屆高三3月份模擬考試語文試題含解析
- 2025屆漳州市重點(diǎn)中學(xué)高三壓軸卷數(shù)學(xué)試卷含解析
- 福建省泉州市泉港第一中學(xué)2025屆高考考前模擬語文試題含解析
- 2025屆四川省成都市重點(diǎn)中學(xué)高考沖刺押題(最后一卷)英語試卷含解析
- 大氣課程設(shè)計(jì)-—袋式除塵器
- 手衛(wèi)生流程圖
- 小說情節(jié)的作用(課堂PPT)
- 介紹蘭州英文
- 建筑物放線驗(yàn)線技術(shù)報(bào)告
- 下庫進(jìn)出水口攔污柵2X320KN雙向門機(jī)安裝方案
- 壓縮固結(jié)試驗(yàn)
- 人教部編版小學(xué)道德與法治《父母多愛我》教案 教學(xué)設(shè)計(jì)
- API-6A-無損檢測作業(yè)指導(dǎo)書
- 屏式過熱器、高溫過熱器和高溫再熱器安裝作業(yè)指導(dǎo)書
- 國家基本藥物目錄(最新版)
評(píng)論
0/150
提交評(píng)論