版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 計算機科學與工程學院</p><p><b> 綜合設計報告</b></p><p> 設計名稱: 程序設計綜合設計 </p><p> 設計題目: 汽車租賃管理系統(tǒng) </p><p><b> 說明:</b>
2、</p><p> 1、報告中的第一、二、三項由指導教師在綜合設計開始前填寫并發(fā)給每個學生;四、五兩項(中英文摘要)由學生在完成綜合設計后填寫。</p><p> 2、學生成績由指導教師根據(jù)學生的設計情況給出各項分值及總評成績。</p><p> 3、指導教師評語一欄由指導教師就學生在整個設計期間的平時表現(xiàn)、設計完成情況、報告的質量及答辯情況,給出客觀、全面的
3、評價。</p><p> 4、所有學生必須參加綜合設計的答辯環(huán)節(jié),凡不參加答辯者,其成績一律按不及格處理。答辯小組成員應由2人及以上教師組成。</p><p> 5、報告正文字數(shù)一般應不少于5000字,也可由指導教師根據(jù)本門綜合設計的情況另行規(guī)定。</p><p> 6、平時表現(xiàn)成績低于6分的學生,其綜合設計成績按不及格處理。</p><p
4、> 7、此表格式為武漢工程大學計算機科學與工程學院提供的基本格式(適用于學院各類綜合設計),各教研室可根據(jù)本門綜合設計的特點及內(nèi)容做適當?shù)恼{整,并上報學院批準。</p><p><b> 目 錄</b></p><p><b> 目 錄1</b></p><p><b> 摘 要2</b
5、></p><p> Abstract3</p><p><b> 第一章 緒論4</b></p><p><b> 1.1課題來源4</b></p><p><b> 1.2課題意義4</b></p><p><b>
6、 1.3課題目的4</b></p><p> 1.4應解決的主要問題及應達到的技術要求4</p><p> 1.5本設計的理論依據(jù)5</p><p> 第二章 設計簡介及設計方案論述6</p><p> 2.1設計內(nèi)容與目標6</p><p> 2.2設計的重點、難點和關鍵6<
7、;/p><p> 2.3整體設計方案6</p><p> 第三章 詳細設計9</p><p> 3.1重點,難點技術設計與相關解決9</p><p> 3.2整體、詳細的設計方案9</p><p> 第四章 設計結果及分析21</p><p> 4.1進入系統(tǒng)分析21<
8、;/p><p> 4.2系統(tǒng)操作管理分析23</p><p> 4.3系統(tǒng)工作流程分析25</p><p> 4.4系統(tǒng)整體性能分析31</p><p><b> 總 結32</b></p><p><b> 致 謝33</b></p>
9、<p><b> 參考文獻34</b></p><p> 附錄 主要程序代碼35</p><p><b> 摘 要</b></p><p> 在數(shù)據(jù)信息爆炸的時代,這個社會的人必然會因為要記憶各類繁多的信息多少有些煩惱。在這個問題的解決上,計算機上的管理系統(tǒng)占有很大的優(yōu)勢和可行性。每一個正規(guī)機構,
10、都有自己的信息管理系統(tǒng),它們分別承擔著不同的任務。</p><p> 車輛租憑管理系統(tǒng)是社會商用管理系統(tǒng)的一個典型,它主要管理汽車公司整個的租車業(yè)務。其完整的開發(fā)主要包括后臺數(shù)據(jù)庫的開發(fā)和維護,以及前端基本應用程序的開發(fā)和編寫。前者是這個系統(tǒng)的很重要的部分,完整的數(shù)據(jù)庫系統(tǒng)都不能缺少。但由于現(xiàn)在的學習水平和課程還沒有達到這個高度,所以這一部分在此車輛租憑管理系統(tǒng)中暫不作說明。在這重點完成前臺程序的開發(fā),使用c,
11、c++,c#,Java,VB等語言都可實現(xiàn),經(jīng)過基本思路的整合和UML的分析,鑒于C++的高效性,我選擇了C++作為編程語言,結合鏈表、文件流讀寫的知識和查閱相關文獻,在學校指導老師的幫助下,基本完成了設計任務的要求。</p><p> 基本功能:管理功能、服務功能、查詢功能。對于用戶來說,可以使用查詢功能查詢車輛的基本情況和租憑情況。管理員則可以對此系統(tǒng)進行管理,即對車輛進行添加、刪除、修改信息、租車、還車、
12、對所有車輛信息的查詢。</p><p> 關鍵詞:管理系統(tǒng);c++;鏈表;文件流</p><p><b> Abstract</b></p><p> Data in the era of information explosion, the society will due to the memory of various inform
13、ation is somewhat annoyed. To solve this problem, the computer management system has great advantages and feasibility. Every formal institutions, have their own information management system, which bears a different task
14、.</p><p> Vehicle lease management system is a social business management system is a typical management company, mainly the car rental business. Its development mainly includes the backstage database devel
15、opment and maintenance, and the front-end application program development and programming. The former is a very important part of the system, a complete database system it lacks. But now the learning level and course hav
16、e not reached this level, so this part of the vehicle lease management system not st</p><p> Basic functions: management function, service function, query function. For users, can use queries vehicle and th
17、e basic situation of lease conditions. The administrator can this management system, whereby the vehicle to add, delete, modify information, car rental, car, on all vehicle information query.</p><p> Key wo
18、rds: management system; c++; list; the file stream</p><p><b> 第一章 緒論</b></p><p><b> 1.1課題來源</b></p><p> 現(xiàn)代社會,人的大腦開始出現(xiàn)一定的記憶壓力,因為太多的事情需要然人來處理并且記住大量的數(shù)據(jù).計算機的
19、出現(xiàn),讓人們找到了減輕壓力的途徑,這也是社會發(fā)展的必然,人類科技的進步的一個重要標志就是生產(chǎn)力的高效性。計算機與人類相比的優(yōu)點就是有著極快的計算速度和準確性,性能穩(wěn)定,具有很高的可靠性,根據(jù)此特點,計算機管理系統(tǒng)和數(shù)據(jù)庫誕生了,隨著社會的發(fā)展,它們的地位更是顯得尤其重要,每一個正規(guī)的機構都有自己的管理系統(tǒng),數(shù)據(jù)庫管理系統(tǒng)也是計算機領域的一個重要研究方向,有著不可估量的發(fā)張前景。</p><p><b>
20、 1.2課題意義</b></p><p> 計算機管理系統(tǒng)在當今的商業(yè)社會有著很強大的功能,這也是這幾年來計算機飛速發(fā)展的一個重要原因,計算機沒有思考能力,不能像人一樣,它的一切活動都是建立在存儲大量數(shù)據(jù)以及對這些數(shù)據(jù)進行簡單的操作之上的,“人工智能”也不列外,其中計算機管理系統(tǒng)就是一個很好的運用。一個好的管理系統(tǒng),能承當一個很龐大的任務,在公司,在學校,在政府部門,它都有著自己的職能。汽車租憑管
21、理系統(tǒng),是汽車公司的重要系統(tǒng)之一,它能管理日常的租憑車輛任務,可靠性高,高效,便捷,節(jié)省勞動力,一次投入多次使用,高質量的租憑管理系統(tǒng)和這家汽車公司的業(yè)績是直接掛鉤的。</p><p><b> 1.3課題目的</b></p><p> 通過此課題的學習和設計,讓我們懂得如何開發(fā)一個管理系統(tǒng)、需要具備的知識、準備工作和需要考慮的各種問題。當然開發(fā)一個汽車租憑管理系
22、統(tǒng),最直接的目的就是完成汽車公司的租憑任務,主要負責租憑這一塊,其中主要的操作包括借車、登記、還車、計費、查詢和基本車庫的管理。</p><p> 1.4應解決的主要問題及應達到的技術要求</p><p> 1.4.1應解決的主要問題</p><p> 在此系統(tǒng)的開發(fā)計劃中(暫不考慮后臺數(shù)據(jù)庫的開發(fā)),我們應該解決的主要問題包括:</p><
23、;p> 在計算機中寫一個函數(shù),能完成無限添加車輛和存儲租車、還車相關信息的任務;</p><p> 怎樣將每次操作的記錄進行保存,做到每次輸入的信息永久有效;</p><p> 怎樣做一個人性化的操作界面,既具備視覺美感,操作起來又簡便。</p><p> 1.4.2應達到的技術要求</p><p> 1.能在車庫中無限添加車
24、輛,刪除車輛;</p><p> 2.能修改車輛信息;</p><p> 3.能輸出車庫中所有車的基本信息;</p><p><b> 4.租車;</b></p><p><b> 5.還車;</b></p><p> 6.按車號和年月查詢車輛出租信息;</p
25、><p> 7.按年月查詢車輛出租信息;</p><p> 8.按車號和年月查詢車輛出租費用情況;</p><p> 9.按年月查詢車輛的出租費用情況;</p><p> 10.保存操作信息;</p><p> 11.導入操作信息;</p><p> 12.操作簡單,界面具有美感;<
26、;/p><p> 13.整體性能完整;</p><p> 具體要達到的功能要求如下圖中所示:</p><p><b> 圖1—1</b></p><p> 1.5本設計的理論依據(jù)</p><p> 計算機有較強的運算能力和存儲數(shù)據(jù)的功能,具有較強的穩(wěn)定性和可靠性。鏈表可以實現(xiàn)無限條記錄的保存
27、和查找,可以解決無限添加車輛的問題,而文件的讀寫能將每次操作的有效數(shù)據(jù)在計算機內(nèi)存和磁盤上進行讀寫,使得每次進入系統(tǒng)從操作的數(shù)據(jù)我們都有記錄,并且在下次登入系統(tǒng)的時候讀入計算機內(nèi)存,在系統(tǒng)程序中繼續(xù)傳遞。</p><p> 第二章 設計簡介及設計方案論述</p><p> 2.1設計內(nèi)容與目標</p><p> 設計的內(nèi)容和主要目標是完成一個具有簡單基本功能
28、的汽車租憑管理系統(tǒng),承當某汽車公司的汽車租憑任務并對其進行有效的管理。管理系統(tǒng)的特點是:功能基本齊全,操作簡單易懂。最主要的是能完成基本的汽車租憑義務和管理,承擔工作人員的大量繁瑣記憶和腦力勞動。</p><p> 2.2設計的重點、難點和關鍵</p><p> 此設計的重點是各個功能函數(shù)的編碼,例如添加車輛、租車、還車、計算費用,各種方式的查詢等,其中這些操作都建立在對車輛記錄的保存
29、和查找上,因為進行這些操作都必先找到相應的記錄信息,進行修改,然后再存儲起來;設計的難點是無限次添加記錄和保存記錄,以及對每次記錄的保存入庫(在下次運用此程序時上次的操作信息還在),包括信息的存儲和讀取。說到無限次添加記錄,一般用數(shù)組是不能辦到的,我們都知道在用數(shù)組之前必須先定義大??;關鍵是把各個函數(shù)正確有效地連接起來,有正確的實參傳遞,能正確有效地輸出預期結果,達到系統(tǒng)管理的目的。這部分說起來簡單,但實際去做,那就是程序中最難的一塊,
30、這要考慮到各個函數(shù)的關聯(lián)以及每個函數(shù)完成的特殊功能和對整個信息記錄的影響,就如一個機器人,要讓他動起來,得花費大量的功夫來來你接他身體的機械硬件和軟件代碼</p><p><b> 2.3整體設計方案</b></p><p> a.讀懂系統(tǒng)設計要求,初步了解設計思路;</p><p> b.首先用UML圖分析,得出整體的設計方案;<
31、/p><p> c.依據(jù)UML圖,分個寫出每個函數(shù),并留好相應的接口,以便后面每個函數(shù)的相互連接;</p><p> d.寫一個整體的系統(tǒng)函數(shù),在其中將所有函數(shù)聚合在一起,方便調用,可以用一個類來完成此任務;</p><p> e.寫出界面函數(shù),做到美觀,操作簡單,人性化;</p><p> f.寫出main函數(shù),組織調用各個函數(shù)和各種類
32、,有效地完成整個函數(shù)的功能;</p><p> g.全面而又廣泛地測試,發(fā)現(xiàn)錯誤,改進錯誤,改進程序,提高程序的健壯性。</p><p> 整體設計方案:定義一個結構體,里面包括車輛的屬性和一些標志,如車號,車型,出租、歸還時間,費用,出租狀態(tài)等,還有一個本身類型的指針,為了構建鏈表的節(jié)點。然后定義兩個時間類Date和Time,分別用來計算租車、還車的日期差并計算相應的費用和存儲租,歸
33、還日期。接下來定義一個類,作為整體調用函數(shù)用。完成以后就開始編寫各個功能的函數(shù),添加、刪除、查詢、保存、導入信息等。最后完成界面輸出函數(shù)和main()函數(shù)的定義,界面函數(shù)只要做到美觀、操作簡單就可,主要是main()函數(shù),它起到整體運行程序的作用,系統(tǒng)能不能成功運轉,就看它的正確性和高效性。</p><p> 下面分別是節(jié)點結構體類的定義:</p><p> struct Vehicl
34、e</p><p><b> {</b></p><p> char VID[10];</p><p> char VType[5];</p><p> double fee[1000];</p><p> int vsign[1000];</p><p> i
35、nt Typesign;//作為出租方式的標志,按小時租用1表示,按天租用2表示</p><p> int sign;//作為是否出租過,租了沒還,租了已還的標記,分別用0,1,2標志</p><p><b> int k1;</b></p><p> int k2; //作為Ldate和Bdate對想數(shù)組的下標&
36、lt;/p><p> Time Ldate[1000];</p><p> Time Bdate[1000];</p><p> Vehicle *next;</p><p><b> };</b></p><p> 下面分別是Data類的定義:</p><p>
37、class Date</p><p><b> {</b></p><p><b> private:</b></p><p> int year,month,day;</p><p><b> public:</b></p><p> Dat
38、e(int y,int m,int d):year(y),month(m),day(d){}</p><p> int count()</p><p><b> {</b></p><p> int counter1=0,m(month-1),d(day);</p><p> for(;m>0;m--)&l
39、t;/p><p> if(m==4||m==6||m==9||m==11)</p><p> counter1+=30;</p><p> else if(m==1||m==3||m==5||m==7||m==8||m==10)</p><p> counter1+=31;</p><p> else if(m=
40、=2)</p><p> if(year%4==0)</p><p> counter1+=29;</p><p><b> else</b></p><p> counter1+=28;</p><p><b> else </b></p><
41、p> std::cout<<"input error"<<std::endl;</p><p> counter1+=day;</p><p> return counter1;</p><p><b> }</b></p><p> friend int di
42、stances(Date a,Date b);</p><p><b> };</b></p><p> int distances(Date a,Date b)</p><p><b> {</b></p><p> int counter=0;</p><p>
43、 int y(b.year);</p><p> if (a.year%4==0)</p><p> counter+=366-a.count();</p><p><b> else</b></p><p> counter+=365-a.count();</p><p> if(a.
44、year%4==0)</p><p> counter-=366-b.count();</p><p><b> else</b></p><p> counter-=365-b.count();</p><p> for(;y>a.year;y--)</p><p> if(y%
45、4==0)</p><p> counter+=366;</p><p><b> else </b></p><p> counter+=365;</p><p> return counter;</p><p><b> }</b></p><
46、;p> 其中count()函數(shù)用來計算某個日期是該年的第幾天,distances()用來計算兩個日期的相差天數(shù),從而計算出費用。</p><p> 下面分別是Data類的定義:</p><p> class Time</p><p><b> {</b></p><p><b> private
47、:</b></p><p> int year,month,day,hour;</p><p><b> public:</b></p><p> Time(int i=0,int j=0,int k=0,int m=0):year(i),month(j),day(k),hour(m){}</p><p&g
48、t; void time(int yy=0,int mm=0,int dd=0,int hh=0)</p><p><b> {</b></p><p><b> year=yy;</b></p><p><b> month=mm;</b></p><p><b
49、> day=dd;</b></p><p><b> hour=hh;</b></p><p><b> }</b></p><p> int Ryear(){return year;}</p><p> int Rmonth(){return month;}</p
50、><p> int Rday(){return day;}</p><p> int Rhour(){return hour;}</p><p> friend void lead();</p><p><b> };</b></p><p><b> 詳細設計</b>
51、</p><p> 3.1重點,難點技術設計與相關解決</p><p> 3.1.1設計重點與解決方案</p><p> 設計重點:各個功能函數(shù)的編碼,例如添加車輛、租車、還車、計算費用,各種方式的查詢等。</p><p> 解決方案:使用數(shù)據(jù)結構的相關知識,對整體的系統(tǒng)構建一個鏈表,用來存儲每次向車庫里添加的車輛,可以無限添加,這是
52、鏈表和數(shù)組的區(qū)別,并在此基礎上創(chuàng)建add(),del(),print(),lend(),back(),v_find(),v_find_all(),v_findfee(),v_find_allfee(),sav(),lead()等函數(shù)。</p><p> 3.1.2設計難點與解決方案</p><p> 設計難點:無限次添加車輛和刪除車輛,以及對每次記錄的保存和讀取。</p>
53、<p> 解決方案:前者使用鏈表可以解決,但一輛車到底要租到少次,我們不知道,所以存儲每輛車的出租記錄也需要創(chuàng)建一個鏈表,至于信息的存儲和導入,我們就用文件的讀寫操作來完成,每次操作完成后對數(shù)據(jù)進行保存,用文件寫入磁盤,然后每次打開系統(tǒng)的時候再將上次的記錄導入程序中(計算機內(nèi)存中),進行新的操作,這是文件的重要操作。</p><p> 3.2整體、詳細的設計方案</p><
54、p> 3.2.1整體的設計思路</p><p> 運用鏈表知識和文件的讀寫操作寫一個基于命令提示符窗口的汽車租憑管理系統(tǒng),先寫一個存儲車輛所有信息的鏈表,以便于添加車輛,和進行后續(xù)的相關工作,然后就是將計算機內(nèi)存中的車輛信息寫到硬盤上,再寫一個讀入函數(shù),再每次登入系統(tǒng)后將硬盤上的信息讀到內(nèi)存,達到保存操作記錄的作用。</p><p><b> 3.2.2具體步驟<
55、;/b></p><p> 1.寫一個名為Data的類,數(shù)據(jù)成員包括year,month,day,成員函數(shù)有count,其作用是計算一個日期是該年的第幾天,還有一個友元函數(shù)distances,在count的配合下計算兩個日期的相差天數(shù),從而計算出租車的費用,完成計費任務;</p><p> 2.寫一個名為Time的類,數(shù)據(jù)成員有year,month,day,hour。成員函數(shù)有R
56、year(),Rmonth(),Rday(),Rhour()和lead(),前四個是此類對外的接口,便于其他函數(shù)對私有數(shù)據(jù)成員的訪問,而友元函數(shù)lead()是用來完成對操作信息導入的任務的。</p><p> 3.寫一個名為Vehicle的結構體,定義車輛鏈表的一個節(jié)點,其中包括數(shù)據(jù)域和指針域next,數(shù)據(jù)域包括變量VID,VType,fee,vsign,Typesign,sign,k1,k2,Ldate,Bd
57、ate,其中VID,VType是兩個字符型數(shù)組,用來存放車輛的車號和類型,fee和visgn分別是double型和int型的數(shù)組,用來存放每次租車的費用和租還的標志(出租標為1,已歸還標為2),sign是有沒出租記錄的標志(沒有出租記錄的sign為0,出租了的標志為1,還了的標志為2),Typesign是租車按月或按小時的標志(按小時租為1,按天租為2),Ldate和Bdate是兩個class Time型的對象數(shù)組,用來存放車輛每次出租
58、的租還日期,k1和k2是兩個int型的變量,作為Ldate,Bdate的下標。</p><p> 4.定義一個名為sys的類,包括一個數(shù)據(jù)成員,即Vehicle類型的變量b,有V_find(),V_delete(),print()三個成員函數(shù),分別完成鏈表中信息的查找、刪除和打印輸出工作,輸出的信息主要是車輛的車號、車型和出租狀態(tài)。本來還有V_add()函數(shù)(在鏈表中添加信息)也要寫在這里,但考慮到方便調用的問
59、題,將其寫在了類的外面。Sys這個類的作用就是對針對鏈表的一些基本操作進行封裝,方便調用。它們的關鍵代碼如下:</p><p> 鏈表中查找操作的代碼:</p><p> Vehicle *sys::find(Vehicle *head,char *s)</p><p><b> {</b></p><p> V
60、ehicle *p;</p><p><b> p=head;</b></p><p> while(p!=NULL)</p><p> if(strcmp(p->VID,s)==0)</p><p><b> return p;</b></p><p><
61、;b> else</b></p><p> p=p->next;</p><p> return NULL;</p><p><b> }</b></p><p> 鏈表中刪除操作的代碼,用來刪除車輛信息:</p><p> Vehicle *sys::V_de
62、lete(Vehicle *head,char *VID)</p><p><b> {</b></p><p> Vehicle *p,*q;</p><p> if(head==NULL)</p><p><b> {</b></p><p> std::cou
63、t<<"List is NULL!"<<std::endl;</p><p> return head;</p><p><b> }</b></p><p> if(strcmp(head->VID,VID)==0)</p><p><b> {<
64、;/b></p><p><b> p=head;</b></p><p> head=head->next;</p><p><b> delete p;</b></p><p> std::cout<<"完成刪除操作!"<<std:
65、:endl;</p><p> return head;</p><p><b> }</b></p><p> for(q=head;q->next;q=q->next)</p><p> if(strcmp(q->next->VID,VID)==0)</p><p&
66、gt;<b> {</b></p><p> p=q->next;</p><p> q->next=p->next;</p><p><b> delete p;</b></p><p> return head;</p><p><b&g
67、t; }</b></p><p> std::cout<<VID<<"不在車庫中!"<<std::endl;</p><p> return (head);</p><p><b> }</b></p><p> 打印輸出車庫中的車:</
68、p><p> void sys::print(Vehicle *head)</p><p><b> {</b></p><p> Vehicle *p;</p><p><b> p=head;</b></p><p> if(p==NULL)</p>
69、<p> std::cout<<"車庫為空!"<<std::endl;</p><p> while(p!=NULL)</p><p><b> {</b></p><p> std::cout<<p->VID<<"\t";</
70、p><p> std::cout<<p->VType<<std::endl;</p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><p> 向鏈表中添加節(jié)點的代碼
71、,是增加車輛操作的重要核心程序:</p><p> Vehicle *V_add(Vehicle *head,Vehicle *v)</p><p><b> {</b></p><p> Vehicle *p;</p><p><b> p=head;</b></p><
72、;p> if(p==NULL)</p><p><b> {</b></p><p><b> head=v;</b></p><p> v->next=NULL;</p><p> return head;</p><p><b> }&l
73、t;/b></p><p> if(strcmp(p->VID,v->VID)>0)</p><p><b> {</b></p><p> v->next=head;</p><p><b> head=v;</b></p><p>
74、 return head;</p><p><b> }</b></p><p> 5.對sys類里的幾個成員函數(shù)進行類外定義,都是基于簡單鏈表操作的,就是上面提到的在鏈表中添加節(jié)點,刪除節(jié)點,打印輸出節(jié)點信息的函數(shù)。</p><p> 6.開始定義系統(tǒng)界面函數(shù)list()和listview(),前者是用來接受用戶對各種操作功能的選擇,然
75、后傳遞給main函數(shù);listview()呢完成操作界面的輸出(就是列出各個功能的操作選項),這都是很簡單的問題,它們的代碼如下:</p><p> void listview()</p><p><b> {</b></p><p> std::cout<<"\t\t\t歡迎使用天行汽車租憑管理系統(tǒng)\t\t&quo
76、t;<<std::endl;</p><p> std::cout<<"************************************************"<<std::endl;</p><p> std::cout<<"1.添加新車"<<std::endl;</p
77、><p> std::cout<<"2.刪除一輛已經(jīng)存在的車"<<std::endl;</p><p> std::cout<<"3.查詢車庫中現(xiàn)有車輛"<<std::endl;</p><p> std::cout<<"4.租車"<<
78、;std::endl;</p><p> std::cout<<"5.還車"<<std::endl;</p><p> std::cout<<"6.按年月及車輛ID查詢出租情況"<<std::endl;</p><p> std::cout<<"7.按
79、年月查詢所有車輛的出租情況"<<std::endl;</p><p> std::cout<<"8.按年月及車輛ID查詢租車費用"<<std::endl;</p><p> std::cout<<"9.按年月查詢所有車輛的租車費用"<<std::endl;</p>
80、<p> std::cout<<"10.保存操作記錄"<<std::endl;</p><p> std::cout<<"11.導入信息"<<std::endl;</p><p> std::cout<<"12.退出租車系統(tǒng)!"<<std::
81、endl;</p><p> std::cout<<"************************************************"<<std::endl;</p><p> std::cout<<"\n\n"<<std::endl;</p><p>&l
82、t;b> }</b></p><p> int list()</p><p><b> {</b></p><p><b> int i;</b></p><p> for(int j=0;;j++)</p><p><b> {<
83、;/b></p><p> std::cout<<"\n\t\t請選擇功能鍵1-11"<<std::endl;</p><p> std::cin>>i;</p><p> if(i<=1&&i>=12)</p><p><b> co
84、ntinue;</b></p><p><b> else</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> return i;</b></p><
85、;p><b> }</b></p><p> 這兩個函數(shù)聯(lián)合起來達到的效果如下圖所示:</p><p><b> 圖3-1</b></p><p> 7.完成各個listview()中各個功能函數(shù)的全面編碼,前面的sys里面的那幾個函數(shù)只是簡單的基于鏈表的操作,而這里寫的函數(shù)都是能獨立完成菜單里面單個功能的,
86、包括add(),del(),print(),lend(),back(),V_find(),V_find_all(),find_fee(),find_allfee(),save(),lead(),它們的功能分別是: 完成向車庫中加車;刪除車輛;打印輸出車庫中所有車輛;租車;還車;按車號和按年月查詢單輛車的出租信息;按年月查詢本月的出租信息;按車號和按年月查詢單輛車的出租費用;按月查詢本月出租費用;保存操作信息;導入上次操作信息。下面是其中
87、幾個函數(shù)的關鍵核心代碼:</p><p> void add(sys a)</p><p><b> {</b></p><p><b> char c;</b></p><p> for(int j=0;;j++)</p><p><b> {</
88、b></p><p> Vehicle *p;</p><p> p=new Vehicle;</p><p> std::cout<<"車號"<<"\t"<<"車型"<<std::endl;</p><p> std::
89、cin>>p->VID;</p><p> std::cin>>p->VType;</p><p> p->sign=0;</p><p> p->Typesign=0;</p><p><b> p->k1=0;</b></p><p&g
90、t;<b> p->k2=0;</b></p><p> p->Ldate[p->k1].time(0,0,0,0);</p><p> p->Bdate[p->k1].time(0,0,0,0);</p><p> p->fee[p->k2]=0;</p><p>
91、if(p->VID!=""||p->VType!="")</p><p> head=V_add(head,p);</p><p> std::cout<<"是否繼續(xù)添加(y/n)"<<std::endl;</p><p> std::cin>>c;&l
92、t;/p><p> if(c!='Y'&&c!='y'&&c!='N'&&c!='n')</p><p><b> {</b></p><p> std::cout<<"是否繼續(xù)添加(y/n)"<
93、;<std::endl;</p><p> std::cin>>c;</p><p><b> }</b></p><p> if(c=='n'||c=='N')</p><p><b> break;</b></p><
94、p><b> else</b></p><p><b> continue;</b></p><p><b> }</b></p><p><b> }</b></p><p> 這是一個完整的添加車輛的函數(shù),是基于鏈表的V_add()函數(shù)
95、來實現(xiàn)的,后者只是負責向鏈表中添加新節(jié)點,而此函數(shù),是向車庫添加新車,包括車牌號和車的類型。代碼的11到17行都是進行數(shù)據(jù)成員的初始化。</p><p> void lend(sys a)</p><p><b> {</b></p><p> Vehicle *p;</p><p> p=new Vehicle
96、;</p><p> char s[10],c;</p><p> int y,m,d,h;</p><p> std::cout<<"請輸入想要租的車的車號:"<<std::endl;</p><p> std::cin>>s;</p><p> p=
97、a.find(head,s);</p><p> if(p!=NULL)</p><p><b> {</b></p><p> if(p->k1!=p->k2)</p><p> std::cout<<"此車已出租,還未還!"<<std::endl;<
98、;/p><p> if(p->sign!=1)</p><p><b> {</b></p><p> std::cout<<"車輛信息:"<<std::endl;</p><p> std::cout<<p->VID<<"
99、 "<<p->VType<<std::endl;</p><p> if(strcmp(p->VType,"car")==0)</p><p><b> {</b></p><p> std::cout<<"car只能按天租!"<<
100、;std::endl;</p><p> p->Typesign=2;</p><p> std::cout<<"請輸入租車日期(年,月,日):"<<std::endl;</p><p> std::cin>>y>>m>>d;</p><p> p-
101、>Ldate[p->k1].time(y,m,d);</p><p><b> }</b></p><p> if(strcmp(p->VType,"truck")==0)</p><p><b> {</b></p><p> std::cout<
102、;<"按天還是按小時租(D/H)"<<std::endl;</p><p> std::cin>>c;</p><p> if(c=='D')</p><p><b> {</b></p><p> p->Typesign=2;</p&
103、gt;<p> std::cout<<"請輸入租車日期(年,月,日):"<<std::endl;</p><p> std::cin>>y>>m>>d;</p><p> p->Ldate[p->k1].time(y,m,d);</p><p><b
104、> }</b></p><p><b> else</b></p><p><b> {</b></p><p> p->Typesign=1;</p><p> std::cout<<"請輸入租車日期(年,月,日,小時):"<
105、<std::endl;</p><p> std::cin>>y>>m>>d>>h;</p><p> p->Ldate[p->k1].time(y,m,d,h);</p><p><b> }</b></p><p><b> }<
106、;/b></p><p> p->sign=1;</p><p><b> p->k1++;</b></p><p> p->fee[p->k1]=0;</p><p> std::cout<<"租車成功!"<<std::endl;<
107、/p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> std::cout<<"車庫中沒有此車!"<<std::endl;</p>&l
108、t;p><b> }</b></p><p> 這是租車操作的代碼,其核心關鍵在于第9行p=a.find(head,s),這是鏈表節(jié)點查找函數(shù),只有找到相應節(jié)點,才能找到特定的車輛信息,然后添加租車的記錄,保存在此節(jié)點內(nèi),這樣,就完成了租車的任務。后面的車輛信息查詢也是如此的道理,查找到相應節(jié)點,輸出節(jié)點信息即可。p->sign=1的作用為標志車輛已出租,p->k1++
109、是對象數(shù)組的下標推進,以便保存同一輛車的下一條租車記錄,p->fee[p->k1]=0是將費用初始化為零。</p><p> void save()</p><p><b> {</b></p><p> char *name="C:\\Vehicle.txt";</p><p>
110、 char *na="C:\\number.txt";</p><p><b> int m=0;</b></p><p> std::ofstream ofs(name);</p><p> Vehicle *p;</p><p><b> p=head;</b><
111、;/p><p> while(p!=NULL)</p><p><b> {</b></p><p> ofs<<p->VID<<'\t'</p><p> <<p->VType<<'\t'</p><p&
112、gt; <<p->sign<<'\t'</p><p> <<p->Typesign<<'\t'</p><p> <<p->k1<<'\t'</p><p> <<p->k2<<'\
113、t';</p><p> if(p->k1==0)</p><p><b> {</b></p><p> ofs<<0<<"-"</p><p><b> <<0<<"-"</b><
114、/p><p><b> <<0<<"-"</b></p><p><b> <<0<<'\t'</b></p><p><b> <<0<<"-"</b></p>
115、;<p><b> <<0<<"-"</b></p><p><b> <<0<<"-"</b></p><p><b> <<0<<'\t'</b></p>&l
116、t;p> <<0<<std::endl;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> for(int i=0;i<p->k1;i++
117、)</p><p><b> {</b></p><p> ofs<<p->Ldate[i].Ryear()<<"-"</p><p> <<p->Ldate[i].Rmonth()<<"-"</p><p> &
118、lt;<p->Ldate[i].Rday()<<"-"</p><p> <<p->Ldate[i].Rhour()<<'\t'</p><p> <<p->Bdate[i].Ryear()<<"-"</p><p> &
119、lt;<p->Bdate[i].Rmonth()<<"-"</p><p> <<p->Bdate[i].Rday()<<"-"</p><p> <<p->Bdate[i].Rhour()<<'\t'</p><p>
120、<<p->fee[i]<<std::endl;</p><p><b> }</b></p><p><b> }</b></p><p> p=p->next;</p><p><b> m++;</b></p>&l
121、t;p><b> }</b></p><p> std::cout<<"記錄保存成功!"<<std::endl;</p><p> ofs.close();</p><p> std::ofstream ofs1(na);</p><p> ofs1<&l
122、t;m<<std::endl;</p><p><b> }</b></p><p> 明顯,這是保存數(shù)據(jù)記錄的函數(shù),用的是文件流的寫操作,先建立兩個文件:"C:\\Vehicle.txt"和C:\\number.txt",然后讓它們與文件流操作相關聯(lián),向其中寫入運行程序中的信息,前者寫入的是車輛鏈表所有節(jié)點的信息,而后者
123、只是保存一個數(shù)據(jù)m,就是前者信息記錄的條數(shù),為后面再用文件讀入數(shù)據(jù)提供方便。</p><p> 第四章 設計結果及分析</p><p><b> 4.1進入系統(tǒng)分析</b></p><p> 1.進入系統(tǒng),首先要輸入登錄密碼,密碼正確后才能進入系統(tǒng)界面。如下圖所示</p><p><b> 圖4-1&
124、lt;/b></p><p><b> 圖4-2</b></p><p> 2.密碼正確,進入系統(tǒng),看到操作界面和功能選項。如下圖所示</p><p><b> 圖4-3</b></p><p> 4.2系統(tǒng)操作管理分析</p><p> 1.進入操作界面,會
125、首先提醒你創(chuàng)建車庫,就是向車庫中添加新車,只有有了添加的車輛,后面的操作才有意義。接著就提醒你導入上次操作的記錄,這很重要,在每次進入系統(tǒng)都要做,也可以設為默認地做,系統(tǒng)自動完成,不需管理員動手,但這里為了顯示功能,將其設為手動導入。相關操作如下圖所示</p><p><b> 圖4-4</b></p><p><b> 圖4-5</b>&l
126、t;/p><p> 2.在退出系統(tǒng)之前,應先保存操作記錄,否則將會丟失信息,和導入信息一樣,本可以設為退出系統(tǒng)時自動保存,但也是為了演示保存功能,特將其設為手動操作。操作如下</p><p><b> 圖4-6</b></p><p> 4.3系統(tǒng)工作流程分析</p><p> 1.添加車輛,如下圖</p>
127、;<p><b> 圖4-7</b></p><p> 2.刪除車輛,如下圖</p><p><b> 圖4-8</b></p><p> 3.查詢車庫中車的信息,如下圖</p><p><b> 圖4-9</b></p><p>
128、;<b> 4.租車,如下圖</b></p><p><b> 圖4-10</b></p><p><b> 5.還車,如下圖</b></p><p><b> 圖4-11</b></p><p> 6.按年月及車輛ID查詢出租情況,如下圖<
129、;/p><p><b> 圖4-12</b></p><p> 7.按年月查詢所有車輛的出租情況,如下圖</p><p><b> 圖4-13</b></p><p> 8.按年月及車輛ID查詢出租費用,如下圖</p><p><b> 圖4-14</b
130、></p><p> 9.按年月查詢所有車輛的租車費用,如下圖</p><p><b> 圖4-15</b></p><p> 10.保存操作記錄,如下圖</p><p><b> 圖4-16</b></p><p> 11.退出租車系統(tǒng),如下圖</p&
131、gt;<p><b> 圖4-17</b></p><p> 4.4系統(tǒng)整體性能分析</p><p> 此系統(tǒng)功能基本完成,操作簡便,可以簡單地進行租車、還車義務并進行簡單地管理,但是由于能力和時間有限,出錯維護做的很差,就是人性化方面做的不夠,有待于以后進行全方面的改進,此系統(tǒng)只適合于學習交流用,不適用于商用,主要是功能不齊全和出差維護差。<
132、;/p><p><b> 總 結</b></p><p> 經(jīng)過兩個星期的學習和實踐操作,汽車租憑管理系統(tǒng)基本完成,其功能基本符合一個汽車公司對租憑車輛義務的操作。系統(tǒng)的功能有:無限添加車輛,刪除車輛信息,輸出車庫信息,租車,還車,按年月和車號查詢某輛車的出租情況,按年月查詢本月車輛的出租情況,按年月和車號查詢某輛車的出租費用,按年月查詢本月所有車輛的出租費用,保
133、存操作信息,導入上次操作信息。在登陸系統(tǒng)時,會提示輸入密碼,進入系統(tǒng)后,會提示創(chuàng)建車庫和導入上次操作信息,在這些完成以后,才正式進入具體操作。本來這些都可以設為默認操作,就是系統(tǒng)自己完成,如保存信息和導入信息,但是為了將其過程直觀化,只得顯示操作。</p><p> 通過這次實踐學習,我對鏈表和文件的操作更加熟練,也有了一個新的理解。對計算機的強大功能(編程)有了一些進步的認識,特別是文件,以前學得不是很深,概
134、念也相當?shù)哪:?,有了這次實踐,多少也明白了文件的功能,特點,簡單用法,我覺得這一進步會在我以后的工作學習過程中增加自信和實力。除了在編寫代碼方面的提高,在其他方面也受益匪淺。比如在做一個大的項目時,一開始不急于動手直接寫代碼,應先對此項目的結構和要實現(xiàn)的功能進行分析,并收集資料,設計算法等,在這些完成以后,才開始著手代碼編程,這樣才會有高效率。</p><p> 當然,在這過程中,也認識到了好多自己的不足和不好
135、的習慣,尤其是在學習方面的紕漏,例如,在此次系統(tǒng)設計中,只考慮到了一般的情況,而忘了特殊的;只考慮到直接結果,而忽慮了其中各部分會遇到的小錯誤,直接地說就是考慮問題不全面,就算考慮到了,也沒有在設計過程中真正做到;另外,最明顯的特點就是出錯維護做的差,這才是一個系統(tǒng)致命的弱點,這會使得系統(tǒng)發(fā)生我們意料之外的情況,造成失控。對于這些不足,我會在以后學習過程中逐漸彌補和提高,使得自己的設計能在以后更完美。</p><p&
136、gt;<b> 致 謝</b></p><p> 設計已經(jīng)完成,看著著10多天以來自己通過不斷實踐和突破得到的成果,在此向所有在設計過程中幫助我的同學和導師致于真誠的感謝。</p><p> 本次畢業(yè)設計中,我最要感謝的人是我的指導老師--劉老師和我的班導—鄒老師,我在他們身上學到了很多東西。他們認真負責的工作態(tài)度,嚴謹?shù)闹螌W精神和深厚的理論水平都使我受益匪
137、淺。他們無論在理論上還是在實踐中,都給與我很大的幫助,使我得到很大的提高,這對于我以后的工作和學習都有一種巨大的幫助,在此感謝他耐心的輔導。同時也感謝那些我們在一起探討學習、尋找最佳設計算法的同學和室友,讓我感受到了集體的力量和優(yōu)勢,他們在這次設計當中,對我有相當大的幫助,不僅是技術上的指導,也有工作精神的熏陶和心靈思緒的疏導,每一次失敗,每一次突破,我所經(jīng)歷的,他們也在經(jīng)歷,我沒做到的,他們做到了。</p><p&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設計---汽車汽修管理系統(tǒng)
- c++酒店管理系統(tǒng)課程設計
- c++酒店管理系統(tǒng)課程設計
- 銷售管理系統(tǒng)c++課程設計
- 《c++》課程設計倉庫管理系統(tǒng)
- c++課程設計-學生管理系統(tǒng)
- c++學生管理系統(tǒng)課程設計
- c++課程設計--酒店管理系統(tǒng)
- 汽車租賃管理系統(tǒng)課程設計
- c++課程設計--圖書管理系統(tǒng)
- 人事考勤管理系統(tǒng)c++課程設計
- c++課程設計-學生考勤管理系統(tǒng)
- 圖書管理系統(tǒng)c++課程設計
- c++課程設計學生通訊管理系統(tǒng)
- c++圖書管理系統(tǒng)課程設計
- c++課程設計報告-- 學籍管理系統(tǒng)
- c++課程設計---學生學籍管理系統(tǒng)
- c++課程設計---公司人員管理系統(tǒng)
- c++課程設計--人員管理系統(tǒng)公司
- c++課程設計--簡單成績管理系統(tǒng)
評論
0/150
提交評論