版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C+面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告課程名稱C+面向?qū)ο蟪绦蛟O(shè)計課題名稱車輛管理系統(tǒng)專業(yè)班級學(xué)號姓名指導(dǎo)教師年月日(一)、課程設(shè)計題目:題目 4 車輛管理系統(tǒng)(二)、目的與要求:1、目的:( 1)要求學(xué)生達到熟練掌握 C+語言的基本知識和技能;( 2)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法;( 3)能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題。2、基本要求:( 1)要求利用面向?qū)ο蟮姆椒ㄒ约?C+的編程思想來完成系統(tǒng)的設(shè)計;( 2)要求在設(shè)計的過程中,建立清晰的類層次;( 3)在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法;( 4)在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N
2、機制。3、創(chuàng)新要求:在基本要求達到后,可進行創(chuàng)新設(shè)計,如根據(jù)查找結(jié)果進行修改的功能。(三)、設(shè)計方法和基本原理:功能要求:1)添加車輛程序主要完成車輛信息的添加,要求編號唯一。如果添加了重復(fù)編號的物品時,則提示用戶數(shù)據(jù)添加重復(fù)并取消添加;如果車輛信息庫已滿, 則提示不能再添加新的車輛信息。2)查詢車輛可按照三種方式進行物品的查詢。按車輛制造公司查詢:按編號查詢:按類別查詢:如果未找到,給出相應(yīng)的提示信息,如果找到,則顯示相應(yīng)的記錄信息。3)顯示車輛信息庫可顯示當前車輛信息庫中所有的車輛信息。4)修改車輛可根據(jù)查詢結(jié)果對相應(yīng)的記錄進行修改,修改時注意編號的唯一性。5)刪除車輛對已添加的車輛信息進
3、行刪除。 如果當前車輛信息庫為空, 則提示“車輛信息庫為空! ”并返回操作;否則輸入要刪除的編號,根據(jù)編號刪除該車輛信息,如果沒有找到該車輛信息,則提示“該編號不存在” 。6)統(tǒng)計功能輸出當前車輛信息庫中總車輛數(shù),以及按車輛類別,統(tǒng)計出當前車輛信息庫中各類別的車輛數(shù)并顯示。7)保存車輛將當前系統(tǒng)中車輛信息存入文件中。8)讀取車輛將保存在文件中的車輛信息讀入到當前系統(tǒng)中,以供用戶使用。在完成以上基本功能的基礎(chǔ)上,可自行進行擴展或完善。3、問題的解決方案:根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:1)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計;2)分析系統(tǒng)中的各個實體以及它們之
4、間的關(guān)系;3)根據(jù)問題描述,設(shè)計系統(tǒng)的類層次;4)完成類層次中各個類的描述;5)完成類中各個成員函數(shù)的定義;6)完成系統(tǒng)的應(yīng)用模塊;7)功能調(diào)試;8)完成系統(tǒng)總結(jié)報告。目錄1. 系統(tǒng)需求分析 . .2. 總體設(shè)計 . .3. 詳細設(shè)計及實現(xiàn) . .4. 系統(tǒng)調(diào)試 . .5. 結(jié)論 . .6. 心得體會 . .7. 參考書目 . .1. 系統(tǒng)需求分析1.1系統(tǒng)設(shè)計的目的與意義:隨著社會的進步和人們生活水平的提高, 車輛作為交通工具 , 已經(jīng)成為人們?nèi)粘I钪胁豢扇鄙俚囊徊糠? 大大增加了交通壓力, 同時 , 也對車輛里的管理有了一個更高的要求.因此 , 需要一個車輛管理系統(tǒng)來對各種車輛的各種信息
5、進行統(tǒng)一管理.1.2系統(tǒng)功能需求:本系統(tǒng)有三個類: Car 類、Truck 類、 Bus 類,存儲小轎車信息、卡車信息、大客車信息。1 添加車輛程序主要完成車輛信息的添加,要求編號唯一。如果添加了重復(fù)編號的物品時,則提示用戶數(shù)據(jù)添加重復(fù)并取消添加;如果車輛信息庫已滿, 則提示不能再添加新的車輛信息。2 查詢車輛可按照三種方式進行物品的查詢。按車輛制造公司查詢:按編號查詢:按類別查詢:如果未找到,給出相應(yīng)的提示信息,如果找到,則顯示相應(yīng)的記錄信息。3 顯示車輛信息庫可顯示當前車輛信息庫中所有的車輛信息。4 修改車輛可根據(jù)查詢結(jié)果對相應(yīng)的記錄進行修改,修改時注意編號的唯一性。5 刪除車輛對已添加的
6、車輛信息進行刪除。 如果當前車輛信息庫為空, 則提示“車輛信息庫為空! ”并返回操作;否則輸入要刪除的編號,根據(jù)編號刪除該車輛信息,如果沒有找到該車輛信息,則提示“該編號不存在” 。6 統(tǒng)計功能輸出當前車輛信息庫中總車輛數(shù),以及按車輛類別,統(tǒng)計出當前車輛信息庫中各類別的車輛數(shù)并顯示。7 保存車輛將當前系統(tǒng)中車輛信息存入文件中。8 讀取車輛將保存在文件中的車輛信息讀入到當前系統(tǒng)中,以供用戶使用。2. 總體設(shè)計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)功能模塊劃分與設(shè)計:系統(tǒng)定義了 Car 類、Truck 類、Bus 類這三個類, 定義了 add()、modify ()、del()、read ()、save()、search ()等函數(shù)來實現(xiàn)系統(tǒng)所需功能。2.3系統(tǒng)功能模塊圖:車輛信息管理系統(tǒng)小卡大轎車客車信車小小小小小小卡卡卡卡卡卡大大大大大大轎轎轎轎轎轎車車車車車車客客客轎客客車車車車車車信信信信信信車車車車車車信信信信信信信信信
8、信信信2.4類的設(shè)計( 1)Base 類(抽象類)的設(shè)計 :Base圖 3.1 Base類virtual void read()=0;(2)小轎車類的設(shè)計virtual: void add()=0;virtual void modify(int)=0;CardoublevirtualvoidcarFee;del(int)=0;圖 3.2小轎車類charvirtualcarID20;voidsave()=0;( 3)卡車類的設(shè)計 virtual: void search()=0; char carName20;void read();Truckvoid add();char truckID20;
9、圖 3.3卡車類charvoid modify(int);truckName20;( 4)大客車類的設(shè)計void: del(int); int truckNum;void save();Busvoid read();search();void add();char busName20;圖 3.4大卡車類void modify(int);char busID20;void del(int);3. 詳細設(shè)計及實現(xiàn)int busNum;void save();void read();void search();void add();3.1 Base 類( 抽象類 ) 的實現(xiàn)void modify(i
10、nt);void del(int);class Basevoid save();void search();public: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.hclass Car:public Basepublic:double carFee;char carID20;char carName20;void read();v
11、oid 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()count_car+;carfilecarcount_car.carIDcarcount_car.carNamecarcount_car.carFee;carfile
12、.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.carName,carName);carindex-1.carFee=carFee;void Car:del(int index)/ 前移其后記錄for(int i
13、=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,carName)=0)cout 轎車車牌號 轎車品牌 轎車油耗費用 endl; coutcari.carID cari.carName cari.car
14、Feeendl; break;elsecout 無此轎車數(shù)據(jù) !endl;break;void Car:save()ofstream carfile;carfile.open(轎車信息 .txt);for(int i=0;i=count_car-1;i+)carfilecari.carID cari.carName cari.carFeetruckcount_truck.truckIDtruckcount_truck.truckNam etruckcount_truck.truckNum;while(!truckfile.eof()count_truck+;truckfiletruckcoun
15、t_truck.truckIDtruckcount_truck.truck Nametruckcount_truck.truckNum;truckfile.close();void Truck:add()/ 存入對象數(shù)組中strcpy(truckcount_truck.truckName,truckName); strcpy(truckcount_truck.truckID,truckID);truckcount_truck.truckNum=truckNum;count_truck+;void Truck:modify(int index)strcpy(truckindex-1.truckI
16、D,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.truckNum=truckNum;count_truck-;void Truck:search()for(int i=0;icount_
17、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 truckfile;truckfile.open(卡車信息 .txt);for(int i=0;i=count_truck-1;i+)truckfiletrucki.truckIDtrucki.truckNamebu
18、scount_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_bus.busName,busName);buscount_bus.busNum=busNum;count_bus+;v
19、oid 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.busName);busi-1.busNum=busi.busNum;count_bus-;void Bus:search
20、()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;busfile.open(客車信息 .txt);for(int i=0;i=count_bus-1;i+)busfilebusi.busID busi.busName busi.busNu
21、mendl; 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=false;while(1)system(cls);cout*轎車管理子菜單 *endl;cout1.添
22、加轎車信息 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 是否保存轎車信息 ?( 不區(qū)分大小寫 ) 是(y/Y) 否 (n/N)c;if(c=y|c=Y)p-add();p-save();break;case 2:Ca
23、r 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ū)分大小寫 ) 是(y/Y) 否 (n/N)c;if(c=y|c=Y)p-modify(index);p-save();break;case 3:Car car3;p=&car3;int index;f
24、or(int i=0;icount_car;i+)couti+1.cari.carID cari.carName cari.carFeeendl;cout請選擇要修改的轎車車牌號、轎車品牌、油耗費用的序列號:index;cout 是否保存轎車信息 ?( 不區(qū)分大小寫 ) 是(y/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 轎車車牌號 轎車品牌
25、轎車油耗費用 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;/ 卡車管理子菜單void truck_manage()int choice
26、;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:Truck truck1;p=&truck1;cout請輸入卡車的車牌號、卡車品牌、載重數(shù)( 噸):truck1.truckIDtruck1.truckNametruck1.truckNum;
27、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.trucki.truckIDtrucki.truckNameendl;cout 請選擇要修改的卡車信息的序列號 :index;cout 請輸入要修改卡車的車牌號、卡車品牌、載重數(shù) ( 噸):truck2.truckIDtruck2.truckNametruck2.truckNum;cout 是否
28、保存卡車信息 ?( 不區(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;i+)couti+1.trucki.truckID trucki.truckName trucki.truckNumendl;cout 請選擇要刪除的卡車信息序列號 :index;cout 是否保存卡車信息 ?( 不區(qū)分大小寫 ) 是 (y/Y) 否(n/N)c;if(c=n|c=N)p-del(index);p-
29、save();break;case 4:Truck truck4;cout 請輸入卡車的車牌號 :truck4.truckID;truck4.search();system(pause);break;case 5:cout 卡車車牌號 卡車品牌 卡車載重數(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:q
30、uit=true;break;default:cout請輸入 05 之間的數(shù)字! endl;break;if(quit=true)break;system(cls);return;/ 客車管理子菜單 void bus_manage()int choice; bool quit=false; while(1)system(cls);cout*客車管理子菜單 *endl;cout1.添加客車信息 endl;cout2.修改客車信息 endl;cout3.刪除客車信息 endl;cout4.查詢客車信息 endl;cout5.顯示所有客車信息 endl;cout0.退出 endl;cout*endl
31、;coutchoice;switch(choice)case 1:Bus bus1;p=&bus1;cout 請輸入要添加的客車的車牌號、 客車品牌、最大載客數(shù) ( 人):bus1.busIDbus1.busNamebus1.busNum;cout 是否保存客車信息 ?( 不區(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.busIDbusi.busNamebusi.busNumend
32、l;cout 請選擇要修改的客車信息序列號 :index;cout 請輸入要修改的客車車牌號、客車品牌、最大載客數(shù) ( 人):bus2.busIDbus2.busNamebus2.busNum;cout 是否保存客車信息 ?( 不區(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 請選擇要刪除
33、的客車信息序列號 :index;cout 是否保存客車信息 ?( 不區(qū)分大小寫 ) 是 (y/Y) 否(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);break;case 5:cout 客車車牌號 客車品牌 客車最大載客數(shù) ( 人)endl; for(int i=0;icount_bus;i+)couti+1.busi.busID busi.busName busi.busNumendl;system(paus
34、e);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()/ 將各個文件中的數(shù)據(jù)依次讀入內(nèi)存Car (car); (car).read(); Truck (truck); (truck).read(); Bus (bus); (bus).read(); int choice=1;/ 顯示主菜單while(1)cout*主
35、菜單 *endl;cout1.轎車信息管理 endl;cout2.卡車信息管理 endl;cout3.客車信息管理 endl;cout0.退出 endl;cout*endl;coutchoice;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 c
36、ar_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 是否保存轎車信息 ?( 不區(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.carNamecari.carFeeendl;cout請選擇轎車序號 :index;cout 請輸入要修改的轎車車牌號、轎車品牌、油耗費用 :car2.carIDcar2.carNamecar2.carFee;cout
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于臨時簽訂合同報告
- 國企勞動派遣合同
- 合同法案例精解
- 鐘點工聘用合同范本
- 大班課件《誰是采蜜冠軍》
- 2024正規(guī)的自然人借款合同樣本
- 2024合同信息化管理系統(tǒng)【信息系統(tǒng)合同】
- 2024個人租房協(xié)議書合同租房協(xié)議書(詳細版)
- 2024標準銷售業(yè)務(wù)員合同范本
- 2024個體借款合同協(xié)議模板
- 2024年居間服務(wù)委托協(xié)議
- 2024年動遷房購買合同范本
- JJG 165-2024鐘罩式氣體流量標準裝置檢定規(guī)程
- 人工智能訓(xùn)練師(中級數(shù)據(jù)標注員)理論考試題庫大全(含答案)
- 手機綜合癥小品臺詞
- 建筑項目安全風險分級管控清單(范例)
- 二手車復(fù)習(xí)題終極版本
- 畢業(yè)設(shè)計說明書螺旋精確稱重給料機設(shè)計
- 十大危險作業(yè)
- 組織文化研究文獻綜述
- 停電施工專項施工方案(π接
評論
0/150
提交評論