C++課程設計之車輛管理系統(tǒng)_第1頁
C++課程設計之車輛管理系統(tǒng)_第2頁
C++課程設計之車輛管理系統(tǒng)_第3頁
C++課程設計之車輛管理系統(tǒng)_第4頁
C++課程設計之車輛管理系統(tǒng)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

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ū)ο蟮姆椒ㄒ约?C+勺編程思想來完成系統(tǒng)的設計;( 2)要求在設計的過程中,建立清晰的類層次;( 3)在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法;( 4)在系統(tǒng)的設計中,至少要用到面向

2、對象的一種機制。3、創(chuàng)新要求:在基本要求達到后,可進行創(chuàng)新設計,如根據(jù)查找結(jié)果進行修改的功能。(三) 、設計方法和基本原理:功能要求:1) 添加車輛程序主要完成車輛信息的添加,要求編號唯一。如果添加了重復編號的物品時,則提示用戶數(shù)據(jù)添加重復并取消添加;如果車輛信息庫已滿,則提示不能再添加新的車輛信息。2) 查詢車輛可按照三種方式進行物品的查詢。,按車輛制造公司查詢:按編號查詢:按類別查詢:如果未找到,給出相應的提示信息,如果找到,則顯示相應的記錄信息。3) 顯示車輛信息庫可顯示當前車輛信息庫中所有的車輛信息。4) 修改車輛可根據(jù)查詢結(jié)果對相應的記錄進行修改,修改時注意編號的唯一性。5)刪除車輛

3、對已添加的車輛信息進行刪除。如果當前車輛信息庫為空,則提示“車輛信息庫為空!并返回操作;否則輸入要刪除的編號,根據(jù)編號刪除該車輛信息,如果沒有找到該車輛信 息,則提示“該編號不存在”。6)統(tǒng)計功能輸出當前車輛信息庫中總車輛數(shù),以及按車輛類別,統(tǒng)計出當前車輛信息庫中各類別 的車輛數(shù)并顯示。7) 保存車輛將當前系統(tǒng)中車輛信息存入文件中。8) 讀取車輛將保存在文件中的車輛信息讀入到當前系統(tǒng)中,以供用戶使用。在完成以上基本功能的基礎(chǔ)上,可自行進行擴展或完善。3、問題的解決方案:根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:1)應用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設計;2)分析系統(tǒng)中的

4、各個實體以及它們之間的關(guān)系;3)根據(jù)問題描述,設計系統(tǒng)的類層次;4)完成類層次中各個類的描述;5)完成類中各個成員函數(shù)的定義;6)完成系統(tǒng)的應用模塊;7)功能調(diào)試;8)完成系統(tǒng)總結(jié)報告。1 .系統(tǒng)需求分析2 .總體設計3 .詳細設計及實現(xiàn)4 . 系統(tǒng)調(diào)試5 . 結(jié)論6 , 心得體會乙參考書目系統(tǒng)需求分析隨著社會的進步和人們生活水平的提高,車輛作為交通工具,已經(jīng)成為人們?nèi)粘I钪胁豢扇鄙俚囊徊糠?大大增加了交通壓力,同時 ,也對車輛里的管理有了一個更高的要求因此,需要一個車輛管理系統(tǒng)來對各種車輛的各種信息進行統(tǒng)一管理.1.2 系統(tǒng)功能需求:本系統(tǒng)有三個類:Car類、Truck類、Bus類,存儲小

5、轎車信息、卡車信息、大客車信息。1 添加車輛程序主要完成車輛信息的添加,要求編號唯一。如果添加了重復編號的物品時,則提示用戶數(shù)據(jù)添加重復并取消添加;如果車輛信息庫已滿,則提示不能再添加新的車輛信息。2 查詢車輛可按照三種方式進行物品的查詢。,按車輛制造公司查詢:按編號查詢:按類別查詢:如果未找到,給出相應的提示信息,如果找到,則顯示相應的記錄信息。3 顯示車輛信息庫可顯示當前車輛信息庫中所有的車輛信息。4 修改車輛可根據(jù)查詢結(jié)果對相應的記錄進行修改,修改時注意編號的唯一性。5 刪除車輛對已添加的車輛信息進行刪除。如果當前車輛信息庫為空,則提示 “車輛信息庫為空!并返回操作;否則輸入要刪除的編號

