




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、*實踐教學* 蘭州理工大學計算機與通信學院2011年秋季學期 面 向 對 象 課程設計題 目: 車輛綜合業(yè)務管理系統(tǒng)專業(yè)班級: 10級計算機科學與技術四班 姓 名: 郭 緋 學 號: 10240404 指導教師:張 其 文 成 績:目 錄摘 要1序 言2一流程調查3二函數(shù)的調用關系圖4三.調試分析51.調試過程中的主要問題.5 2.測試結果及主要操作6四總 結10五主要參考文獻11六致 謝12附錄13源程序代碼(帶注釋):13摘 要循環(huán)隊列是一種環(huán)狀的隊列并且對頭元素指向隊尾元素,車輛綜合管理系統(tǒng)問題是典型的采用循環(huán)隊列和棧解決的問題,再綜合與類和結構,實驗表明該算法的空間復雜度優(yōu)于其他算法。
2、該車輛綜合管理系統(tǒng)就是采用的這種算法。關鍵詞:車輛綜合管理;空間復雜度;循環(huán)隊列;棧序 言在人們的生活中,機動車輛是我們每天都離不開的交通工具,因此,我們要想能更好的使用它們,充分的發(fā)揮它們的作用,使其能更好的服務于社會,就應該有一個良好的車輛管理系統(tǒng)。車輛綜合業(yè)務管理系統(tǒng)的主要作用是對于一個中等規(guī)模的、獨立運營的車隊實現(xiàn)車輛調度和車隊綜合業(yè)務的有效管理。在對某車隊的車輛調度、駕駛員管理、車輛管理以及業(yè)務管理的深入調研后,力爭開發(fā)出一個實用性較強的車輛綜合業(yè)務管理軟件,基本上可以滿足正常的車輛管理。通過本軟件的設計、開發(fā),使學生初步得到軟件工程的訓練,全面培養(yǎng)軟件開發(fā)過程中的分析、設計、編碼、
3、測試及文檔規(guī)范書寫的能力一、流程調查機動車輛是我們每天都離不開的交通工具,因此,我們要想能更好的使用它們,充分的發(fā)揮它們的作用,使其能更好的服務于社會,就應該有一個良好的車輛管理系統(tǒng)。車輛綜合業(yè)務管理系統(tǒng)的主要作用是對于一個中等規(guī)模的、獨立運營的車隊實現(xiàn)車輛調度和車隊綜合業(yè)務的有效管理。在對某車隊的車輛調度、駕駛員管理、車輛管理以及業(yè)務管理。深入調研后,通過實踐,本程序可以實現(xiàn)車隊的車輛調度、駕駛員管理、車輛管理及派出去的功能。二函數(shù)的調用關系圖主函數(shù)用戶界面結束駕駛員查看車輛查看車輛派出車輛回來駕駛員Leave車場ListLeaveArrival便道ListPRINT返回返回主函數(shù)結束三調試
4、分析1. 調試過程中的主要問題由于此停車場管理系統(tǒng)是分模塊設計的,而且在程序的實現(xiàn)過程中又使用了清屏函數(shù),所以,運行時用戶選擇任務并且執(zhí)行完任務后,又會回到供用戶選擇功能的主界面,因此整個程序從整體上來講結構清晰,使用方便。本程序的調試運行,總體上情況良好,但中間也出現(xiàn)了一些小問題。其中比較有代表性的主要問題有:當車場已經達到最大容量,但仍有車輛進入停車場的時候,運行界面上沒有出現(xiàn)或者說出現(xiàn)了但又跳掉了“停車場已滿,該車輛需在便道上等待!”的提示信息。我們小組成員經過反復商量討論,并且在查閱了多種資料后,在那一個cin語句后加了一個cin,此時,程序運行結果就符合要求了。要將駕駛員信息存入文本
5、后,必須和讀出的文本名稱一致,否者講初相亂碼;設計更加合理,更加人性化,更加方面用戶使用,同時也提高了用戶的操作效率。調試中遇到的問題及對問題的解決方法1.問題:字符和括號的輸寫錯誤解決方法:把中文輸入字母切換成英文輸入2.問題:括號的對應解決方法:一個一個的補充括號和調整括號2.調試程序車輛管理界面;有車輛回來,錄入信息;查看駕駛員界面; 派出任務的車輛;車庫滿界面;車庫情況界面;退出系統(tǒng)界面;四總 結通過這兩周的課程設計,加深了我對C+面向對象這門課程所學內容的進一步的理解與掌握;同時,通過對車輛管理系統(tǒng)的開發(fā),使得我將計算機課程所學知識與實際問題很好地相聯(lián)接在了一起。在這次課程設計中,培
6、養(yǎng)了我開發(fā)一個中小型程序的能力。在這次對停車場管理系統(tǒng)的開發(fā)過程中,有過程序功能成功實現(xiàn)時的欣喜,也有遇到問題、解決問題時的執(zhí)著以及迷茫。在這次課程設計中,使得我很好地了解了在開發(fā)程序過程中合作的重要性。從課題的布置到完成課程設計,按時完成了相關任務。通過這次課程設計,我學習到了很多算法與數(shù)據(jù)結構的知識,同時對本學期的課本所學知識有了進一步鞏固,特別是對棧和隊列等的熟練運用。這次課程設計之后,我發(fā)現(xiàn),動手比看書更能獲取實際有用的知識。很多知識,在書本上看似很有道理,可是這些知識在與實際情況結合起來往往就會出現(xiàn)書本上沒有見過的情況,或者說之前的理解與實際的使用是截然不同的。所以,真理是從實踐中得
7、知的,而且也只有實踐才能檢驗真理。而這次課設也加強了我們這些方面的理解能力,對書面上的東西實際操作在具體項目上有了一個更加清晰的認識。我們還意識到一個大的程序,在寫代碼前,一定要有良好的需求分析和結構設計,應該占整個程序設計的大部分時間,一個好的程序,分析設計應該要非常充分,這樣才不至于代碼寫了一半才發(fā)現(xiàn)很多錯誤。在具體代碼操作之前的設計規(guī)劃與構建才是一個優(yōu)秀的程序設計的靈魂。設計過程中,我另一個大的體會就是要及時參考圖書館借來的書,通過教程,大大的提高了工作的效率。同時我也發(fā)現(xiàn)自己的不足之處。對于很多自己以為很熟悉的東西,在細節(jié)上的把握有許多不足:有些想當然,認為它應該是這樣,而忽略的事實。
8、這也讓我明白,做事細心是必須的,所謂細節(jié)決定成??!程序還有好多不足,在今后的日子里,我會虛心向老師同學請教,盡自己最大的努力做到最好。五主要參考文獻1C+面向對象 程序設計教程陳維興、林小茶編著,清華大學出本社。2Jeraod V.Post.數(shù)據(jù)庫管理系統(tǒng)(英文版.第三版)美清華大學出版社,2006.13張海藩,李勁,謝兆陽.SQL Server2000數(shù)據(jù)庫設計與系統(tǒng)管理M.北京:清華大學出版社,2000.9六致謝首先感謝我的指導老師張其文老師在我的課程設計過程中提出了指導性的方案和架構,并指引我閱讀相關的資料和書籍,使我在面對從書本到實際應用的鴻溝之時有了一座堅固的橋。感謝我的數(shù)據(jù)結構老師
9、張永老師和C+語言老師劉嘉老師在以往的基礎課學習中為我打下良好的基礎,這是我這次課程設計能夠順利完成的前提。我的同學在設計過程及完成后的測試中起到了相當重要的作用,沒有他們,我就不能發(fā)現(xiàn)后期測試過程出現(xiàn)的錯誤和漏洞,在此一并表示感謝。附錄源程序代碼(帶注釋):#include <iostream>#include <malloc.h>#include <string>#include <fstream>#include <windows.h>/常量定義#define MAX_STOP 6 /定義停車場最大停車數(shù)#define MAX_
10、PLATE 10 /定義車牌號最大長度#define TIME_COUNT "秒" /定義時間單位#define TIME_MS_TO_CONUT 1000 /定義時間進制using namespace std; /使用std命名空間typedef struct /數(shù)據(jù)結構定義,定義存儲汽車信息的結構體 char license_plateMAX_PLATE; /汽車牌照號碼,定義為一個字符指針類型 char state; /汽車當前狀態(tài),字符p表示停放在停車位上,字符s表示停放在便道上 int time; /汽車停入停車場時的時間,用來計時收費CAR;typedef st
11、ruct /定義模擬停車場的棧結構 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 write();/函數(shù)聲明int read(); int Empty_LQueue(LQueu
12、e *q); /判隊空/檢查離開的車是否在停車場中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);
13、/出棧操作int StackTop(SeqStack parking , char *license_plate , int &time);/取棧頂元素void Car_come(SeqStack &parking , LQueue *&sidewalk); /有車到來時的操作void Car_leave(SeqStack &parking , LQueue *&sidewalk); /有車離開的操作void Display(SeqStack parking); /顯示停車場內的所有信息 調試時用void InitStack(SeqStack &
14、parking); /初始化棧void InitList(LQueue *&sidewalk); /初始化隊列void In_LQueue(LQueue *&sidewalk , char *license_plate); /進隊操作void Input_Check(char *license_plate); /檢驗輸入的車牌是否合法void StackPush(SeqStack &parking , char *license_plate , int stop_time);/進棧操作void main() SeqStack parking; /定義變量 LQueue
15、*sidewalk = NULL; char *choice = new char; int flag = 1; /定義一個變量 判斷是否退出 InitStack(parking);/初始化一個為空的停車場 InitList(sidewalk);/初始化一個為空的便道 while(flag)/運行界面及功能選擇 cout<<"nt 歡迎使用車輛管理系統(tǒng) nn" cout<<"tnn" cout<<"t 有車回來時請按 C 鍵。 nn" cout<<"t 查看駕駛員請按 K 鍵。
16、 nn" cout<<"t 要派出車輛請按 l 鍵。 nn" cout<<"t 查看停車場請按 D 鍵。 nn" cout<<"t 要退出系統(tǒng)請按 Q 鍵。 nn" cout<<"tnn" cout<<"請選擇操作:" gets(choice); if(1 != strlen(choice) cout<<"請正確輸入選項!" continue; else switch(*choice) case
17、 'c': case 'C': Car_come(parking,sidewalk);break; case 'l': case 'L': Car_leave(parking,sidewalk);break; case 'q': case 'Q': flag=0;break; case 'd': case 'D': Display(parking);break; case 'k': case 'K': read();break; def
18、ault: cout<<"選擇不正確!請重新選擇!n" /有車到來時的操作void Car_come(SeqStack &parking , LQueue *&sidewalk) /定義變量 char license_plateMAX_PLATE; cout<<"請輸入車輛的車牌號碼:" Input_Check(license_plate); write(); /判斷停車場是否已滿,滿則進入便道,不滿進入停車場 if(StackFull(parking) In_LQueue(sidewalk , license_p
19、late); /進入便道 cout<<"停車場已滿請在便道等候,您的位置為"<<QueueLength(sidewalk) <<endl; else StackPush(parking , license_plate , GetTickCount(); /進入停車場 cout<<"請進入停車場中的"<<parking.top+1<<"號停車位n" void Car_leave(SeqStack &parking , LQueue *&sidewal
20、k)/有車離開時的操作 SeqStack tmpparking; /定義臨時停車場 /定義變量 char leave_license_plateMAX_PLATE; /要離開的車牌號 char license_plateMAX_PLATE; /存放從停車場中讀出來的車牌信息 int time; InitStack(tmpparking); /初始化臨時停車場 if(StackEmpty(parking)/判斷停車場中是否有車 cout<<"當前停車場中沒有車n" return; /退出子函數(shù) cout<<"請輸入要離開的車牌照:"
21、 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(parkin
22、g , license_plate , time) && (strcmp(parking.STOPparking.top.license_plate , leave_license_plate) != 0) strcpy(parking.STOPparking.top.license_plate , license_plate); cout<<"牌照為"<<license_plate<<"的車暫時退出停車場"<<parking.top+1<<"號位n" Sta
23、ckPush(tmpparking , license_plate , time); /停車場中的車暫時退出 進入臨時停車場 StackPop(parking); /出棧 cout<<"牌照為"<<license_plate<<"的車離開停車場"<<parking.top+1<<"號位n" cout<<"您在停車場中停了"<<(GetTickCount()-time)/TIME_MS_TO_CONUT<<TIME_COU
24、NT <<endl<<endl; /輸出所停時間信息 StackPop(parking); /出棧 while(StackEmpty(tmpparking) != 1)/將臨時停車場中的車?;赝\噲?StackTop(tmpparking , license_plate , time); StackPush(parking , license_plate , time); cout<<"牌照為"<<license_plate<<"的車進入停車場"<<parking.top+1<
25、<"號位n" license_plate0 = '0' StackPop(tmpparking); if(parking.top+1 = MAX_STOP-1) /判斷車離開前停車場是否停滿 if(QueueLength(sidewalk) /如果停滿則判斷便道上是否有車 Out_LQueue(sidewalk , license_plate); /便道中有車 則從便道中停入停車場 /出隊 StackPush(parking , license_plate , GetTickCount(); /入棧 cout<<"在便道中牌照為&
26、quot;<<license_plate<<"的車進入停車場"<<parking.top+1<<"號位n" else cout<<"您的車不在停車場中!n" /車不在停車場中void InitStack(SeqStack &parking)/初始化順序棧 parking.top = -1;int StackEmpty(SeqStack parking)/判棧空 if(parking.top = -1) return 1; else return 0;int Stack
27、Full(SeqStack parking)/判棧滿 if(parking.top = MAX_STOP-1) return 1; else return 0;void StackPush(SeqStack &parking , char *license_plate , int stop_time)/入棧 parking.top+; strcpy(parking.STOPparking.top.license_plate , license_plate); parking.STOPparking.top.state = 'p' parking.STOPparking.
28、top.time = stop_time;int StackPop(SeqStack &parking)/出棧 返回棧頂指針 if(StackEmpty(parking) return 0; else return parking.top-;int StackTop(SeqStack parking , char *license_plate , int &time)/取棧頂元素 if(StackEmpty(parking) return 0; else strcpy(license_plate , parking.STOPparking.top.license_plate);
29、 time = parking.STOPparking.top.time; return 1; void Display(SeqStack parking)/顯示所有 if(parking.top = -1) printf("停車場為空n"); else while(parking.top != -1) cout<<"車牌號為:"<<parking.STOPparking.top.license_plate; cout<<endl; read(); / cout<<",停在"<&l
30、t;parking.top + 1 <<"號車位上" cout<<",已停"<<(GetTickCount()-parking.STOPparking.top.time)/TIME_MS_TO_CONUT<<TIME_COUNT<<endl; parking.top-; void InitList(LQueue *&sidewalk)/初始化隊列 sidewalk = (LQueue *)malloc(sizeof(LQueue); sidewalk->front=sidewalk
31、->rear = NULL;void In_LQueue(LQueue *&sidewalk,char *license_plate)/入隊 QNode *car_on_sidewalk; car_on_sidewalk = (QNode *)malloc(sizeof(QNode); /為新節(jié)點開辟新空間 strcpy(car_on_sidewalk->WAIT.license_plate , license_plate); /將數(shù)據(jù)寫入節(jié)點 car_on_sidewalk->WAIT.state = 's' /寫入停車信息 car_on_sidew
32、alk->WAIT.time = GetTickCount(); /寫入停車時間 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; /隊非空插入隊尾 sidewalk->rear = car_on_sidewalk; int Empty_LQueue(LQueue *q)/判隊
33、空 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; int Out_LQueue(LQueue *&sidewalk,char *license_plate)/出隊 成功返回1 隊空返回0 QNode *car_on_sidewalk; if(Empty_LQueue(sidewalk) /如果隊空返回0 return
34、 0; car_on_sidewalk = sidewalk->front; strcpy(license_plate , car_on_sidewalk->WAIT.license_plate);/取出隊頭元素 if(sidewalk->front = sidewalk->rear) /隊中只有一個元素 sidewalk->front = sidewalk->rear=NULL; /刪除元素 else sidewalk->front = sidewalk->front->next; /隊頭指針后移 free(car_on_sidewalk); /釋放指針 return 1; int LeaveCheck(SeqStack parking,char *license_plate)/檢查離開的車是否在停車場中 返回車在停車場中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO/IEC 14496-10:2025 EN Information technology - Coding of audio-visual objects - Part 10: Advanced video coding
- 基于詞匯語義邏輯分析的國際中文時間副詞教學研究
- 心內科患者防跌倒管理規(guī)范
- 輔助生殖健康宣教
- 推行新工具SOP宣貫培訓
- 預防肺結核班會課件
- 《電子產品裝配與測試》課件-任務4 常見電子產品裝配與測試
- 項鏈兒童創(chuàng)意畫課件
- 項目管理工程師課件
- 項目會計工程核算課件
- 統(tǒng)計技術應用管理辦法
- 水電站安全生產管理制度
- 抖音代運營公司策劃方案
- 2025至2030洗碗機里的啤酒行業(yè)產業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 美容培訓資料
- 2025年廣西中考英語真題含答案
- 2025年醫(yī)療健康行業(yè)醫(yī)療信息化建設與網(wǎng)絡安全研究報告
- 遼寧省文體旅集團所屬企業(yè)招聘筆試題庫2025
- 團建活動桌球店活動方案
- 2025屆拉薩市英語七年級第二學期期中質量跟蹤監(jiān)視模擬試題含答案
- 2025至2030中國甲氧基乙酸甲酯行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
評論
0/150
提交評論