车辆管理系统实验报告.docx
- 文档编号:28585748
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:67
- 大小:352.73KB
车辆管理系统实验报告.docx
《车辆管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《车辆管理系统实验报告.docx(67页珍藏版)》请在冰豆网上搜索。
车辆管理系统实验报告
成绩:
《C++程序设计实践》报告
专业:
软件工程
班级:
学号:
姓名:
日期:
2016年06月26日
一、设计目的
(1)要求学生能够熟练掌握C++语言的基本知识和技能。
(2)基本掌握面向对象程序设计的基本思路和方法。
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
所做题目:
4题:
车辆管理系统主要负责各种车辆的常规信息管理工作。
系统中的车辆主要有大客车、小轿车和卡车。
每种车辆有车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息。
大客车还有载客量信息,小轿车还有厢数信息,卡车还有载重量信息。
每台车辆当月总费用=油价*耗油量/公里+基本维护费用。
基本维护费用:
客车:
2000元/月;小轿车:
1000元/月;卡车:
1500元/月
功能要求:
A.添加车辆
B.查询车辆
C.显示车辆信息库
D.修改车辆
E.删除车辆
F.统计功能
G.保存车辆
H.读取车辆
二、总体设计
(1)定义基类base,设计出函数框架;
(2)派生car类、truck类、bus类,在其中具体实现函数功能;
(3)分别设计轿车、卡车、客车管理子菜单,主函数中设计添加总菜单,解决问题。
模块图1:
base
public
car
truck
bus
read()
show()
add()
modify(int)
del(int)
save()
car_manage()
truck_manage()
bus_manage()
search()
search_number()
main
模块图2:
类图:
base
+count_mun:
int=0
+base():
void
+~base():
void
+read()
+add()
+modify():
int
+del():
int
+save()
+show()
+js()
car
truck
bus
+a:
string
+a:
string
+a:
string
+b:
string
+b:
string
+b:
string
+c:
string
+c:
string
+c:
string
+d:
string
+d:
string
+d:
string
+e:
string
+e:
string
+e:
string
+f:
double
+f:
double
+f:
double
+g:
double
+g:
double
+g:
double
+h:
double
+h:
double
+h:
double
+i:
double
+i:
double
+i:
double
+zfy:
double
+zfy:
double
+zfy:
double
+l:
int
+l:
int
+j:
int
+count_carmun:
int
+count_truckmun:
int
+count_busmun:
int
+car()
+truck()
+bus()
+~car()
+~truck()
+~bus()
+car(string,string,string,string,string,double,double,double,double,int)
+truck(string,string,string,string,string,double,double,double,double,int)
+bus(string,string,string,string,string,double,double,double,double,int)
+read():
void
+read():
void
+read():
void
+add():
void
+add():
void
+add():
void
+modify():
int
+modify():
int
+modify():
int
+del():
int
+del():
int
+del():
int
+save():
void
+save():
void
+save():
void
+show():
void
+show():
void
+show():
void
+js():
void
+js():
void
+js():
void
三、详细设计(以car类为例)
car.cpp:
1.构造函数car():
功能:
用于定义一个空的对象方便操作。
2.重载构造函数car(string,string,string,string,string,double,double,double,double,int):
参数:
string编号,string车牌号,string制造公司,string购买时间,string型号,double总公里数,double油价,double耗油量/公里,double养路费,int厢数。
功能:
用于初始化对象,在文件中直接提取数据形成对象。
3.析构函数~car():
功能:
释放对象内存。
4.read()函数:
功能:
从预设的文本文件中提取数据,初始化成car类对象并一一存入vector容器中。
5.add()函数:
功能:
通过新建car对象存入vector容器中,便于在后续操作中写入文件。
6.modify()函数:
参数:
intindex。
功能:
通过index确定要操作的vector数据位置,进行修改。
7.del()函数:
参数:
intindex。
功能:
通过index确定要操作的vector数据位置,进行删除。
8.save()函数:
功能:
打开文本文件进行写入,完成后关闭文件。
9.show()函数:
功能:
输出vector容器中的所有对象。
10.js()函数:
功能:
计算车辆的当月总费用(车辆总费用=油价*耗油量/公里+基本维护费用)
车辆信息管理系统.cpp
1.main()函数
功能:
输出总菜单。
2.car_manage()函数
功能:
输出轿车管理子菜单。
3.truck_manage()函数
功能:
输出卡车管理子菜单。
4.bus_manage()函数
功能:
输出客车管理子菜单。
5.search()函数
功能:
输出车辆查询子菜单。
6.search_number()函数
功能:
输出预先统计的各类车辆总数。
四、测试与调试
调试成功,各功能均可实现。
1)在调试过程中遇到的问题:
1.将数据写入文件。
在设计文件的输入输出时遇到了较大的阻力,不明白怎么将输入到内存里的数据怎么再输入到文件里,而且还可以继续用。
2.添加和修改菜单的报错问题。
总是无法完美的实现输入错误编号时的错误提醒输出。
3.文件的再读取。
运行完一遍程序后再运行就报错。
2)解决办法:
1.查看老师的程序,同时借鉴别人输入输出的方法,完美的解决了自己的问题。
2.通过对bool值的死循环套用,令函数在bool为真时才能跳出,bool为假时可以提醒使用者输入正确的编号,解决了这一问题,实现了良好的输出。
3.改save()函数中的分隔符””为”\t”后解决问题。
五、源程序清单和执行结果
A.车辆信息管理系统.cpp:
#include"stdafx.h"
#include
#include
#include"base.h"
#include"car.h"
#include"truck.h"
#include"bus.h"
#include"iostream"
usingnamespacestd;
intbase:
:
count_num=0;
intcar:
:
count_carnum=0;
inttruck:
:
count_trucknum=0;
intbus:
:
count_busnum=0;
vector
vector
vector
//字符串分割函数
vector
{
string:
:
size_typepos;
vector
str+=pattern;//扩展字符串以方便操作
unsignedintsize=str.size();
for(unsignedinti=0;i { pos=str.find(pattern,i); if(pos { strings=str.substr(i,pos-i); result.push_back(s); i=pos+pattern.size()-1; } } returnresult; } base*p=NULL; charout; //轿车管理子菜单 voidcar_manage() { system("title轿车管理子菜单");//设置窗口标题 system("color3F");//设置子菜单背景色: 湖蓝色,字体颜色: 亮白色 intchoice,i=0; boolquit=false; while (1) { system("cls"); cout<<"**********轿车管理子菜单**********"< cout<<"1.查看车辆信息"< cout<<"2.添加车辆信息"< cout<<"3.修改车辆信息"< cout<<"4.删除车辆信息"< cout<<"5.统计车辆数"< cout<<"0.退出"< cout<<"**********************************"< cout<<"请输入所要操作的编号: "; cin>>choice; switch(choice) { case1: { carc1; p=&c1; cout<<"\n编号"<<"车牌号"<<"制造商"<<"购买时间"<<"型号"<<"公里数"<<"油价"<<"耗油量"<<"养路费"<<"厢数"<<"总费用"< p->show(); system("pause"); break; } case2: { stringa,b,c,d,e,j; doublef,g,h,i;intl; cout<<"\n编号"<<"车牌号"<<"制造商"<<"购买时间"<<"型号"<<"公里数"<<"油价"<<"耗油量"<<"养路费"<<"厢数"<<"总费用"< vector : iteratorit; for(it=vec_car.begin();it! =vec_car.end();++it) cout< while (1) { cout<<"\n请依次输入要添加的信息: \n"; cin>>a>>b>>c>>d>>e>>f>>g>>h>>i>>l; carc2(a,b,c,d,e,f,g,h,i,l); p=&c2; boolflag=true; for(it=vec_car.begin();it! =vec_car.end();++it) { if(! it->pare(a)) { cout<<"\n此车辆的编号已存在,需重新输入! "< flag=false; break; } } if(flag) { cout<<"\n是否保存此次修改? (y/n)\n"; cin>>j; if(j=="y") { p->add(); p->save(); } } if(j=="y") break; } system("pause"); break; } case3: { carc3; p=&c3; intindex=0,l; doublef,g,h,k; stringb,c,d,e,j; cout<<"\n编号"<<"车牌号"<<"制造商"<<"购买时间"<<"型号"<<"公里数"<<"油价"<<"耗油量"<<"养路费"<<"厢数"<<"总费用"< vector : iteratorit; for(it=vec_car.begin();it! =vec_car.end();++it) cout< cout<<"\n请填写要修改的车辆编号: \n"; cin>>c3.a; unsignedintiq=0; for(boolflag=false;! flag;) { for(it=vec_car.begin();it! =vec_car.end();++it) { iq++; if(! it->pare(c3.a)) { index=iq; flag=true; break; } if(it->pare(c3.a)&&iq==vec_car.size()) { cout<<"您输入的编号不存在,请重新操作! \n";iq=0; system("pause");break; } } if(flag) { cout<<"请依次输入要修改的信息: \n"; cin>>b>>c>>d>>e>>f>>g>>h>>k>>l; carc(c3.a,b,c,d,e,f,g,h,k,l); p=&c; cout<<"是否保存此次修改? (y/n)\n"; cin>>j; if(j=="y") { p->modify(index); p->save(); system("pause"); } else { system("pause");break; } }break; }break; } case4: { carc4; p=&c4; intindex=0; stringid; cout<<"\n编号"<<"车牌号"<<"制造商"<<"购买时间"<<"型号"<<"公里数"<<"油价"<<"耗油量"<<"养路费"<<"厢数"<<"总费用"< vector : iteratorit; for(it=vec_car.begin();it! =vec_car.end();++it) cout< cout<<"\n请选择要删除的车辆编号: \n"; cin>>id; unsignedinti=0; for(boolflag=false;! flag;) { for(it=vec_car.begin();it! =vec_car.end();++it) { i++; if(! it->pare(id)) { flag=true; index=i; } if(it->pare(id)&&i==vec_car.size()) { cout<<"您输入的编号不存在,请重新操作! \n"; system("pause");i=0;break; } } if(flag) { cout<<"\n是否保存此次修改? (y/n)\n"; cin>>out; if(out=='y') { p->del(index); p->save(); system("pause"); } else { system("pause");break; } }break; }break; } case5: { cout<<"\n所有车辆总数为: "< : count_num<<"其中: "< cout<<"轿车总数为: "< : count_carnum<<"\n"< system("pause"); break; } case0: quit=true;system("color8F");break; default: cout<<"\n请输入0~5之间的数字! \n"< } if(quit==true) break; } system("cls"); return; } //卡车管理子菜单 voidtruck_manage() { system("title卡车管理子菜单");//设置窗口标题 system("color3F");//设置子菜单背景色: 湖蓝色,字体颜色: 亮白色 intchoice,i=0; boolquit=false; while (1) { system("cls"); cout<<"**********卡车管理子菜单**********"< cout<<"1.查看车辆信息"< cout<<"2.添加车辆信息"< cout<<"3.修改车辆信息"< cout<<"4.删除车辆信息"< cout<<"5.统计车辆数"< cout<<"0.退出"< cout<<"**********************************"< cout<<"请输入所要操作的编号: "; cin>>choice; switch(choice) { case1: { truckc1; p=&c1; cout<<"\n编号"<<"车牌号"<<"制造商"<<"购买时间"<<"型号"<<"公里数"<<"油价"<<"耗油量"<<"养路费"<<"载重量"<<"总费用"< p->show(); system("pause"); break; } case2: { stringa,b,c,d,e,j; doublef,g,h,i;intl; cout<<"\n编号"<<"车牌号"<<"制造商"<<"购买时间"<<"型号"<<"公里数"<<"油价"<<"耗油量"<<"养路费"<<"载重量"<<"总费用"< vector : iteratorit; for(it=vec_truck.begin();it! =vec_truck.end();++it)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车辆 管理 系统 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)