




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、*實踐教學(xué)* 蘭州理工大學(xué)計算機與通信學(xué)院2011年秋季學(xué)期 面 向 對 象 課程設(shè)計題 目: 車輛綜合業(yè)務(wù)管理系統(tǒng)專業(yè)班級: 10級計算機科學(xué)與技術(shù)四班 姓 名: 郭 緋 學(xué) 號: 10240404 指導(dǎo)教師:張 其 文 成 績:目 錄摘 要1序 言2一流程調(diào)查3二函數(shù)的調(diào)用關(guān)系圖4三.調(diào)試分析51.調(diào)試過程中的主要問題.5 2.測試結(jié)果及主要操作6四總 結(jié)10五主要參考文獻11六致 謝12附錄13源程序代碼(帶注釋):13摘 要循環(huán)隊列是一種環(huán)狀的隊列并且對頭元素指向隊尾元素,車輛綜合管理系統(tǒng)問題是典型的采用循環(huán)隊列和棧解決的問題,再綜合與類和結(jié)構(gòu),實驗表明該算法的空間復(fù)雜度優(yōu)于其他算法。
2、該車輛綜合管理系統(tǒng)就是采用的這種算法。關(guān)鍵詞:車輛綜合管理;空間復(fù)雜度;循環(huán)隊列;棧序 言在人們的生活中,機動車輛是我們每天都離不開的交通工具,因此,我們要想能更好的使用它們,充分的發(fā)揮它們的作用,使其能更好的服務(wù)于社會,就應(yīng)該有一個良好的車輛管理系統(tǒng)。車輛綜合業(yè)務(wù)管理系統(tǒng)的主要作用是對于一個中等規(guī)模的、獨立運營的車隊實現(xiàn)車輛調(diào)度和車隊綜合業(yè)務(wù)的有效管理。在對某車隊的車輛調(diào)度、駕駛員管理、車輛管理以及業(yè)務(wù)管理的深入調(diào)研后,力爭開發(fā)出一個實用性較強的車輛綜合業(yè)務(wù)管理軟件,基本上可以滿足正常的車輛管理。通過本軟件的設(shè)計、開發(fā),使學(xué)生初步得到軟件工程的訓(xùn)練,全面培養(yǎng)軟件開發(fā)過程中的分析、設(shè)計、編碼、
3、測試及文檔規(guī)范書寫的能力一、流程調(diào)查機動車輛是我們每天都離不開的交通工具,因此,我們要想能更好的使用它們,充分的發(fā)揮它們的作用,使其能更好的服務(wù)于社會,就應(yīng)該有一個良好的車輛管理系統(tǒng)。車輛綜合業(yè)務(wù)管理系統(tǒng)的主要作用是對于一個中等規(guī)模的、獨立運營的車隊實現(xiàn)車輛調(diào)度和車隊綜合業(yè)務(wù)的有效管理。在對某車隊的車輛調(diào)度、駕駛員管理、車輛管理以及業(yè)務(wù)管理。深入調(diào)研后,通過實踐,本程序可以實現(xiàn)車隊的車輛調(diào)度、駕駛員管理、車輛管理及派出去的功能。二函數(shù)的調(diào)用關(guān)系圖主函數(shù)用戶界面結(jié)束駕駛員查看車輛查看車輛派出車輛回來駕駛員Leave車場ListLeaveArrival便道ListPRINT返回返回主函數(shù)結(jié)束三調(diào)試
4、分析1. 調(diào)試過程中的主要問題由于此停車場管理系統(tǒng)是分模塊設(shè)計的,而且在程序的實現(xiàn)過程中又使用了清屏函數(shù),所以,運行時用戶選擇任務(wù)并且執(zhí)行完任務(wù)后,又會回到供用戶選擇功能的主界面,因此整個程序從整體上來講結(jié)構(gòu)清晰,使用方便。本程序的調(diào)試運行,總體上情況良好,但中間也出現(xiàn)了一些小問題。其中比較有代表性的主要問題有:當(dāng)車場已經(jīng)達到最大容量,但仍有車輛進入停車場的時候,運行界面上沒有出現(xiàn)或者說出現(xiàn)了但又跳掉了“停車場已滿,該車輛需在便道上等待!”的提示信息。我們小組成員經(jīng)過反復(fù)商量討論,并且在查閱了多種資料后,在那一個cin語句后加了一個cin,此時,程序運行結(jié)果就符合要求了。要將駕駛員信息存入文本
5、后,必須和讀出的文本名稱一致,否者講初相亂碼;設(shè)計更加合理,更加人性化,更加方面用戶使用,同時也提高了用戶的操作效率。調(diào)試中遇到的問題及對問題的解決方法1.問題:字符和括號的輸寫錯誤解決方法:把中文輸入字母切換成英文輸入2.問題:括號的對應(yīng)解決方法:一個一個的補充括號和調(diào)整括號2.調(diào)試程序車輛管理界面;有車輛回來,錄入信息;查看駕駛員界面; 派出任務(wù)的車輛;車庫滿界面;車庫情況界面;退出系統(tǒng)界面;四總 結(jié)通過這兩周的課程設(shè)計,加深了我對C+面向?qū)ο筮@門課程所學(xué)內(nèi)容的進一步的理解與掌握;同時,通過對車輛管理系統(tǒng)的開發(fā),使得我將計算機課程所學(xué)知識與實際問題很好地相聯(lián)接在了一起。在這次課程設(shè)計中,培
6、養(yǎng)了我開發(fā)一個中小型程序的能力。在這次對停車場管理系統(tǒng)的開發(fā)過程中,有過程序功能成功實現(xiàn)時的欣喜,也有遇到問題、解決問題時的執(zhí)著以及迷茫。在這次課程設(shè)計中,使得我很好地了解了在開發(fā)程序過程中合作的重要性。從課題的布置到完成課程設(shè)計,按時完成了相關(guān)任務(wù)。通過這次課程設(shè)計,我學(xué)習(xí)到了很多算法與數(shù)據(jù)結(jié)構(gòu)的知識,同時對本學(xué)期的課本所學(xué)知識有了進一步鞏固,特別是對棧和隊列等的熟練運用。這次課程設(shè)計之后,我發(fā)現(xiàn),動手比看書更能獲取實際有用的知識。很多知識,在書本上看似很有道理,可是這些知識在與實際情況結(jié)合起來往往就會出現(xiàn)書本上沒有見過的情況,或者說之前的理解與實際的使用是截然不同的。所以,真理是從實踐中得
7、知的,而且也只有實踐才能檢驗真理。而這次課設(shè)也加強了我們這些方面的理解能力,對書面上的東西實際操作在具體項目上有了一個更加清晰的認(rèn)識。我們還意識到一個大的程序,在寫代碼前,一定要有良好的需求分析和結(jié)構(gòu)設(shè)計,應(yīng)該占整個程序設(shè)計的大部分時間,一個好的程序,分析設(shè)計應(yīng)該要非常充分,這樣才不至于代碼寫了一半才發(fā)現(xiàn)很多錯誤。在具體代碼操作之前的設(shè)計規(guī)劃與構(gòu)建才是一個優(yōu)秀的程序設(shè)計的靈魂。設(shè)計過程中,我另一個大的體會就是要及時參考圖書館借來的書,通過教程,大大的提高了工作的效率。同時我也發(fā)現(xiàn)自己的不足之處。對于很多自己以為很熟悉的東西,在細(xì)節(jié)上的把握有許多不足:有些想當(dāng)然,認(rèn)為它應(yīng)該是這樣,而忽略的事實。
8、這也讓我明白,做事細(xì)心是必須的,所謂細(xì)節(jié)決定成敗!程序還有好多不足,在今后的日子里,我會虛心向老師同學(xué)請教,盡自己最大的努力做到最好。五主要參考文獻1C+面向?qū)ο?程序設(shè)計教程陳維興、林小茶編著,清華大學(xué)出本社。2Jeraod V.Post.數(shù)據(jù)庫管理系統(tǒng)(英文版.第三版)美清華大學(xué)出版社,2006.13張海藩,李勁,謝兆陽.SQL Server2000數(shù)據(jù)庫設(shè)計與系統(tǒng)管理M.北京:清華大學(xué)出版社,2000.9六致謝首先感謝我的指導(dǎo)老師張其文老師在我的課程設(shè)計過程中提出了指導(dǎo)性的方案和架構(gòu),并指引我閱讀相關(guān)的資料和書籍,使我在面對從書本到實際應(yīng)用的鴻溝之時有了一座堅固的橋。感謝我的數(shù)據(jù)結(jié)構(gòu)老師
9、張永老師和C+語言老師劉嘉老師在以往的基礎(chǔ)課學(xué)習(xí)中為我打下良好的基礎(chǔ),這是我這次課程設(shè)計能夠順利完成的前提。我的同學(xué)在設(shè)計過程及完成后的測試中起到了相當(dāng)重要的作用,沒有他們,我就不能發(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ù)結(jié)構(gòu)定義,定義存儲汽車信息的結(jié)構(gòu)體 char license_plateMAX_PLATE; /汽車牌照號碼,定義為一個字符指針類型 char state; /汽車當(dāng)前狀態(tài),字符p表示停放在停車位上,字符s表示停放在便道上 int time; /汽車停入停車場時的時間,用來計時收費CAR;typedef st
11、ruct /定義模擬停車場的棧結(jié)構(gòu) CAR STOPMAX_STOP; /汽車信息的存儲空間 int top; /用來指示棧頂位置的靜態(tài)指針SeqStack;typedef struct node /定義模擬便道的隊列結(jié)構(gòu) 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); /顯示停車場內(nèi)的所有信息 調(diào)試時用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<<"當(dāng)前停車場中沒有車n" return; /退出子函數(shù) cout<<"請輸入要離開的車牌照:"
21、 Input_Check(leave_license_plate); cout<<"當(dāng)前停車場中有"<<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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅省白銀市2025年中考道德與法治真題及答案
- 2025年中國駕駛服裝行業(yè)市場全景分析及前景機遇研判報告
- 2025年中國家用洗衣機和烘干機行業(yè)市場全景分析及前景機遇研判報告
- 內(nèi)外螺紋外接頭項目投資可行性研究分析報告(2024-2030版)
- 2025年中國針狀硅灰石粉行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025年中國玻璃清洗機市場發(fā)展前景預(yù)測及投資戰(zhàn)略咨詢報告
- 2025年中國大型投影機行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025年塑料型材制造市場分析報告
- 2025年 宜賓市興文縣考調(diào)縣城區(qū)學(xué)校教師筆試試題附答案
- 2025年 企業(yè)人力資源管理師三級考試練習(xí)試題附答案
- 人教小學(xué)數(shù)學(xué)五年級下冊綜合與實踐《怎樣通知最快》示范公開課教學(xué)課件
- 脫不花三十天溝通訓(xùn)練營
- 2023年湖南常德中考語文真題及答案
- “滾球法”計算接閃器保護范圍
- 生產(chǎn)專案持續(xù)改善工作匯報
- 2022年南通如皋市醫(yī)療系統(tǒng)事業(yè)編制鄉(xiāng)村醫(yī)生招聘筆試試題及答案解析
- SB/T 10347-2017糖果壓片糖果
- GB/T 7689.2-2013增強材料機織物試驗方法第2部分:經(jīng)、緯密度的測定
- GB/T 35124-2017天文望遠鏡技術(shù)要求
- GB/T 1303.4-2009電氣用熱固性樹脂工業(yè)硬質(zhì)層壓板第4部分:環(huán)氧樹脂硬質(zhì)層壓板
- 探討pH值對污灌區(qū)粉砂質(zhì)壤土Cd2+吸附的影響,土壤污染論文
評論
0/150
提交評論