版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C+面向?qū)ο蟪绦蛟O計課程設計報告課程名稱C+面向?qū)ο蟪绦蛟O計課題名稱車輛管理系統(tǒng)專業(yè)班級學號姓名指導教師年月日(一)、課程設計題目:題目 4 車輛管理系統(tǒng)(二)、目的與要求:1、目的:(1)要求學生達到熟練掌握C+語言的基本知識和技能;(2)基本掌握面向?qū)ο蟪绦蛟O計的基本思路和方法;(3)能夠利用所學的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O計問題。2、基本要求:(1)要求利用面向?qū)ο蟮姆椒ㄒ约癈+的編程思想來完成系統(tǒng)的設計;(2)要求在設計的過程中,建立清晰的類層次;(3)在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法;(4)在系統(tǒng)的設計中,至少要用到面向?qū)ο蟮囊环N機制。3、創(chuàng)新要求
2、:在基本要求達到后,可進行創(chuàng)新設計,如根據(jù)查找結果進行修改的功能。(三)、設計方法和基本原理:功能要求:1)添加車輛程序主要完成車輛信息的添加,要求編號唯一。 如果添加了重復編號的物品時,則提示用戶數(shù)據(jù)添加重復并取消添加;如果車輛信息庫已滿, 則提示不能再添加新的車輛信息。2)查詢車輛可按照三種方式進行物品的查詢。按車輛制造公司查詢:按編號查詢:按類別查詢:如果未找到,給出相應的提示信息,如果找到,則顯示相應的記錄信息。3)顯示車輛信息庫可顯示當前車輛信息庫中所有的車輛信息。4)修改車輛可根據(jù)查詢結果對相應的記錄進行修改,修改時注意編號的唯一性。5)刪除車輛對已添加的車輛信息進行刪除。如果當前
3、車輛信息庫為空,則提示“車輛信息庫為空!”并返回操作;否則輸入要刪除的編號,根據(jù)編號刪除該車輛信息,如果沒有找到該車輛信息,則提示“該編號不存在”。6)統(tǒng)計功能輸出當前車輛信息庫中總車輛數(shù), 以及按車輛類別, 統(tǒng)計出當前車輛信息庫中各類別的車輛數(shù)并顯示。7)保存車輛將當前系統(tǒng)中車輛信息存入文件中。8)讀取車輛將保存在文件中的車輛信息讀入到當前系統(tǒng)中,以供用戶使用。在完成以上基本功能的基礎上,可自行進行擴展或完善。3、問題的解決方案:根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:1)應用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設計;2)分析系統(tǒng)中的各個實體以及它們之間的關系;3)根據(jù)問
4、題描述,設計系統(tǒng)的類層次;4)完成類層次中各個類的描述;5)完成類中各個成員函數(shù)的定義;6)完成系統(tǒng)的應用模塊;7)功能調(diào)試;8)完成系統(tǒng)總結報告。目錄1.系統(tǒng)需求分析52.總體設計63.詳細設計及實現(xiàn)84.系統(tǒng)調(diào)試錯誤!未定義書簽。5.結論錯誤!未定義書簽。6.心得體會錯誤!未定義書簽。7.參考書目錯誤!未定義書簽。1. 系統(tǒng)需求分析1.1系統(tǒng)設計的目的與意義:隨著社會的進步和人們生活水平的提高, 車輛作為交通工具, 已經(jīng)成為人們?nèi)粘I钪胁豢扇鄙俚囊徊糠? 大大增加了交通壓力 , 同時 , 也對車輛里的管理有了一個更高的要求. 因此 , 需要一個車輛管理系統(tǒng)來對各種車輛的各種信息進行統(tǒng)一管
5、理 .1.2系統(tǒng)功能需求:本系統(tǒng)有三個類: Car 類、Truck 類、Bus 類,存儲小轎車信息、 卡車信息、大客車信息。1 添加車輛程序主要完成車輛信息的添加, 要求編號唯一。 如果添加了重復編號的物品時,則提示用戶數(shù)據(jù)添加重復并取消添加; 如果車輛信息庫已滿, 則提示不能再添加新的車輛信息。2 查詢車輛可按照三種方式進行物品的查詢。按車輛制造公司查詢:按編號查詢:按類別查詢:如果未找到,給出相應的提示信息,如果找到,則顯示相應的記錄信息。3 顯示車輛信息庫可顯示當前車輛信息庫中所有的車輛信息。4 修改車輛可根據(jù)查詢結果對相應的記錄進行修改,修改時注意編號的唯一性。5 刪除車輛對已添加的車
6、輛信息進行刪除。如果當前車輛信息庫為空,則提示“車輛信息庫為空!”并返回操作;否則輸入要刪除的編號,根據(jù)編號刪除該車輛信息,如果沒有找到該車輛信息,則提示“該編號不存在”。6 統(tǒng)計功能輸出當前車輛信息庫中總車輛數(shù),以及按車輛類別, 統(tǒng)計出當前車輛信息庫中各類別的車輛數(shù)并顯示。7 保存車輛將當前系統(tǒng)中車輛信息存入文件中。8 讀取車輛將保存在文件中的車輛信息讀入到當前系統(tǒng)中,以供用戶使用。2. 總體設計2.1 系統(tǒng)功能分析:系統(tǒng)通過調(diào)用函數(shù)來實現(xiàn)信息錄入、 信息修改、 信息刪除、 信息查詢以及數(shù)據(jù)保存文件等功能。add()函數(shù)用于錄入信息; modify ()函數(shù)用來修改信息; del ()函數(shù)用
7、來修改信息;search ()函數(shù)用來查詢車輛信息;read ()函數(shù)用于將文件中的數(shù)據(jù)讀取到內(nèi)存中;save()函數(shù)用于將內(nèi)存中的信息存入文件內(nèi);主函數(shù)main()用于調(diào)用這些函數(shù)。2.2 系統(tǒng)功能模塊劃分與設計:系統(tǒng)定義了 Car 類、Truck 類、Bus 類這三個類,定義了 add()、modify()、del ()、 read ()、save()、search ()等函數(shù)來實現(xiàn)系統(tǒng)所需功能。2.3 系統(tǒng)功能模塊圖:車輛信息管理系統(tǒng)小卡大轎車客車信車信息信息管息管理管小小小小小小卡 卡卡 卡卡卡大大大大大大轎轎轎轎轎轎車 車車 車車車客客客轎客客車車車車車車信 信信 信信信車車車車車車
8、信信信信信信息 息息 息息息信信信信信信息息息息息息讀 添修 刪保查息息息息息息讀添修刪保查取 加改 除存詢讀添修刪查保取加改除存詢?nèi)〖痈某兇?.4 類的設計(1)Base 類(抽象類)的設計 :Basevirtual void read()=0;virtual void add()=0;virtual void modify(int)=0;virtual void del(int)=0;virtual void save()=0;virtual void search()=0;圖 3.1 Base類(2)小轎車類的設計 :Cardouble carFee;char carID20;char
9、 carName20;void read();void add();void modify(int);void del(int);void save();void search();圖 3.2 小轎車類(3)卡車類的設計 :Truckchar truckID20;char truckName20;int truckNum;void read();void add();void modify(int);void del(int);void save();void search();圖 3.3 卡車類(4)大客車類的設計 :Buschar busName20;char busID20;int bu
10、sNum;void read();void add();void modify(int);void del(int);void save();void search();圖 3.4大卡車類3. 詳細設計及實現(xiàn)3.1 Base 類( 抽象類 ) 的實現(xiàn)class Basepublic:virtual void read()=0;virtual void add()=0;virtual void modify(int)=0;virtual void del(int)=0;virtual void save()=0;virtual void search()=0;3.2 小轎車類的實現(xiàn)Car.hcl
11、ass Car:public Basepublic:double carFee;char carID20;char carName20;void read();void add();void modify(int);void del(int);void save();void search();Car.cppvoid Car:read()ifstream carfile;carfile.open (轎車信息 .txt);carfilecarcount_car.carIDcarcount_car.carNamecarcount_car .carFee;while(!carfile.eof()co
12、unt_car+;carfilecarcount_car.carIDcarcount_car.carNamecarcount_ car.carFee;carfile.close();void Car:add()/ 存入對象數(shù)組中 strcpy(carcount_car.carID,carID); strcpy(carcount_car.carName,carName); carcount_car.carFee=carFee;count_car+;void Car:modify(int index)strcpy(carindex-1.carID,carID);strcpy(carindex-1.
13、carName,carName);carindex-1.carFee=carFee;void Car:del(int index)/ 前移其后記錄for(int i=index;i=count_car-1;i+)strcpy(cari-1.carID,cari.carID);strcpy(cari-1.carName,cari.carName);cari-1.carFee=cari.carFee;count_car-;void Car:search()for(int i=0;icount_car-1;i+)if(strcmp(cari.carID,carID)=0|strcmp(cari.ca
14、rName,carName)=0)cout 轎車車牌號 轎車品牌 轎車油耗費用 endl;coutcari.carIDcari.carNamecari.carFeeendl;break;elsecout 無此轎車數(shù)據(jù) !endl;break;void Car:save()ofstream carfile;carfile.open(轎車信息 .txt);for(int i=0;i=count_car-1;i+)carfilecari.carIDcari.carFeeendl;carfile.close();cari.carNametruckcount_truck.truckIDtruckcoun
15、t_truck.t ruckNametruckcount_truck.truckNum;while(!truckfile.eof()count_truck+;truckfiletruckcount_truck.truckIDtruckcount_truck .truckNametruckcount_truck.truckNum;truckfile.close();void Truck:add()/ 存入對象數(shù)組中strcpy(truckcount_truck.truckName,truckName); strcpy(truckcount_truck.truckID,truckID);truck
16、count_truck.truckNum=truckNum;count_truck+;void Truck:modify(int index)strcpy(truckindex-1.truckID,truckID); strcpy(truckindex-1.truckName,truckName);truckindex-1.truckNum=truckNum;void Truck:del(int index)/ 前移其后記錄for(int i=index;i=count_truck-1;i+)strcpy(trucki-1.truckID,truckID);strcpy(trucki-1.tr
17、uckName,truckName);trucki-1.truckNum=truckNum;count_truck-;void Truck:search()for(int i=0;icount_truck-1;i+)if(strcmp(trucki.truckID,truckID)=0)cout 卡 車車 牌 號 卡車 品 牌 卡 車 載重 數(shù)( 噸)endl;couttrucki.truckIDtrucki.truckNametrucki.truckNumendl;break;elsecout 無此卡車數(shù)據(jù) !endl;break;void Truck:save()ofstream truc
18、kfile;truckfile.open(卡車信息 .txt);for(int i=0;i=count_truck-1;i+)truckfiletrucki.truckIDtrucki.truckName buscount_bus.busIDbuscount_bus.busNamebuscount_bus.busNum;while(!busfile.eof()count_bus+;busfilebuscount_bus.busIDbuscount_bus.busNamebuscount_ bus.busNum;busfile.close();void Bus:add()/ 存入對象數(shù)組中str
19、cpy(buscount_bus.busID,busID);strcpy(buscount_bus.busName,busName);buscount_bus.busNum=busNum;count_bus+;void Bus:modify(int index)strcpy(busindex-1.busID,busID);strcpy(busindex-1.busName,busName);busindex-1.busNum=busNum;void Bus:del(int index)/ 前移其后記錄for(int i=index;i=count_bus-1;i+)strcpy(busi-1.
20、busID,busi.busID);strcpy(busi-1.busName,busi.busName);busi-1.busNum=busi.busNum;count_bus-;void Bus:search()for(int i=0;icount_bus-1;i+)if(strcmp(busi.busID,busID)=0)cout 客車車牌號 客車品牌 客車最大載客數(shù) ( 人)endl;coutbusi.busIDbusi.busNamebusi.busNumendl;break;elsecout 無此客車數(shù)據(jù) !endl;break;void Bus:save()ofstream b
21、usfile;busfile.open(客車信息 .txt);for(int i=0;i=count_bus-1;i+)busfilebusi.busID busi.busName busi.busNumendl;busfile.close();3.5 main.cpp#include #include#include #include #include Car carMAXcar;Truck truckMAXtruck;Bus busMAXbus;int count_car=0;int count_truck=0;int count_bus=0;Base *p=NULL;char c;/ 轎
22、車管理子菜單 void car_manage()int choice,i=0; bool quit=false;while(1)system(cls);cout*轎車管理子菜單 *endl;cout1.添加轎車信息 endl;cout2.修改轎車信息 endl;cout3.刪除轎車信息 endl;cout4.查詢轎車信息 endl;cout5.顯示所有轎車信息 endl;cout0.退出 endl;cout*endl;coutchoice;switch(choice)case 1:Car car1;p=&car1;cout請輸入轎車車牌號、轎車品牌、油耗費用:car1.carIDcar1.ca
23、rNamecar1.carFee;cout 是 否 保 存 轎 車 信 息 ?( 不 區(qū) 分 大 小 寫 ) 是 (y/Y)否(n/N)c;if(c=y|c=Y)p-add();p-save();break;case 2:Car car2;p=&car2;int index;for(int i=0;icount_car;i+)couti+1.cari.carIDcari.carName cari.carFeeendl;cout請選擇轎車序號 :index;cout請輸入要修改的轎車車牌號、轎車品牌、油耗費用 :car2.carIDcar2.carNamecar2.carFee;cout 是 否
24、 保 存 轎 車 信 息 ?( 不 區(qū) 分 大 小 寫 ) 是 (y/Y)否(n/N)c;if(c=y|c=Y)p-modify(index);p-save();break;case 3:Car car3;p=&car3;int index;for(int i=0;icount_car;i+)couti+1.cari.carIDcari.carName cari.carFeeendl;cout 請選擇要修改的轎車車牌號、轎車品牌、油耗費用的序列號 :index;cout 是 否 保 存 轎 車 信 息 ?( 不 區(qū) 分 大 小 寫 ) 是 (y/Y)否(n/N)c;if(c=y|c=Y)p-d
25、el(index);p-save();break;case 4:Car car4;p=&car4;cout 請輸入轎車的車名 :car4.carName;car4.search();system(pause);break;case 5:cout 轎車車牌號 轎車品牌 轎車油耗費用 endl; for(int i=0;icount_car;i+)couti+1.cari.carIDcari.carNamecari.carFeeendl;system(pause);if(count_car=0)coutsetw(20) 轎車信息庫為空 !endl;system(pause);break;case
26、0:quit=true;break;default:cout請輸入 05 之間的數(shù)字! endl; break;if(quit=true)break;system(cls);return;/ 卡車管理子菜單 void truck_manage()int choice; bool quit=false; while(1)system(cls);cout*卡車管理子菜單 *endl;cout1.添加卡車信息 endl;cout2.修改卡車信息 endl;cout3.刪除卡車信息 endl;cout4.查詢卡車信息 endl;cout5.顯示所有卡車信息 endl;cout0.退出 endl;cou
27、t*endl;coutchoice;switch(choice)case 1:Truck truck1;p=&truck1;cout請輸入卡車的車牌號、卡車品牌、載重數(shù)( 噸):truck1.truckIDtruck1.truckNametruck1.truckNum;cout 是 否 保 存 卡 車 信 息 ?( 不 區(qū) 分 大 小 寫 ) 是 (y/Y) 否 (n/N)c;if(c=y|c=Y)p-add();p-save();break;case 2:Truck truck2;p=&truck2;int index;for(int i=0;icount_truck;i+)couti+1.
28、trucki.truckIDtrucki.truckNameendl;cout 請選擇要修改的卡車信息的序列號 :index;cout請輸入要修改卡車的車牌號、卡車品牌、載重數(shù)( 噸):truck2.truckIDtruck2.truckNametruck2.truckNum;cout 是 否 保 存 卡 車 信 息 ?( 不 區(qū) 分 大 小 寫 ) 是 (y/Y) 否 (n/N)c;if(c=y|c=Y)p-modify(index);p-save();break;case 3:Truck truck3;p=&truck3;int index;for(int i=0;icount_truck
29、;i+)couti+1.trucki.truckIDtrucki.truckName trucki.truckNumendl;cout 請選擇要刪除的卡車信息序列號 :index;cout 是 否 保 存 卡 車 信 息 ?( 不 區(qū) 分 大 小 寫 ) 是 (y/Y) 否 (n/N)c;if(c=n|c=N)p-del(index);p-save();break;case 4:Truck truck4;cout 請輸入卡車的車牌號 :truck4.truckID;truck4.search();system(pause);break;case 5:cout 卡車車牌號 卡車品牌 卡車載重數(shù)
30、( 噸)endl; for(int i=0;icount_truck;i+)couti+1.trucki.truckID trucki.truckName trucki.truckNumendl;system(pause);if(count_truck=0)coutsetw(20) 卡車信息庫為空 !endl;break;case 0:quit=true;break;default:cout請輸入 05 之間的數(shù)字! endl;break;if(quit=true)break;system(cls);return;/ 客車管理子菜單 void bus_manage()int choice;bo
31、ol quit=false;while(1)system(cls);cout*客車管理子菜單 *endl;cout1.添加客車信息 endl;cout2.修改客車信息 endl;cout3.刪除客車信息 endl;cout4.查詢客車信息 endl;cout5.顯示所有客車信息 endl;cout0.退出 endl;cout*endl;coutchoice;switch(choice)case 1:Bus bus1;p=&bus1;cout請輸入要添加的客車的車牌號、客車品牌、最大載客數(shù)( 人):bus1.busIDbus1.busNamebus1.busNum;cout 是 否 保 存 客
32、車 信 息 ?( 不 區(qū) 分 大 小 寫 ) 是 (y/Y) 否 (n/N)c;if(c=y|c=Y)p-add();p-save();break;case 2:Bus bus2;p=&bus2;int index;for(int i=0;icount_bus;i+)couti+1.busi.busID busi.busName busi.busNumendl;cout 請選擇要修改的客車信息序列號 :index;cout請輸入要修改的客車車牌號、客車品牌、最大載客數(shù)( 人):bus2.busIDbus2.busNamebus2.busNum;cout 是 否 保 存 客 車 信 息 ?( 不
33、 區(qū) 分 大 小 寫 ) 是 (y/Y) 否 (n/N)c;if(c=y|c=Y)p-modify(index);p-save();break;case 3:Bus bus3;p=&bus3;int index;for(int i=0;icount_bus;i+)couti+1.busi.busID busi.busName busi.busNumendl;cout 請選擇要刪除的客車信息序列號 :index;cout 是 否 保 存 客 車 信 息 ?( 不 區(qū) 分 大 小 寫 ) 是 (y/Y)否(n/N)c;if(c=y|c=Y)p-del(index);p-save();break;c
34、ase 4:Bus bus4;cout 請輸入客車的車牌號 :bus4.busID;bus4.search();system(pause);break;case 5:cout客 車 車 牌 號 客 車 品 牌 客 車 最 大 載 客數(shù)( 人)endl;for(int i=0;icount_bus;i+)couti+1.busi.busID busi.busName busi.busNumendl;system(pause);if(count_bus=0)coutsetw(20) 客車信息庫為空 !endl;break;case 0:quit=true;break;default:cout請輸入
35、 05 之間的數(shù)字! endl;break;if(quit=true)break;system(cls);return;/ 主函數(shù)內(nèi)容 void main()/ 將各個文件中的數(shù)據(jù)依次讀入內(nèi)存Car (car); (car).read(); Truck (truck); (truck).read(); Bus (bus); (bus).read();int choice=1;/顯示主菜單while(1)cout*主菜單 *endl;cout1.轎車信息管理 endl;cout2.卡車信息管理 endl;cout3.客車信息管理 endl;cout0.退出 endl;cout*endl;cout
36、choice;switch(choice)case 1: car_manage();break;case 2: truck_manage();break;case 3: bus_manage();break;case 0: cout謝謝您的使用! endl; return;break;default:cout請輸入 03 之間的數(shù)字! endl;break;system(cls);/ 小轎車管理子菜單 void car_manage()int choice,i=0;bool quit=false;while(1)system(cls);cout*轎車管理子菜單 *endl;cout1.添加轎車信息 endl;cout2.修改轎車信息 endl;cout3.刪除轎車信息 endl;cout4.查詢轎車信息 endl;cout5.顯示所有轎車信息 endl;cout0.退出 endl;cout*endl;coutchoice;switch(choice)case 1:Car car1;p=&car1;cout請輸入轎車車牌號、轎車品牌、油耗費用:car1.carIDcar1.carNamecar1.carFee;cout 是 否 保 存 轎 車 信 息
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廣東建筑安全員知識題庫附答案
- 貴州財經(jīng)職業(yè)學院《現(xiàn)代西方哲學專題》2023-2024學年第一學期期末試卷
- 蠶豆產(chǎn)業(yè)基地建設項目可行性研究報告-蠶豆市場需求持續(xù)擴大
- 貴陽康養(yǎng)職業(yè)大學《醫(yī)療健康商務溝通》2023-2024學年第一學期期末試卷
- 廣州中醫(yī)藥大學《生物統(tǒng)計附試驗設計實驗》2023-2024學年第一學期期末試卷
- 2025年-吉林省安全員知識題庫附答案
- 廣州現(xiàn)代信息工程職業(yè)技術學院《心理咨詢與心理輔導》2023-2024學年第一學期期末試卷
- 2025年-河北省安全員B證考試題庫
- 2025建筑安全員A證考試題庫
- 2025年山西省建筑安全員-C證考試(專職安全員)題庫及答案
- 《Unit 5 What do we eat 》(說課稿)-2024-2025學年滬教版(2024)英語三年級上冊
- 2024年加油站的年度工作總結范文(2篇)
- 福建省晉江市松熹中學2024-2025學年七年級上學期第二次月考語文試題
- (新版)廣電全媒體運營師資格認證考試復習題庫(含答案)
- 教師及教育系統(tǒng)事業(yè)單位工作人員年度考核登記表示例范本1-3-5
- 殘疾兒童(孤獨癥)康復服務機構采購項目招標文件
- 少先隊活動課《民族團結一家親-同心共筑中國夢》課件
- 六年級語文下冊 期末復習非連續(xù)性文本閱讀專項訓練(一)(含答案)(部編版)
- 展會活動防疫工作方案
- 肝性腦病的護理課件-
- 2024年銀行考試-支付清算系統(tǒng)參與者考試近5年真題附答案
評論
0/150
提交評論