6、,根據(jù)編號刪除該車輛信息,如果沒有找到該車輛信息,則提示“該編號不存在”。6 統(tǒng)計功能輸出當前車輛信息庫中總車輛數(shù),以及按車輛類別,統(tǒng)計出當前車輛信息庫中各類別的車輛數(shù)并顯示。7 保存車輛將當前系統(tǒng)中車輛信息存入文件中。8 讀取車輛將保存在文件中的車輛信息讀入到當前系統(tǒng)中,以供用戶使用??傮w設計2.1 系統(tǒng)功能分析:系統(tǒng)通過調(diào)用函數(shù)來實現(xiàn)信息錄入、信息修改、信息刪除、信息查詢以及數(shù)據(jù)保存文件等 功能。add ()函數(shù)用于錄入信息;modify ()函數(shù)用來修改信息;del ()函數(shù)用來修改 信息;search ()函數(shù)用來查詢車輛信息;read ()函數(shù)用于將文件中的數(shù)據(jù)讀取到內(nèi)存 中;sav

7、e ()函數(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)小轎車信息管卡車信息管理大客車信息管卡車信自心查詢 卡車信息保存 卡車信息刪除 卡車信息修改 卡車信息添加 卡車信息讀取大客車信息保存 大客車信息查詢 大轎車信息刪除 大客車信息修改 大客車信息添加 大客車信息讀取2.4 類的設計(1) Base類(抽象類)的

8、設計(2)小轎車類的設Base virtual void reOd()=d; Base類 評irtual void add()=0;virtual void modify(int)=0; virtual void del(iCta=0;votuaev0adF3eveb=0 類vhrOraCar)D(2earch()=0;char carName20;void read();void add();(3)卡車類的設計:(4)大客車類的設計詳細設計及實現(xiàn)Truck char truCk3D320;牟英 : char truckName20; int truckNum;void read(); Bus

9、 vharIbusName2標美char modD20t);3.1 Base類(抽象類)的實瞰usNum);class Basepublic:virtual void read()=0;virtual void add()=0;void add(Ch();void modify(int);void del(int);void save();void search();virtual void modify(int)=0;virtual void del(int)=0;virtual void save()=0;virtual void search()=0;3.2小轎車類的實現(xiàn)Car.hcla

10、ss 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()coun

11、t_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.carNam

12、e,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.carName,

13、carName)=0)cout轎車車牌號轎車品牌轎車油耗費用endl;coutcari.carID cari.carName cari.carFeeendl; break;elsecout”無止匕轎車數(shù)據(jù)!endl;break;void Car:save()ofstream carfile;cafile.open(轎車信息.txt);for(int i=0;i=count_car-1;i+)carfilecari.carID cari.carName cari.carFeetruckcount_truck.truckIDtruckcount_truck.truckNametruckcou nt

14、_truck.truckNum;while(!truckfile.eof()count_truck+;truckfiletruckcount_truck.truckIDtruckcount_truck.truckNametruck count_truck.truckNum;truckfile.close();void Truck:add()/存入對象數(shù)組中strcpy(truckcount_truck.truckName,truckName);strcpy(truckcount_truck.truckID,truckID);truckcount_truck.truckNum=truckNum;

15、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.truckName,truckName);trucki-1.truc

