车辆管理系统实验报告.docx

上传人:b****1 文档编号:28585748 上传时间:2023-07-19 格式:DOCX 页数:67 大小:352.73KB
下载 相关 举报
车辆管理系统实验报告.docx_第1页
第1页 / 共67页
车辆管理系统实验报告.docx_第2页
第2页 / 共67页
车辆管理系统实验报告.docx_第3页
第3页 / 共67页
车辆管理系统实验报告.docx_第4页
第4页 / 共67页
车辆管理系统实验报告.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

车辆管理系统实验报告.docx

《车辆管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《车辆管理系统实验报告.docx(67页珍藏版)》请在冰豆网上搜索。

车辆管理系统实验报告.docx

车辆管理系统实验报告

成绩:

 

《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;

vectorvec_car;

vectorvec_truck;

vectorvec_bus;

//字符串分割函数

vectorsplit(stringstr,stringpattern)

{

string:

:

size_typepos;

vectorresult;

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<a<<""<b<<""<c<<""<d<<""<e<<""<f<<""<g<<""<h<<""<i<<""<l<<""<zfy<

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<a<<""<b<<""<c<<""<d<<""<e<<""<f<<""<g<<""<h<<""<i<<""<l<<""<zfy<

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<a<<""<b<<""<c<<""<d<<""<e<<""<f<<""<g<<""<h<<""<i<<""<l<<""<zfy<

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)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1