2023年12月9日发(作者:黄龙600)
C++面向对象程序设计
课 程 设 计 报 告
课程名称 C++面向对象程序设计
课题名称 车辆管理系统
专 业
班 级
学 号
姓 名
指导教师
年 月 日 一、课程设计题目:
题目4 车辆管理系统
二、目的与要求:
1、目的:
1要求学生达到熟练掌握C++语言的基本知识和技能;
2基本掌握面向对象程序设计的基本思路和方法;
3能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题;
2、基本要求:
1要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
2要求在设计的过程中,建立清晰的类层次;
3在系统中至少要定义四个类,每个类中要有各自的属性和方法;
4在系统的设计中,至少要用到面向对象的一种机制;
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能;
三、设计方法和基本原理:
功能要求:
1)添加车辆
程序主要完成车辆信息的添加,要求编号唯一;如果添加了重复编号的物品时,则提示用户数据添加重复并取消添加;如果车辆信息库已满,则提示不能再添加新的车辆信息;
2)查询车辆
可按照三种方式进行物品的查询;
·按车辆制造公司查询:
·按编号查询:
·按类别查询:
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;
3)显示车辆信息库
可显示当前车辆信息库中所有的车辆信息;
4)修改车辆
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性;
5删除车辆 对已添加的车辆信息进行删除;如果当前车辆信息库为空,则提示“车辆信息库为空”并返回操作;否则输入要删除的编号,根据编号删除该车辆信息,如果没有找到该车辆信息,则提示“该编号不存在”;
6统计功能
输出当前车辆信息库中总车辆数,以及按车辆类别,统计出当前车辆信息库中各类别的车辆数并显示;
7)保存车辆
将当前系统中车辆信息存入文件中;
8)读取车辆
将保存在文件中的车辆信息读入到当前系统中,以供用户使用;
在完成以上基本功能的基础上,可自行进行扩展或完善;
3、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
1应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
2分析系统中的各个实体以及它们之间的关系;
3根据问题描述,设计系统的类层次;
4完成类层次中各个类的描述;
5完成类中各个成员函数的定义;
6完成系统的应用模块;
7功能调试;
8完成系统总结报告;
目 录
系统需求分析
系统设计的目的与意义:
随着社会的进步和人们生活水平的提高,车辆作为交通工具,已经成为人们日常生活中不可缺少的一部分.大大增加了交通压力,同时,也对车辆里的管理有了一个更高的要求.因此,需要一个车辆管理系统来对各种车辆的各种信息进行统一管理.
系统功能需求:
本系统有三个类:Car类、Truck类、Bus类,存储小轿车信息、卡车信息、大客车信息;
1添加车辆
程序主要完成车辆信息的添加,要求编号唯一;如果添加了重复编号的物品时,则提示用户数据添加重复并取消添加;如果车辆信息库已满,则提示不能再添加新的车辆信息;
2查询车辆
可按照三种方式进行物品的查询;
·按车辆制造公司查询:
·按编号查询:
·按类别查询:
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息;
3显示车辆信息库
可显示当前车辆信息库中所有的车辆信息;
4修改车辆
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性;
5删除车辆
对已添加的车辆信息进行删除;如果当前车辆信息库为空,则提示“车辆信息库为空”并返回操作;否则输入要删除的编号,根据编号删除该车辆信息,如果没有找到该车辆信息,则提示“该编号不存在”;
6统计功能
输出当前车辆信息库中总车辆数,以及按车辆类别,统计出当前车辆信息库中各类别的车辆数并显示;
7保存车辆
将当前系统中车辆信息存入文件中;
8读取车辆
将保存在文件中的车辆信息读入到当前系统中,以供用户使用;
总体设计
系统功能分析: 系统通过调用函数来实现信息录入、信息修改、信息删除、信息查询以及数据保存文件等功能;add函数用于录入信息;modify函数用来修改信息;del函数用来修改信息;search函数用来查询车辆信息;read函数用于将文件中的数据读取到内存中;save函数用于将内存中的信息存入文件内;主函数main用于调用这些函数;
系统功能模块划分与设计:
系统定义了Car类、Truck类、Bus类这三个类,定义了add、modify、del、read、save、search等函数来实现系统所需功能;
系统功能模块图:
车辆信息管理系统
小轿车信息管小轿车信息读取
小轿车信息添加
小轿车信息修改
小小轿轿车车信信息息删保除 存
小轿车信息查询
卡车信息读取
卡车信息添加
卡车信息管理
卡卡车车信信息息修删改
除
卡车信息保存
卡车信息查询
大客车信息读取
大客车信息添加
大客车信息管大客车信息修改
大轿车信息删除
大大客客车车信信息息查保询 存
类的设计
1Base类抽象类的设计:
Base
图 Base类
virtual void read=0;
2小轿车类的设计:
virtual void add=0;
virtual void modifyint=0;
virtual void delint=0;
Car
图 小轿车类
virtual void save=0;
double carFee;
virtual void search=0;
char carID20;
char carName20;
void read;
void add;
3卡车类的设计:
Truck
图 卡车类
char truckID20;
4大客车类的设计:
char truckName20;
int truckNum;
void read;
Bus
图 大卡车类
void add;
char busName20;
详细设计及实现
void modifyint;
char busID20;
void delint;
Base类抽象类的实现
int busNum;
void save;
void read;
class Base
void search;
void add;
{
void modifyint;
public:
void delint;
virtual void read=0;
void save;
virtual void add=0;
void search;
virtual void modifyint=0;
virtual void delint=0;
virtual void save=0;
virtual void search=0;
};
小轿车类的实现
class Car:public Base
{
public:
double carFee;
char carID20;
char carName20;
void read;
void add;
void modifyint;
void delint;
void save;
void search;
};
void Car::read
{
ifstream carfile;
\"轿车信息.txt\";
carfile>>carcount_>>carcount_e>>carcount_; while
{
count_car++;
carfile>>carcount_>>carcount_e>>carcount_;
}
;
}
void Car::add
{
arID,carID;
strcpycarcount_e,carName;
carcount_=carFee;
count_car++;
}
void Car::modifyint index
{
,carID;
e,carName;
=carFee;
}
void Car::delint index
{
arID,;
e,e;
=;
}
count_car--;
}
void Car::search
{
forint i=0;i { ,carID==0||e,carName==0 { cout<<\"轿车车牌号 \"<<\"轿车品牌 \"<<\"轿车油耗费用\"< cout<<<<\" \"< break; } else cout<<\"无此轿车数据\"< } } void Car::save { ofstream carfile; \"轿车信息.txt\"; forint i=0;i<=count_car-1;i++ carfile<<<<\" \"< ; } 卡车类的实现 class Truck:public Base { public: char truckID20; char truckName20; int truckNum; void read; void add; void modifyint; void delint; void save; void search; }; void Truck::read { ifstream truckfile; \"卡车信息.txt\"; truckfile>>truckcount_D>>truckcount_ame>>truckcount_um; while { count_truck++; truckfile>>truckcount_D>>truckcount_ame>>truckcount_um; } ; } void Truck::add { ruckName,truckName; strcpytruckcount_D,truckID; truckcount_um=truckNum; count_truck++; } void Truck::modifyint index { D,truckID; ame,truckName; um=truckNum; } void Truck::delint index { ruckID,truckID; ame,truckName; um=truckNum; } count_truck--; } void Truck::search { forint i=0;i { D,truckID==0 { cout<<\"卡车车牌号 \"<<\"卡车品牌\"<<\"卡车载重数吨\"< cout< \"< break; } else cout<<\"无此卡车数据\"< } } void Truck::save { ofstream truckfile; \"卡车信息.txt\"; forint i=0;i<=count_truck-1;i++ truckfile< \"< ; } 大客车类的实现 class Bus:public Base { public: char busName20; char busID20; int busNum; void read; void add; void modifyint; void delint; void save; void search; }; void Bus::read { fstream busfile\"客车信息.txt\",ios::in|ios::out; busfile>>buscount_>>buscount_e>>buscount_; while { count_bus++; busfile>>buscount_>>buscount_e>>buscount_; } ; } void Bus::add { usID,busID; strcpybuscount_e,busName; buscount_=busNum; count_bus++; } void Bus::modifyint index { ,busID; e,busName; =busNum; } void Bus::delint index { usID,; e,e; =; } count_bus--; } void Bus::search { forint i=0;i { ,busID==0 { cout<<\"客车车牌号 \"<<\"客车品牌 \"<<\"客车最大载客数人\"< cout<<<<\" \"< break; } else cout<<\"无此客车数据\"< } } void Bus::save { ofstream busfile; \"客车信息.txt\"; forint i=0;i<=count_bus-1;i++ busfile<<<<\" \"< ; } 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; 加轿车信息\"< cout<<\" 2.修改轿车信息\"< cout<<\" 3.删除轿车信息\"< cout<<\" 4.查询轿车信息\"< cout<<\" 5.显示所有轿车信息\"< cout<<\" 0.退出\"< cout<<\"\"< cout<<\"请输入所要操作的编号:\"; cin>>choice; switchchoice { case 1: { Car car1; p=&car1; cout<<\"请输入轿车车牌号、轿车品牌、油耗费用:\"< cin>>>>>>; cout<<\"是否保存轿车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->add; p->save; } break; } case 2: { Car car2; p=&car2; int index; forint i=0;i cout< \"<<< cout<<\"请选择轿车序号:\"< cin>>index; cout<<\"请输入要修改的轿车车牌号、轿车品牌、油耗费用:\"< cin>>>>>>; cout<<\"是否保存轿车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->modifyindex; p->save; } break; } case 3: { Car car3; p=&car3; int index; forint i=0;i cout< \"<<< cout<<\"请选择要修改的轿车车牌号、轿车品牌、油耗费用的序列号:\"< cin>>index; cout<<\"是否保存轿车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->delindex; p->save; } break; } case 4: { Car car4; p=&car4; cout<<\"请输入轿车的车名:\"< cin>>; ; system\"pause\"; break; } case 5: { cout<<\"轿车车牌号 \"<<\"轿车品牌 \"<<\"轿车油耗费用\"< forint i=0;i \"<<< system\"pause\"; ifcount_car==0 cout< system\"pause\"; break; } case 0:quit=true;break; default:cout<<\"请输入0~5之间的数字\"< } ifquit==true break; } system\"cls\"; return; } 加卡车信息\"< cout<<\" 2.修改卡车信息\"< cout<<\" 3.删除卡车信息\"< cout<<\" 4.查询卡车信息\"< cout<<\" 5.显示所有卡车信息\"< cout<<\" 0.退出\"< cout<<\"\"< cout<<\"请输入所要操作的编号:\"; cin>>choice; switchchoice { case 1: { Truck truck1; p=&truck1; cout<<\"请输入卡车的车牌号、卡车品牌、载重数吨:\"< cin>>>>>>; cout<<\"是否保存卡车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->add; p->save; } break; } case 2: { Truck truck2; p=&truck2; int index; forint i=0;i cout< cout<<\"请选择要修改的卡车信息的序列号:\"< cin>>index; cout<<\"请输入要修改卡车的车牌号、卡车品牌、载重数吨:\"< cin>>>>>>; cout<<\"是否保存卡车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->modifyindex; p->save; } break; } case 3: { Truck truck3; p=&truck3; int index; forint i=0;i cout< \"< cout<<\"请选择要删除的卡车信息序列号:\"< cin>>index; cout<<\"是否保存卡车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc=\'n\'||c==\'N\' { p->delindex; p->save; } break; } case 4: { Truck truck4; cout<<\"请输入卡车的车牌号:\"< cin>>; ; system\"pause\"; break; } case 5: { cout<<\"卡车车牌号 \"<<\"卡车品牌 \"<<\"卡车载重数吨\"< forint i=0;i cout< \"< system\"pause\"; ifcount_truck==0 cout< break; } case 0:quit=true;break; default:cout<<\"请输入0~5之间的数字\"< } ifquit==true break; } system\"cls\"; return; } 加客车信息\"< cout<<\" 2.修改客车信息\"< cout<<\" 3.删除客车信息\"< cout<<\" 4.查询客车信息\"< cout<<\" 5.显示所有客车信息\"< cout<<\" 0.退出\"< cout<<\"\"< cout<<\"请输入所要操作的编号:\"; cin>>choice; switchchoice { case 1: { Bus bus1; p=&bus1; cout<<\"请输入要添加的客车的车牌号、客车品牌、最大载客数人:\"< cin>>>>>>; cout<<\"是否保存客车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->add; p->save; } break; } case 2: { Bus bus2; p=&bus2; int index; forint i=0;i cout< \"<<< cout<<\"请选择要修改的客车信息序列号:\"< cin>>index; cout<<\"请输入要修改的客车车牌号、客车品牌、最大载客数人:\"< cin>>>>>>; cout<<\"是否保存客车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->modifyindex; p->save; } break; } case 3: { Bus bus3; p=&bus3; int index; forint i=0;i cout< \"<<< cout<<\"请选择要删除的客车信息序列号:\"< cin>>index; cout<<\"是否保存客车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->delindex; p->save; } break; } case 4: { Bus bus4; cout<<\"请输入客车的车牌号:\"< cin>>; ; system\"pause\"; break; } case 5: { cout<<\"客车车牌号 \"<<\"客车品牌 \"<<\"客车最大载客数人\"< forint i=0;i cout< \"<<< system\"pause\"; ifcount_bus==0 cout< break; } case 0:quit=true;break; default:cout<<\"请输入0~5之间的数字\"< } ifquit==true break; } system\"cls\"; return; } ead; Truck truck; ; Bus bus; ; int choice=1; 车信息管理\"< cout<<\" 2.卡车信息管理\"< cout<<\" 3.客车信息管理\"< cout<<\" 0.退出\"< cout<<\"\"< cout<<\"请输入所要操作的编号:\"; cin>>choice; switchchoice { case 1: car_manage;break; case 2: truck_manage;break; case 3: bus_manage;break; case 0: cout<<\"谢谢您的使用\"< } system\"cls\"; } } 加轿车信息\"< cout<<\" 2.修改轿车信息\"< cout<<\" 3.删除轿车信息\"< cout<<\" 4.查询轿车信息\"< cout<<\" 5.显示所有轿车信息\"< cout<<\" 0.退出\"< cout<<\"\"< cout<<\"请输入所要操作的编号:\"; cin>>choice; switchchoice { case 1: { Car car1; p=&car1; cout<<\"请输入轿车车牌号、轿车品牌、油耗费用:\"< cin>>>>>>; cout<<\"是否保存轿车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->add; p->save; } break; } case 2: { Car car2; p=&car2; int index; forint i=0;i cout< \"<<< cout<<\"请选择轿车序号:\"< cin>>index; cout<<\"请输入要修改的轿车车牌号、轿车品牌、油耗费用:\"< cin>>>>>>; cout<<\"是否保存轿车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->modifyindex; p->save; } break; } case 3: { Car car3; p=&car3; int index; forint i=0;i cout< \"<<< cout<<\"请选择要修改的轿车车牌号、轿车品牌、油耗费用的序列号:\"< cin>>index; cout<<\"是否保存轿车信息不区分大小写是y/Y否n/N\"< cin>>c; ifc==\'y\'||c==\'Y\' { p->delindex; p->save; } break; } case 4: { Car car4; p=&car4; cout<<\"请输入轿车的车名:\"< cin>>; ; system\"pause\"; break; } case 5: { cout<<\"轿车车牌号 \"<<\"轿车品牌 \"<<\"轿车油耗费用\"< forint i=0;i cout< \"<<< system\"pause\"; ifcount_car==0 cout< system\"pause\"; break; } case 0:quit=true;break; default:cout<<\"请输入0~5之间的数字\"< } ifquit==true break; } system\"cls\"; return; } 加卡车信息\"< cout<<\" 2.修改卡车信息\"< cout<<\" 3.删除卡车信息\"< cout<<\" 4.查询卡车信息\"< cout<<\" 5.显示所有卡车信息\"< cout<<\" 0.退出\"< cout<<\"\"<