16、kNum=truckNum;count_truck-;void Truck:search()for(int i=0;icount_truck-1;i+)if(strcmp(trucki.truckID,truckID)=0)cout卡車車牌號卡車品牌卡車載重數(shù)(噸)endl;couttrucki.truckID trucki.truckNametrucki.truckNumendl;break;elsecout無止匕卡車數(shù)據(jù)!endl;break;void Truck:save()ofstream truckfile;truckfile.open(卡車信息.txt);for(int i=0;i

17、=count_truck-1;i+)truckfiletrucki.truckID trucki.truckNamebuscount_bus.busIDbuscount_bus.busNamebuscount_bus.busNum;while(!busfile.eof()count_bus+;busfilebuscount_bus.busIDbuscount_bus.busNamebuscount_bus.busNum;busfile.close();void Bus:add()/ 存入對象數(shù)組中strcpy(buscount_bus.busID,busID);strcpy(buscount_

18、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.busID,busi.busID);strcpy(busi-1.busName,busi.b

19、usName);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.busID busi.busName busi.busNumendl; break;elsecout”無此客車數(shù)據(jù)!endl;break;void Bus:save()ofstream busfile;bus巾le.open(客車信息.txt);for(int i=0;i=count_

20、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;/ 轎車管理子菜單void car_manage() int choice,i=0;bool quit=f

21、alse; while(1)system(cls);cout* cout cout cout cout cout cout轎車管理子菜單*endl;1 .添加轎車信息endl;2 .修改轎車信息endl;3 .刪除轎車信息endl;4 .查詢轎車信息endl;5 .顯示所有轎車信息endl;cout*”endl;6 .退出 endl;coutchoice;switch(choice)case 1:Car carl;p=&car1;cout請輸入轎車車牌號、轎車品牌、油耗費用:car1.carIDcar1.carNamecar1.carFee;cout是否保存轎車信息(不區(qū)分大小寫)是(丫)否(

22、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.carID cari.carName cari.carFeeendl;cout”請選擇轎車序號:index;cout”請輸入要修改的轎車車牌號、轎車品牌、油耗費用:car2.carIDcar2.carNamecar2.carFee;cout是否保存轎車信息(不區(qū)分大小寫)是(丫)否(n/N)c;if(c=y|c=Y)(p-modify(index);p-save()

23、; break;case 3:(Car car3;p=&car3;int index;for(int i=0;icount_car;i+)couti+1.cari.carID cari.carName cari.carFeeendl;cout”請選擇要修改的轎車車牌號、轎車品牌、油耗費用的序列 號:index;cout是否保存轎車信息(不區(qū)分大小寫)是(丫)否(n/N)c;if(c=y|c=Y)p-del(index);p-save(); break;case 4:Car car4;p=&car4;cout請輸入轎車的車名:car4.carName;car4.search();system(p

24、ause);break;case 5:cout轎車車牌號轎車品牌轎車油耗費用endl;for(int i=0;icount_car;i+)couti+1.cari.carID cari.carName cari.carFeeendl;system(pause);if(count_car=0)coutsetw(20)轎車信息、庫為空!endl;system(pause);break;case 0:quit=true;break;default:cout”請輸入 05 之間的數(shù)字! endl; break;if(quit=true) break;system(cls);return;/ 卡車管理子

25、菜單void truck_manage()int choice;bool quit=false;while(1)system(cls);co uv V ”*coutcoutcoutcoutcoutcout卡車管理子菜單*endl;1.添加卡車信息vvendl;2修改卡車信息” vvendl;3 .刪除卡車信息” vvendl;4 .查詢卡車信息” vvendl;5 .顯示所有卡車信息vvendl;0.退出endl;cout”*”endl;COUtVV”請輸入所要操作的編號cinchoice;switch(choice)(case 1:(Truck truckl;p=&truck1;coutvv

26、”請輸入卡車的車牌號、卡車品牌、載重數(shù)(噸):“vvendl;cintruck1 .truckl Dtruck1 .truckNametruck1 .truckNum;coutvv”是否保存卡車信息(不區(qū)分大小寫)是(丫/)否6小)”add();p-save();) break;)case 2:Truck truck2;p=&truck2;int index;for(int i=0;icount_truck;i+)couti+1,trucki.trucklDmodify(index);p-save();) break;)case 3:(Truck truck3;p=&truck3;int in

27、dex;for(int i=0;icount_truck;i+)couti+1.trucki.truckID trucki.truckName trucki.truckNumendl;cout請選擇要刪除的卡車信息序列號:index;cout是否保存卡車信息(不區(qū)分大小寫)是(丫)否(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卡車車牌號卡車品牌

28、卡車載重數(shù)(噸)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;

29、bool quit=false;while(1)system(cls);cout*客車管理子菜單*endl;cout1.添加客車信息endl;cout2.修改客車信息endl;cout3.刪除客車信息endl;cout4.查詢客車信息endl;cout5.顯示所有客車信息endl;cout0.退出 endl;coutI*”endl;coutchoice;switch(choice)case 1:Bus bus1;p=&bus1;cout”請輸入要添加的客車的車牌號、客車品牌、最大載客數(shù)(人):“bus1.busIDbus1.busNamebus1.busNum;cout是否保存客車信息(不區(qū)分

30、大小寫)是(丫)否(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是否保存客車信息(不區(qū)分大小寫)是(丫)否(n/N)c;if(c=y|c=Y)(p-modif

31、y(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ū)分大小寫)是(丫)否(n/N)c;if(c=y|c=Y)(p-del(index);p-save(); break;case 4:(Bus bus4;cout請輸入客車的車牌號:bus4.busID;bus4.search();system(pause

32、);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”請輸入 05 之間的數(shù)字! endl;break;if(quit=true)break;system(cls);return;/ 主函數(shù)內(nèi)容void main()/ 將各個文

33、件中的數(shù)據(jù)依次讀入內(nèi)存Car (car);(car).read();Truck (truck);(truck).read();Bus (bus);(bus).read();int choice=1;/ 顯示主菜單while(1)coutI*主菜單*”endl;cout1.轎車信息管理endl;cout2.卡車信息管理endl;cout3.客車信息管理endl;cout0.退出endl;coutI*”endl;coutchoice;switch(choice)case 1: car_manage();break;case 2: truck_manage();break;case 3: bus_m

34、anage();break;case 0: coutw1 謝您的使用! 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);coutI*cout1.cout2.cout3.cout4.cout5.cout0.轎車管理子菜單*endl;添加轎車信息endl;修改轎車信息endl;刪除轎車信息endl;查詢轎車信息endl;顯示所有轎車信息endl;退出 e

35、ndl;coutI*”endl;coutchoice;switch(choice)case 1:Car car1;p=&car1;:endl;否 (n/N)endl;coutcar1.carIDcar1.carNamecar1.carFee;coutc;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.carID cari.carName cari.carFeeendl;cout請選擇轎車序號:index;cout請輸入要修改的

36、轎車車牌號、轎車品牌、油耗費用 :car2.carIDcar2.carNamecar2.carFee;cout是否保存轎車信息(不區(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.carID cari.carName cari.carFeeendl;cout請選擇要修改的轎車車牌號、轎車品牌、油耗費用的序列號:index;cout是否保存轎車信息(不區(qū)分大小寫)是(y/

37、Y)否(n/N)c;if(c=y|c=Y)(p-del(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.carID cari.carName cari.carFeeendl;system(pause);if(count_car=0)coutsetw(20)轎車信息庫為空!endl;sy

38、stem(pause);break;case 0:quit=true;break;default:coutif(quit=true) break;system(cls); return;/卡車管理子菜單void truck_manage()int choice;bool quit=false;while(1)system(cls);cout*coutcoutcoutcoutcoutcout請輸入05之間的數(shù)字! endl; break;卡車管理子菜單*endl;1 .添加卡車信息endl;2 .修改卡車信息endl;3 .刪除卡車信息endl;4 .查詢卡車信息endl;5 .顯示所有卡車信息

39、endl;0退出endl;cout*endl;coutchoice;switch(choice)(case 1:(Truck truckl;p=&truck1;cout請輸入卡車的車牌號、卡車品牌、載重數(shù)(噸):truck1.truckIDtruck1.truckNametruck1.truckNum;cout是否保存卡車信息(不區(qū)分大小寫)是(丫格(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.trucki.truckID trucki.truckNameendl;cout請選擇要修改的卡車信息的序列號:index;cout請輸入要修改卡車的車牌號、卡車品牌、載重數(shù)(噸):truck2.truckIDtruck2.truckNametruck2.truckNum;cout是否保存卡車信息(不區(qū)分大小寫)是(丫)否(n/N)c;if(c=y|c=Y)(p-modify(index);p-save();break;case 3:(Truck

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論