




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、河南科技大學課 程 設 計 說 明 書課程名稱 數據結構課程設計 題 目 停車場模擬管理程序的設計與實現 院 系 班 級 學生姓名 指導教師 日 期 2012.6.19 數據結構課程設計任務書課程設計題目停車場模擬管理程序的設計與實現姓名劉鵬飛學號專業班級計算機科學與技術101組別組長同組成員 指導教師劉中華 李艷霞課程設計目的進一步理解棧和隊列的邏輯結構和存儲結構,提高使用理論知識指導解決實際問題的能力。課程設計環境386以上的微機上進行,運行環境為TurboC課程設計任務和要求設計停車場模擬管理程序,要求實現4個大的功能模塊1. 程序功能介紹和操作提示2. 汽車進入停車位的管理模塊3. 汽
2、車離開停車位的管理模塊4. 查看停車廠停車狀態的的查詢模塊參考文獻1、楊秀金等. 數據結構(C語言版). 西安電子科技大學出版社20042、譚浩強. C語言程序設計. 清華大學出版社. 20023、李春保. 數據結構教程上機實驗指導. 清華大學出版社. 2005 時 間 進 度 安 排序號起止日期工 作 內 容1下達課程設計任務、查閱資料、確定方案 2編寫程序、調試、運行 3驗收 4撰寫課程設計報告 5提交文檔停車場模擬管理程序的設計與實現 一、簡介1設計目的:理解線性表的邏輯結構和存儲結構,進一步提高使用理論知識指導解決實際問題的能力。2問題的描述:設停車場只有一個可停放幾輛汽車的狹長通道,
3、只有一個大門可供汽車進出。汽車在停車場內按車輛到達的先后順序依次排列,若車場內已停滿幾輛汽車,則后來的汽車只能在門外的便道上等候,一旦停車場內有車輛開走,則排在便道上的第一輛汽車即可進入;當停車場內某輛汽車要開走時,由于停車場是狹長的通道,在它之后開入的車輛必須先推出車場為他讓路,待車輛開出大門,為他讓路的車輛再按原次序進入車場。試設計這樣一個停車場模擬管理程序。二、數據結構的設計:typedef struct time int hour; int min; Time; 定義一個時間結點,以便區分車輛typedef struct node char num10; Time reach; Tim
4、e leave; CarNode; 對車的信息進行定義,且車只有一個車牌號typedef struct NODE CarNode *stackMAX+1; int top; SeqStackCar; 定義一個棧,用以表示車位typedef struct car CarNode *data; struct car *next; QueueNode;/*隊列元素*/typedef struct Node QueueNode *head; QueueNode *rear; LinkQueueCar;/*隊列*/定義一個隊列,并定義頭尾指針void InitStack(SeqStackCar *s)
5、/*初始化棧*/ int i; s->top=0; for(i=0;i<=MAX;i+) s->stacks->top=NULL; 創建一個棧,并初始化int InitQueue(LinkQueueCar *Q) /*初始化便道*/ Q->head=(QueueNode *)malloc(sizeof(QueueNode); if(Q->head!=NULL) Q->head->next=NULL; Q->rear=Q->head; return(1); else return(-1); 創建一個隊列,并初始化int Arrival(
6、SeqStackCar *Enter,LinkQueueCar *W) /*車輛到達*/ CarNode *p; QueueNode *t; p=(CarNode *)malloc(sizeof(CarNode); flushall(); printf("n請輸入車的車牌號(例:豫C1234):"); gets(p->num); if(Enter->top<MAX) /*車場未滿,車進車場*/ Enter->top+; printf("n車進入站所在的位置%d",Enter->top); printf("n車到達的
7、時間:/*:*/"); scanf("%d:%d",&(p->reach.hour),&(p->reach.min); Enter->stackEnter->top=p; return(1); else /*車場已滿,車進便道*/ printf("n該車須在便道等待!"); t=(QueueNode *)malloc(sizeof(QueueNode); t->data=p; t->next=NULL; W->rear->next=t; W->rear=t; return(1
8、); 有車進入停車場,車場有空位則進入,否則進入便道等待void Leave(SeqStackCar *Enter,SeqStackCar *Temp,LinkQueueCar *W) /*車輛離開*/ int i, room; CarNode *p,*t; QueueNode *q; /*判斷車場內是否有車*/ if(Enter->top>0) /*有車*/ while(1) /*輸入離開車輛的信息*/ printf("n請輸入車在車場的位置/1-%d/:",Enter->top); scanf("%d",&room); if
9、(room>=1&&room<=Enter->top) break; while(Enter->top>room) /*車輛離開*/ Temp->top+; Temp->stackTemp->top=Enter->stackEnter->top; Enter->stackEnter->top=NULL; Enter->top-; for(i=1;i<=Temp->top;i+)printf("n車牌號為%s車為其讓路n",Temp->stacki->num)
10、; p=Enter->stackEnter->top; Enter->stackEnter->top=NULL; Enter->top-; while(Temp->top>=1) Enter->top+; Enter->stackEnter->top=Temp->stackTemp->top; Temp->stackTemp->top=NULL; Temp->top-; PRINT(p,room); /*判斷通道上是否有車及車站是否已滿*/ if(W->head!=W->rear)&&
11、amp;Enter->top<MAX) /*便道的車輛進入車場*/ q=W->head->next; t=q->data; Enter->top+;if (room<Enter->top)for(i=1;i<Enter->top;i+)printf("n車牌號為%s的車進入第%d號的位置.n",Enter->stacki->num,i); printf("n便道的%s號車進入車場第%d位置.",t->num,Enter->top); printf("n請輸入現在
12、的時間/*:*/:"); scanf("%d:%d",&(t->reach.hour),&(t->reach.min); W->head->next=q->next; if(q=W->rear) W->rear=W->head; Enter->stackEnter->top=t; free(q); elsefor(i=1;i<=Enter->top;i+)printf("車牌號為%s的車進入第%d號車位n,Enter->stacki->num,i"
13、;);printf("n便道里沒有車.n"); else printf("n車場里沒有車."); /*沒車*/ 有離開車位:1.進行查找,從棧的最后一個開始查找,若有不符合的,則讓其離開,到輔助棧。2.查找成功,將其出棧,輔助棧中的汽車重新回到車位中;道上的的汽車進入車位,將車位補滿。3.查找失敗,進行上方的else,將進入輔助棧的車重新回到車位中,并顯示沒有此車。flag=1; while(flag) printf("n請選擇 1|2|3:"); printf("n1.車場n2.便道n3.返回n"); while
14、(1) scanf("%d",&tag); if(tag>=1|tag<=3) break; else printf("n請選擇 1|2|3:"); switch(tag) case 1:List1(&S);break; /*列表顯示車場信息*/ case 2:List2(&W);break; /*列表顯示便道信息*/ case 3:flag=0;break; default: break; 用的是一個switch語句實現輸入不同的操作選項,調用不同的函數進入不同的操作板塊三. 功能(函數)設計一本程序從總體上分為四個
15、功能模塊,分別為:一:(1)程序功能介紹和操作提示模塊:該模塊是為了讓用戶了解本程序的用途。菜單中含有“汽車進入停車位”“汽車離開停車位”“查看停車場狀態”及“退出”四個選項。(2)汽車進入停車位模塊:在這一模塊主要完成記錄停車場汽車的車牌號和對該車進入車位過程中狀態改變的記錄。(3)汽車離開停車位模塊:此模塊主要用來完成對停車位上的車停開停車場的過程及其他汽車的狀態的改變的記錄。(4)查看停車場狀態的查詢模塊:此模塊主要用來顯示停車位即便道上的狀態。二流程圖如下(1)程序功能介紹和操作提示模塊操作選項菜單車輛進入車輛離開列表信息退出程序(2)汽車進入停車位的管理模塊車輛進入車站輸入車牌號判斷
16、車站內車輛是否已滿進入便道進入車站(3)汽車離開停車位的管理模塊車輛離開車站輸入車牌號判斷車站是否有該車該車是否在停車位上該車不存在于車站YN該車離開該車不存在YN便道車按順序進入 四、界面設計:2. 系統界面3.車輛到達界面本程序所得界面描述如下:1:到達汽車。2:離開汽車。3:列表信息。4:退出程序。-請選擇一個數 1/2/3/4 :可以清楚地顯示車輛的狀態,而且簡單易懂。五、程序設計:Main Check、ArrivalLeave輸入車牌號輸入車牌號退出程序便道信息站內信息N該車是否存在Y判斷車站內車輛是否已滿該車不存在該車離開進入車站進入便道其他車按順序進入車站2.主要函數:Arriv
17、al函數:有車輛進入停車場的實現Leave 函數: 有車輛離開停車場的實現List 函數:對停車場的車位信息的實現Print 函數:打印出車的各種信息編寫代碼期間遇到的問題:1. 在定義函數時,定義了不同的指針,出現了不同的錯誤,程序運行時出現定義錯誤等錯誤信息指示。2. 在車輛進出車站時,需要不停的調用查找函數以及出棧函數,要進行出棧與臨時棧的數據轉存,需要設置不同的標志量和判斷函數進行出棧進棧的函數的調用,此過程細節非常復雜,比較容易出現錯誤。解決辦法:通過查找程序中隱藏得錯誤,加上重新溫習C語言和其他資料,進一步對程序有了深入的了解。先在保證各函數準確的情況下,調用函數,畫出程序的流程圖
18、,對照流程圖進行判斷條件的編寫和函數的調用。六、運行與測試:1.運行結果如下2、運行與測試期間遇到的問題及其解決辦法。(1).問題1:忽視了車牌號中含有字母導致剛開始的程序不合題意,只能輸入數字而無法輸入字母;通過復習C語言知識及請教別人才得以解決(2)問題2:輸入車牌號時不小心加入了運算符號,使程序運行進入死循環;仔細檢查后,加以修改才得以解決。(3)問題3:出現很多小錯誤,通過檢查及請教老師和同學最后改動一處錯誤使程序變為了正確(4)問題 4:使用字符串是沒有使用字符串復制,導致輸出車牌號只能是一個字母;通過請教同學及參考C語言課本最終解決。(5),問題 5:在輸入變量時沒有注意變量的大小寫,導致程序運行錯誤,修改后,程序運行正常。七、結論:本程序創建了一個簡單的停車場模型,可以生動形象的反映車輛進場出場的過程。但在車輛出場和便道停車還有待于改善;同時當車輛少于停車位時汽車出站也需要進一步改善
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設計成果評審管理辦法
- 證券托管業務管理辦法
- 訴訟管理辦法操作指引
- 調車公司費用管理辦法
- 財務結算維護管理辦法
- 財政借出款項管理辦法
- 財政投資管理辦法試行
- 財政費用開支管理辦法
- 賬戶分層分級管理辦法
- 貨幣藏品征集管理辦法
- 鐵路隧道施工職業病防控
- 《數據資產會計》 課件 第五章 數據資產的價值評估
- 三方比價合同協議書范文范本
- 2005室外給水管道附屬構筑物閥門井05S502
- 安徽省亳州市(2024年-2025年小學四年級語文)統編版開學考試(上學期)試卷及答案
- 2024-2025學年八年級上冊生物第17章《動物的運動和行為》測試卷(蘇科版)
- 2024年中考英語補全短文真題匯編(附答案)2139
- 三年級上冊萬以內的加減法計算題200道及答案
- 北京市《配電室安全管理規范》(DB11T 527-2021)地方標準
- 南充2024年四川南充南部縣縣城部分學校考調教師120人 筆試歷年典型考題寄考點剖析含答案附詳解
- 光伏工程合同
評論
0/150
提交評論