數(shù)據(jù)結構課程設計 停車場管理系統(tǒng)
《數(shù)據(jù)結構課程設計 停車場管理系統(tǒng)》由會員分享,可在線閱讀,更多相關《數(shù)據(jù)結構課程設計 停車場管理系統(tǒng)(21頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、課 程 設 計 報 告課程名稱課程名稱 數(shù)據(jù)結構課程設計數(shù)據(jù)結構課程設計 課題名稱課題名稱 停車場管理系統(tǒng)停車場管理系統(tǒng) 專專 業(yè)業(yè) 信息管理與信息系統(tǒng)信息管理與信息系統(tǒng) 班班 級級 信管信管 0901 學學 號號 200903110122 姓姓 名名 指導教師指導教師 2011 年年 1 月月 09 日日2湖南工程學院課 程 設 計 任 務 書課程名稱 數(shù)據(jù)結構 課 題 停車場管理管理系統(tǒng) 專業(yè)班級 信 管 0901 學生姓名 學 號 200903110202 指導老師 審 批 任務書下達日期 2010 年 1 月 09 日任務完成日期 2011 年 1 月 20 日3一、設計內(nèi)容與設計要求
2、1 設計設計內(nèi)容:內(nèi)容:問題描述設停車場只有一個可停放幾輛汽車的狹長通道,且只有一個大門可供汽車進出,汽車在停車場內(nèi)按車輛的先后順序依次排列,若車站內(nèi)已停滿汽車,則后來的汽車只能在門外的通道上等停,一旦停車場內(nèi)有車開走,則排在通道上的第一輛車即可進入;當停車場內(nèi)某輛車要離開時,由于停車場是狹長的通道,在它之后開入的車輛必須先退出車站為它讓路,待該車輛開出大門,為它讓路的車輛再按原來次序進入車場。在這里假設汽車不能從便道上開走,試設計這樣一個停車場模擬管理程序?;竟δ埽?) 車輛成批入站。當一個停車場剛開始投入運行的時候,會有很多車進來,因此,要設計一個函數(shù)來實現(xiàn)車輛批量進站。并要檢測車輛的數(shù)
3、目是否超過規(guī)定的最大容量,給出相關提示信息。(2)單個車輛入站。當系統(tǒng)正常投入運行后,會有零散的車輛進進出出,因此,設計一個函數(shù)實現(xiàn)單個車輛入站。(3)車站內(nèi)信息實時顯示。車站內(nèi)信息包括兩個部分:停車場內(nèi)停放的車輛以及在外面通道上等停的車輛。(4)車輛出站。當停車場內(nèi)車輛出站后,檢查通道上是否有車等停,如果有,則要把排在最前面的車調(diào)入停車場內(nèi)。2 設計設計要求:要求:1) 設計正確,方案合理。2) 界面友好,使用方便。3) 程序精煉,結構清晰。4) 設計報告 5000 字以上,含程序設計說明、系統(tǒng)的功能框圖、流程圖、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。正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖) ;三、主要
5、功能的實現(xiàn)課塊劃畫塊圖實(至少要有一個主要模塊的流程圖) ;四、程序調(diào)試;五、總結;六、附件(所有程序的源代碼,要求對程序?qū)懗霰匾淖⑨專?。正文總字數(shù)要求在 5000 字以上(不含程序源代碼) 。 目 錄1、緒論 .61.1 課程設計的目的和意義.62、需求分析.652.1、課程設計的目的.62.2、課程設計的任務.62.4、系統(tǒng)總體設計圖.73、詳細信息.73.1 基本信息.74、詳細設計.74.1 問題定義.84.2、流程圖及系統(tǒng)測試.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)和較強綜合素質(zhì),但是他們中的大部分卻不具有與他們能力相符的動手能力與就業(yè)競爭能力。大學畢業(yè)生是新興勞動力的組成部分,提高大學畢業(yè)生就業(yè)工作發(fā)展水平,事關我國經(jīng)濟社會可持續(xù)發(fā)展的進程 ,高校作為培養(yǎng)大學生的搖籃,必須責無旁貸地承擔6起提高大學生就業(yè)能力的重任。提高大學生的就業(yè)能力,不僅需要教師付出辛勤的勞動,還需要一套科學完善的制度作為保障,而高校畢業(yè)生基本情況數(shù)據(jù)庫管理系統(tǒng)無疑是一個很好的嘗試。本文設計
7、的這套數(shù)據(jù)庫管理系統(tǒng),是綜合日常管理、實踐考核、科目成績統(tǒng)計、就業(yè)管理等等的綜合性數(shù)據(jù)庫系統(tǒng)。設計學生管理這樣一個系統(tǒng),可以涉及到大多數(shù) MFC 與 C 語言數(shù)據(jù)庫的重要數(shù)據(jù)庫對象、重要功能和特性,例如:視圖、觸發(fā)器和存儲過程等。由此,通過這個課程設計可以加深學生對這些 MFC 與 C 語言數(shù)據(jù)結構知識的學習、理解,積累在實際工程應用中運用各種數(shù)據(jù)庫對象的經(jīng)驗,使學生掌握使用應用軟件開發(fā)工具開發(fā)數(shù)據(jù)庫管理系統(tǒng)的基本方法。在實用性方面,學生管理系統(tǒng)是很普遍的一種應用,選擇該系統(tǒng)作為課程設計也可以為學生以后可能遇到的實際開發(fā)提供借鑒。2 2、需求分析2.1、課程設計的目的運用數(shù)據(jù)結構編寫一個 C
8、語言程序,實現(xiàn)對停車場的管理。只要包括:車輛到達時得信息登記,車輛離開時得信息記錄及便道的車輛信息的顯示功能。2.2、課程設計的任務該系統(tǒng)實現(xiàn)以下幾個功能:2.21、車輛到達信息登記:包括車牌號,在停車場停放的位置等;2.22 、車輛離開信息記錄;2.23、信息顯示:顯示停車場內(nèi)和便道內(nèi)的汽車到達及位置等信息;2.3、軟件運行和開發(fā)工具1、windows2000 以上操作系統(tǒng)2、VisualC+6.0 開發(fā)環(huán)境72.42.4、系統(tǒng)總體設計圖、系統(tǒng)總體設計圖 3、詳細信息3.1 基本信息 車的車牌號,到達時信息及離開時信息。4、詳細設計使用 Visual C+平臺設計學生成績管理系統(tǒng)的主框架。4
9、.1 問題定義該程序主要是為了實現(xiàn)對車庫的管理,為實現(xiàn)該功能先定義了一個系統(tǒng)菜單: 停車場管理系統(tǒng)車輛到達車輛離去便道信息退出信息8(1)添加信息 (4)查找停車信息 (5)顯示全部信息 (7)顯示統(tǒng)計數(shù)據(jù)4.2、流程圖及系統(tǒng)測試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ā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日新日異,單片機已經(jīng)成為當
11、今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握管理項目的開發(fā)技術是十分重要的。 回顧起此次圖書館借書系統(tǒng)課程設計,至今我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在整整一星期的日子里,可以說得是苦多于甜,但是可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到12了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困
12、難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設計之后,一定把以前所學過的知識重新溫故。在以后會有更多的課程設計,我們現(xiàn)在的努力是為了將來打好基礎,趙老師很認真的對待我們的答辯,這是一種很負責任的表現(xiàn),這是要讓我們真正的自己動手,了解和掌握一些基本知識,在以后的工作中做到游刃有余。 這次課程設計終于順利完成了,在設計中遇到了很多編程問題,最后在趙老師的辛勤指導下,終于游逆而解。同時,在趙錦元老師的身上我學得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W和各位指導老師再次
13、表示忠心的感謝!6、附錄6.1、源程序#include #include #include #include /常量定義#define MAX_STOP 5 /定義停車場最大停車數(shù)#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; /將頭尾指針封裝在一起的鏈隊/函數(shù)聲明 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); /顯示停車場內(nèi)的所有信息 調(diào)試時用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| 停車場模擬管理系統(tǒng) |nn; coutt|-|nn; coutt| |nn; coutt| 有車到來時請按 C 鍵。 |nn; coutt| 有車要走時請按 l 鍵。 |nn; coutt| 查看停車場請按 D 鍵。 |nn; coutt| 要退出系統(tǒng)請按 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; /退出子函數(shù) 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); /將數(shù)據(jù)寫入節(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、評分表計算機與通信學院課程設計評分表課程名稱: 數(shù)據(jù)結構 項項 目目評評 價價設計方案的合理性與創(chuàng)造性設計與調(diào)試結果設計說明書的質(zhì)量答辯陳述與回答問題情況課程設計周表現(xiàn)情況綜合成績 教師簽名: 日 期:
- 溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020高考化學熱門專題:原理綜合透題型析課件
- 現(xiàn)代中國的教育說課稿課件
- 蒸餾和熔點沸點的測定和溫度計的校正
- 臨時起搏器的護理
- 恒成實業(yè)網(wǎng)絡推廣方案
- 勿為小惡優(yōu)秀課件-粵教版
- 人教版初中地理七年級上冊人口與人種課件7
- 誡子書課件文檔
- 軟件測試計劃書與測試用例編寫課件
- 人教版五年級數(shù)學上冊課件3小數(shù)除法第2課時除數(shù)是整數(shù)的小數(shù)除法課件
- 太白酒2002年全國推廣營銷企劃案
- 滬教版小學語文三年級上冊《小狗杜克》課件1
- 我們的情感世界課件7-人教版
- 擔保產(chǎn)品案例講解及其風險控制設計(含法律相關規(guī)范)
- 【部編版】四年級語文上冊《2.走月亮》ppt課件