數據結構課程設計 停車場管理系統
《數據結構課程設計 停車場管理系統》由會員分享,可在線閱讀,更多相關《數據結構課程設計 停車場管理系統(21頁珍藏版)》請在裝配圖網上搜索。
1、課 程 設 計 報 告課程名稱課程名稱 數據結構課程設計數據結構課程設計 課題名稱課題名稱 停車場管理系統停車場管理系統 專專 業(yè)業(yè) 信息管理與信息系統信息管理與信息系統 班班 級級 信管信管 0901 學學 號號 200903110122 姓姓 名名 指導教師指導教師 2011 年年 1 月月 09 日日2湖南工程學院課 程 設 計 任 務 書課程名稱 數據結構 課 題 停車場管理管理系統 專業(yè)班級 信 管 0901 學生姓名 學 號 200903110202 指導老師 審 批 任務書下達日期 2010 年 1 月 09 日任務完成日期 2011 年 1 月 20 日3一、設計內容與設計要求
2、1 設計設計內容:內容:問題描述設停車場只有一個可停放幾輛汽車的狹長通道,且只有一個大門可供汽車進出,汽車在停車場內按車輛的先后順序依次排列,若車站內已停滿汽車,則后來的汽車只能在門外的通道上等停,一旦停車場內有車開走,則排在通道上的第一輛車即可進入;當停車場內某輛車要離開時,由于停車場是狹長的通道,在它之后開入的車輛必須先退出車站為它讓路,待該車輛開出大門,為它讓路的車輛再按原來次序進入車場。在這里假設汽車不能從便道上開走,試設計這樣一個停車場模擬管理程序?;竟δ埽?) 車輛成批入站。當一個停車場剛開始投入運行的時候,會有很多車進來,因此,要設計一個函數來實現車輛批量進站。并要檢測車輛的數
3、目是否超過規(guī)定的最大容量,給出相關提示信息。(2)單個車輛入站。當系統正常投入運行后,會有零散的車輛進進出出,因此,設計一個函數實現單個車輛入站。(3)車站內信息實時顯示。車站內信息包括兩個部分:停車場內停放的車輛以及在外面通道上等停的車輛。(4)車輛出站。當停車場內車輛出站后,檢查通道上是否有車等停,如果有,則要把排在最前面的車調入停車場內。2 設計設計要求:要求:1) 設計正確,方案合理。2) 界面友好,使用方便。3) 程序精煉,結構清晰。4) 設計報告 5000 字以上,含程序設計說明、系統的功能框圖、流程圖、4源程序清單等。5) 實際操作過程中遇到的問題及解決方法:設計總結及心得體會。
4、6) 上機演示。 二、進度安排第 19 周 星期一 8 時:00 分11 時:30 分 星期二 8 時:00 分11 時:30 分 星期三 14 時:00 分17 時:30 分 星期四 14 時:00 分17 時:30 分 星期五 8 時:00 分11 時:30 分第 20 周 星期一 8 時:00 分11 時:30 分 附:課程設計報告裝訂順序:封面、任務書、目錄、正文、評分、附件(A4 大小的圖紙及程序清單) 。 正文的格式:一級標題用 3 號黑體,二級標題用四號宋體加粗,正文用小四號宋體;行距為 22。正文的內容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖) ;三、主要
5、功能的實現課塊劃畫塊圖實(至少要有一個主要模塊的流程圖) ;四、程序調試;五、總結;六、附件(所有程序的源代碼,要求對程序寫出必要的注釋) 。正文總字數要求在 5000 字以上(不含程序源代碼) 。 目 錄1、緒論 .61.1 課程設計的目的和意義.62、需求分析.652.1、課程設計的目的.62.2、課程設計的任務.62.4、系統總體設計圖.73、詳細信息.73.1 基本信息.74、詳細設計.74.1 問題定義.84.2、流程圖及系統測試.84.2.1、進停車場.84.2.2 車輛離開.84.3、程序運行圖.94.3.1、菜單欄.94.3.2、輸入信息欄 10 4.3.3、出車欄.104.3
6、.4、顯示欄.115、心得感受.116、附錄 .126.1、源程序.126.2、參考文獻.217、評分表.221、緒論1.1 課程設計的目的和意義當代大學生是一個特殊的團體,他們具有較高知識修養(yǎng)和較強綜合素質,但是他們中的大部分卻不具有與他們能力相符的動手能力與就業(yè)競爭能力。大學畢業(yè)生是新興勞動力的組成部分,提高大學畢業(yè)生就業(yè)工作發(fā)展水平,事關我國經濟社會可持續(xù)發(fā)展的進程 ,高校作為培養(yǎng)大學生的搖籃,必須責無旁貸地承擔6起提高大學生就業(yè)能力的重任。提高大學生的就業(yè)能力,不僅需要教師付出辛勤的勞動,還需要一套科學完善的制度作為保障,而高校畢業(yè)生基本情況數據庫管理系統無疑是一個很好的嘗試。本文設計
7、的這套數據庫管理系統,是綜合日常管理、實踐考核、科目成績統計、就業(yè)管理等等的綜合性數據庫系統。設計學生管理這樣一個系統,可以涉及到大多數 MFC 與 C 語言數據庫的重要數據庫對象、重要功能和特性,例如:視圖、觸發(fā)器和存儲過程等。由此,通過這個課程設計可以加深學生對這些 MFC 與 C 語言數據結構知識的學習、理解,積累在實際工程應用中運用各種數據庫對象的經驗,使學生掌握使用應用軟件開發(fā)工具開發(fā)數據庫管理系統的基本方法。在實用性方面,學生管理系統是很普遍的一種應用,選擇該系統作為課程設計也可以為學生以后可能遇到的實際開發(fā)提供借鑒。2 2、需求分析2.1、課程設計的目的運用數據結構編寫一個 C
8、語言程序,實現對停車場的管理。只要包括:車輛到達時得信息登記,車輛離開時得信息記錄及便道的車輛信息的顯示功能。2.2、課程設計的任務該系統實現以下幾個功能:2.21、車輛到達信息登記:包括車牌號,在停車場停放的位置等;2.22 、車輛離開信息記錄;2.23、信息顯示:顯示停車場內和便道內的汽車到達及位置等信息;2.3、軟件運行和開發(fā)工具1、windows2000 以上操作系統2、VisualC+6.0 開發(fā)環(huán)境72.42.4、系統總體設計圖、系統總體設計圖 3、詳細信息3.1 基本信息 車的車牌號,到達時信息及離開時信息。4、詳細設計使用 Visual C+平臺設計學生成績管理系統的主框架。4
9、.1 問題定義該程序主要是為了實現對車庫的管理,為實現該功能先定義了一個系統菜單: 停車場管理系統車輛到達車輛離去便道信息退出信息8(1)添加信息 (4)查找停車信息 (5)顯示全部信息 (7)顯示統計數據4.2、流程圖及系統測試4.2.14.2.1、進停車場、進停車場車輛進停車場是否有車進入停車場記錄信息回主菜單進入便道記錄信息YN 圖4.41 進停車場流程4.2.24.2.2 車輛離開車輛離開9車輛進停車場是否有車進入停車場記錄信息回主菜單進入便道記錄信息YN 圖 4.42 車輛離開4.3、程序運行圖4.3.14.3.1、菜單欄、菜單欄 圖 4.31 菜單欄運行圖104.3.24.3.2、
10、輸入信息欄、輸入信息欄 圖 4.32 輸入信息欄運行圖4.3.34.3.3、出車欄、出車欄11 圖 4.33 出車欄運行圖4.3.44.3.4、顯示欄、顯示欄 圖 4.35 顯示欄運行圖5、心得感受 開始時候的課程設計完全沒有思路,感覺很迷茫,不知道從何做起。幸好在課設之前趙老師給我們做了很詳細的指點,記得在大一的時候老師就提到過她,當時就給我們留下了深刻的印象。是一位很負責任的,很有耐心的好老師,我們很愛戴趙老師。 課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現,提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日新日異,單片機已經成為當
11、今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握管理項目的開發(fā)技術是十分重要的。 回顧起此次圖書館借書系統課程設計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在整整一星期的日子里,可以說得是苦多于甜,但是可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到12了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困
12、難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設計之后,一定把以前所學過的知識重新溫故。在以后會有更多的課程設計,我們現在的努力是為了將來打好基礎,趙老師很認真的對待我們的答辯,這是一種很負責任的表現,這是要讓我們真正的自己動手,了解和掌握一些基本知識,在以后的工作中做到游刃有余。 這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在趙老師的辛勤指導下,終于游逆而解。同時,在趙錦元老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W和各位指導老師再次
13、表示忠心的感謝!6、附錄6.1、源程序#include #include #include #include /常量定義#define MAX_STOP 5 /定義停車場最大停車數#define MAX_PLATE 10 /定義車牌號最大長度using namespace std; /使用 std 命名空間/定義存儲汽車信息的結構體13typedef struct char license_plateMAX_PLATE; /汽車牌照號碼,定義為一個字符指針類型 char state; /汽車當前狀態(tài),字符 p 表示停放在停車位上,字符 s 表示停放在便道上,每輛車的初始狀態(tài)用字符 i 來進行表
14、示CAR;/定義模擬停車場的棧結構typedef struct CAR STOPMAX_STOP; /汽車信息的存儲空間 int top; /用來指示棧頂位置的靜態(tài)指針SeqStack;/定義模擬便道的隊列結構typedef struct node CAR WAIT; /汽車信息的存儲空間 struct node *next; /用來指示隊列位置的動態(tài)指針QNode; /鏈隊列節(jié)點的類型/定義鏈隊列的收尾指針typedef struct QNode *front,*rear;LQueue; /將頭尾指針封裝在一起的鏈隊/函數聲明 int Empty_LQueue(LQueue *q); /判隊
15、空int LeaveCheck(SeqStack parking , char *license_plate); /檢查離開的車是否在停車場中int QueueLength(LQueue *q); /判隊長度int Out_LQueue(LQueue *&sidewalk , char *license_plate); /出隊操作int StackEmpty(SeqStack parking); /判斷棧是否為空int StackFull(SeqStack parking); /判斷棧是否為滿int StackPop(SeqStack &parking); /出棧操作int StackTop(
16、SeqStack parking , char *license_plate); /取棧頂元素void Car_come(SeqStack &parking , LQueue *&sidewalk); /有車到來時的操作14void Car_leave(SeqStack &parking , LQueue *&sidewalk); /有車離開的操作void Display(SeqStack parking); /顯示停車場內的所有信息 調試時用void InitStack(SeqStack &parking); /初始化棧void InitList(LQueue *&sidewalk); /初
17、始化隊列void In_LQueue(LQueue *&sidewalk , char *license_plate); /進隊操作void Input_Check(char *license_plate); /檢驗輸入的車牌是否合法void StackPush(SeqStack &parking , char *license_plate);/進棧操作void main() /定義變量 SeqStack parking; LQueue *sidewalk = NULL; char *choice = new char; int flag = 1; /定義一個變量 判斷是否退出 InitSta
18、ck(parking); /初始化一個為空的停車場 InitList(sidewalk); /初始化一個為空的便道 while(flag) /運行界面及功能選擇 coutt*nn; coutt*歡迎來到王凌鋒的停車場*nn; coutt| 停車場模擬管理系統 |nn; coutt|-|nn; coutt| |nn; coutt| 有車到來時請按 C 鍵。 |nn; coutt| 有車要走時請按 l 鍵。 |nn; coutt| 查看停車場請按 D 鍵。 |nn; coutt| 要退出系統請按 Q 鍵。 |nn; coutt|-|nn; coutt|*nn; cout請選擇操作:; gets(c
19、hoice); if(1 != strlen(choice) cout請正確輸入選項!; continue; else switch(*choice) case c: case C: Car_come(parking,sidewalk);break; 15 case l: case L: Car_leave(parking,sidewalk);break; case q: case Q: flag=0;break; case d: case D: Display(parking);break; default: cout選擇不正確!請重新選擇!n; /有車到來時的操作 void Car_com
20、e(SeqStack &parking , LQueue *&sidewalk) char license_plateMAX_PLATE; /定義變量 cout請輸入車輛的車牌號碼:; Input_Check(license_plate); if(StackFull(parking) /判斷停車場是否已滿,滿則進入便道,不滿進入停車場 In_LQueue(sidewalk , license_plate); /進入便道 cout停車場已滿請在便道等候,您的位置為QueueLength(sidewalk) endl; else StackPush(parking , license_plate)
21、; /進入停車場 cout請進入停車場中的parking.top+1號停車位n; / Display(parking);16void Car_leave(SeqStack &parking , LQueue *&sidewalk) /有車離開時的操作 SeqStack tmpparking; /定義臨時停車場 char leave_license_plateMAX_PLATE; /要離開的車牌號 char license_plateMAX_PLATE; /存放從停車場中讀出來的車牌信息 InitStack(tmpparking); /初始化臨時停車場 if(StackEmpty(parking
22、) /判斷停車場中是否有車 cout當前停車場中沒有車n; return; /退出子函數 cout請輸入要離開的車牌照:; Input_Check(leave_license_plate); cout當前停車場中有parking.top+1輛車n; if(LeaveCheck(parking , leave_license_plate) /判斷車是否在停車場中 cout您的車在LeaveCheck(parking , leave_license_plate)號車位上n; /車在停車場中 while(StackTop(parking , license_plate)& (strcmp(parki
23、ng.STOPparking.top.license_plate, leave_license_plate ) != 0) strcpy(parking.STOPparking.top.license_plate , license_plate); cout牌照為license_plate的車暫時退出停車場parking.top+1號位n; StackPush(tmpparking , license_plate); /停車場中的車暫時退出 進入臨時停車場 StackPop(parking); /出棧 cout牌照為license_plate的車離開停車場parking.top+1號位n; S
24、tackPop(parking); /出棧 /將臨時停車場中的車?;赝\噲?while(StackEmpty(tmpparking) != 1) StackTop(tmpparking , license_plate); StackPush(parking , license_plate ); cout牌照為license_plate的車進入停車場parking.top+1號位n; license_plate0 = 0;17 StackPop(tmpparking); if(parking.top+1 = MAX_STOP-1) /判斷車離開前停車場是否停滿 if(QueueLength(si
25、dewalk) /如果停滿則判斷便道上是否有車 /便道中有車 則從便道中停入停車場 Out_LQueue(sidewalk , license_plate); /出隊 StackPush(parking , license_plate); /入棧 cout在便道中牌照為license_plate的車進入停車場parking.top+1號位n; else /車不在停車場中 cout您的車不在停車場中!n;/初始化順序棧void InitStack(SeqStack &parking) parking.top = -1;/判??読nt StackEmpty(SeqStack parking) if
26、(parking.top = -1) return 1; else return 0;/判棧滿int StackFull(SeqStack parking) if(parking.top = MAX_STOP-1) return 1; else return 0;/入棧void StackPush(SeqStack &parking , char *license_plate) parking.top+; strcpy(parking.STOPparking.top.license_plate , license_plate); parking.STOPparking.top.state =
27、p;18/出棧 返回棧頂指針int StackPop(SeqStack &parking) if(StackEmpty(parking) return 0; else return parking.top-;/取棧頂元素int StackTop(SeqStack parking , char *license_plate ) if(StackEmpty(parking) return 0; else strcpy(license_plate , parking.STOPparking.top.license_plate); return 1; /顯示所有void Display(SeqStac
28、k parking) if(parking.top = -1) printf(停車場為空n); else while(parking.top != -1) cout車牌號為:parking.STOPparking.top.license_plate; cout,停在parking.top + 1 front=sidewalk-rear = NULL;/入隊void In_LQueue(LQueue *&sidewalk,char *license_plate) 19 QNode *car_on_sidewalk; car_on_sidewalk = (QNode *)malloc(sizeof
29、(QNode); /為新節(jié)點開辟新空間 strcpy(car_on_sidewalk-WAIT.license_plate , license_plate); /將數據寫入節(jié)點 car_on_sidewalk-WAIT.state = s; /寫入停車信息 car_on_sidewalk-next = NULL; if(Empty_LQueue(sidewalk) /隊空則創(chuàng)建第一個節(jié)點 sidewalk-front = sidewalk-rear = car_on_sidewalk; else /隊非空插入隊尾 sidewalk-rear-next = car_on_sidewalk; si
30、dewalk-rear = car_on_sidewalk; /判隊空int Empty_LQueue(LQueue *q) if(q-front = NULL) return 1; else return 0;/判隊長度 返回隊長int QueueLength(LQueue *q) QNode *p=q-front; int i=0; while(p != NULL) i+; p=p-next; return i; /出隊 成功返回 1 隊空返回 0int Out_LQueue(LQueue *&sidewalk,char *license_plate) QNode *car_on_side
31、walk; if(Empty_LQueue(sidewalk) /如果隊空返回 0 return 0; car_on_sidewalk = sidewalk-front; strcpy(license_plate , car_on_sidewalk-WAIT.license_plate); /取出隊頭元素20 if(sidewalk-front = sidewalk-rear) /隊中只有一個元素 sidewalk-front = sidewalk-rear=NULL; /刪除元素 else sidewalk-front = sidewalk-front-next; /隊頭指針后移 free(
32、car_on_sidewalk); /釋放指針 return 1; /檢查離開的車是否在停車場中 返回車在停車場中位置 不在則返回 0int LeaveCheck(SeqStack parking,char *license_plate) int flag = parking.top+1; /定義變量記錄當前車在停車場中位置 if(StackEmpty(parking) return 0; else /查找離開車所在位置 while(parking.top != -1 & strcmp(parking.STOPparking.top.license_plate , license_plate)
33、 != 0) flag-; parking.top-; return flag; /檢驗輸入的車牌是否合法void Input_Check(char *license_plate) int flag = 1; int i; string tmpstr; while(flag) cintmpstr; getchar(); if(tmpstr.length()MAX_PLATE) for(i=0;i10;i+) license_platei = tmpstr.c_str()i; flag = 0; else cout輸入有誤,請重新輸入:;21 7、評分表計算機與通信學院課程設計評分表課程名稱: 數據結構 項項 目目評評 價價設計方案的合理性與創(chuàng)造性設計與調試結果設計說明書的質量答辯陳述與回答問題情況課程設計周表現情況綜合成績 教師簽名: 日 期:
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 川渝旅游日記成都重慶城市介紹推薦景點美食推薦
- XX國有企業(yè)黨委書記個人述責述廉報告及2025年重點工作計劃
- 世界濕地日濕地的含義及價值
- 20XX年春節(jié)節(jié)后復工安全生產培訓人到場心到崗
- 大唐女子圖鑒唐朝服飾之美器物之美繪畫之美生活之美
- 節(jié)后開工第一課輕松掌握各要點節(jié)后常見的八大危險
- 廈門城市旅游介紹廈門景點介紹廈門美食展示
- 節(jié)后開工第一課復工復產十注意節(jié)后復工十檢查
- 傳統文化百善孝為先孝道培訓
- 深圳城市旅游介紹景點推薦美食探索
- 節(jié)后復工安全生產培訓勿忘安全本心人人講安全個個會應急
- 預防性維修管理
- 常見閥門類型及特點
- 設備預防性維修
- 2.乳化液泵工理論考試試題含答案