车辆管理系统【附源代码】_C++课程设计报告-2013年

北华航天工业学院

《基于C++的面向对象程序设计实例》

实践报告

报告题目:车辆管理系统设计

作者所在系部:计算机科学与工程系

作者所在专业:网络工程

作者所在班级:B12522

作者学号:

作者姓名:妖YYYao

指导教师姓名:李瑛

完成时间:2013年6月

北华航天工业学院教务处制

在当前的市场经济体制下,企业要想提高市场的竞争力,取得好的经济效益,不但要有好的产品,同时也要有好的管理方式,所以必须拥有一套完善的并且适合自身特点的信息化管理系统,以实现企业降低成本、及时反馈市场信息、完善服务质量、提高经济效益、分析市场需求、制定销售计划和目标等管理目的。

本文利用Visual C++6.0 编写程序,实现了用户对公司车辆的编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息的管理。

本系统主要实现了对车辆的添加,查询,显示,编辑,删除,统计,存盘,读出。主要运用了类的继承等编程方法来实现对这些车辆的管理。已经过全面的系统测试,能够很好的运行,达到了预期的效果。

关键词:系统设计车辆管理类的继承

摘要 (Ⅰ)

第1章绪论 (1)

1.1 课程设计的目的 (1)

1.2 课程设计的背景及意义 (1)

1.2.1课程设计的背景 (1)

1.2.2课程设计的意义 (1)

1.3 课程设计环境 (1)

第2章系统需求分析 (2)

2.1问题描述 (2)

2.2功能分析 (2)

2.3问题的解决方案 (3)

第3章系统设计 (4)

3.1 数据设计 (4)

3.1.1 类设计 (4)

3.1.2 类之间的关系 (4)

3.1.3 函数设计 (4)

3.2 结构设计 (5)

3.2.1 系统流程图 (5)

3.2.2 界面设计 (6)

第4章系统实现 (8)

4.1 类实现 (8)

4.2 函数实现 (10)

4.3 主函数实现 (14)

第5章系统测试 (16)

5.1 模块测试 (16)

5.2 课程设计过程中遇到的问题 (18)

总结 (19)

致谢 (20)

参考文献 (21)

第一章绪论

1.1 课程设计的目的

(1)要求学生能够熟练掌握C++语言的基本知识和技能。

(2)加班掌握面向对象程序设计的基本思路和方法。

(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

1.2 课程设计的背景和意义

1.2.1 课程设计的背景

1. 理论研究基础

(1)C++在C的基础上增加了面向对象的机制。

(2)充分运用面向对象机制中的继承性与多态性实现函数的设计。

2. 技术层面的支持

运用系统为C++面向对象程序设计提供的各种设计方法和VC++系统提供的库函数实现项目的开发。

1.2.2 课程设计的意义

通过设计此系统,熟练掌握C++语言的基本知识和技能,基本掌握面向对象程序开发的基本思路和方法,培养学生的动手操作能力,提高自主学习能力,能够利用所学的基本知识和技能,进行简单应用程序设计。

1.3 课程设计环境

Visual C++6.0

第二章需求分析

2.1 问题描述

车辆管理系统主要负责各种车辆的常规信息管理工作。

系统中的车辆主要有大客车、小轿车和卡车。每种车辆有车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息。大客车还有载客量(最大载客数)信息,小轿车还有箱数(两厢或三厢)信息,卡车还有载重量等信息。

每台车辆当月总费用= 油价* 耗油量/ 公里+ 基本维护费用。

基本维护费用:客车:2000 元/ 月,小轿车:1000 元/ 月,卡车:1500元/月

2.2 功能要求

(1)添加车辆:主要完成车辆信息的添加,要求编号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加;当车辆信息库已满,则提示不能再添加新的数据。

(2)查询车辆:

可按照三种方式来查询物品,分别为:

按车辆制造公司查询:输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示“该车辆制造公司不存在!”;

按编号查询:输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!”;

按类别查询:输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有车辆!”。

(3)显示车辆信息库:输出当前车辆信息库中所有车辆信息,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除车辆:主要完成车辆信息的删除。如果当前车辆信息库为空,则提示“车辆信息库为空!”,并返回操作;否则,输入要删除的编号,根据编号删除该车辆的记录,如果该编号不在车辆信息库库中,则提示“该编号不存在”。

(6)统计信息:输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。

(7)车辆信息存盘:将当前程序中的车辆信息存入文件中。

(8)读出车辆信息:从文件中将车辆信息读入程序。

2.3 问题的解决方案

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系;

(3)根据问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述;

(5)完成类中各个成员函数的定义;

(6)完成系统的应用模块;

(7)功能调试;

(8)完成系统总结报告。

第三章系统设计

3.1 数据设计

3.1.1 类设计

(1)日期类Date

(2)车辆类Vehicle

(3)车辆管理类ManyVehicle

3.1.2 类之间的关系

(1)Date日期类:基类

(2)Vehicle车辆类:公有继承Date类

(3)ManyVehicle车辆数组类:公有继承Vehicle类

3.1.3 函数设计

(1)添加函数:添加一个新数据。如信息库已满,显示“信息库已满!不能添加新的数据!”并退出添加;如编号重复则显示“数据添加重复!取消添加!”并退出添加;

如可以添加,提示用户“当前信息库未满!可以添加……”,在输入车辆信息后显示“数据添加成功!”并保存当前添加数据,信息库车辆总数加一。

(2)查询函数:查询车辆信息并显示。系统提示按车辆制造公司查询、按编号查询、按类别查询三种查询方式,通过输入序号选择查询方式。如果所查询的制造公司,编号,或类别下没有车辆信息,则提示用户索要查询的信息不存在,并退出查询;如信息存在则显示出所要查询的车辆信息,显示完成后提示用户“查询完毕!”,并退出查询。

(3)显示函数:将所有车辆信息显示出来。

(4)编辑函数:修改已有的车辆信息。用户输入编号,若没有该编号,提示用户“该编号不存在!”并退出编辑;否则提示用户“请重新输入车辆信息……”,用户输入新的信息后,系统进行保存并退出编辑。编辑时不能对编号进行修改。

(5)删除函数:将已有车辆信息删除。用户输入车辆编号,若没有该编号,提示用户“操作失败!该编号不存在!”并退出删除;否则删除该编号下的车辆信息,提示用户“操作成功!车辆已从数据库中删除!”并保存,信息库车辆总数减一。

(6)统计函数:将信息库内的车辆信息分类。分别统计出大客车,小轿车,卡车的数

量以及车辆总数,并进行输出。

(7)保存函数:将信息保存为txt文件,保存成功后提示用户“信息保存成功!”;否则显示“信息文件保存失败!”。

(8)读出函数:从txt文件中将车辆信息读入程序。

(9)退出函数:提示用户退出系统,显示结束界面。

3.2 结构设计

3.2.1 系统流程图

图3-1.流程图

3.2.2 界面设计

(1)欢迎界面:按Enter 键清屏并显示主菜单。

(2)主菜单:通过输入序号进行相应的操作。输入0退出系统。

图3-3.主菜单

图3-2. 欢迎界面

(3)查询菜单:主菜单下的子菜单。在主菜单下输入“2”,则进入本子菜单。通过输入序号进行相应的查询方式。

图3-4.查询菜单

第四章系统实现4.1 类实现

表 4-1.Date类

表 4-2.Vehicle类

表 4-3.ManyVehicle类

4.2 函数实现

(1)添加函数:

void ManyVehicle::Add()

{

Vehicle v1;

if(top>=N)

{

cout<<"信息库已满!不能添加新的数据!"<

return;

}

cout<<"请输入您想要添加的";

v1.Vehicle::Num();

for(int i=0;i

if(v1.GetNum()==v[i].Vehicle::GetNum())

{

cout<<"数据添加重复!取消添加!"<

return;

}

cout<<"当前信息库未满!可以添加……"<

v1.Vehicle::Input();

v[top]=v1;

cout<<"数据添加成功!"<

top++;

ofstream outfile("车辆信息库.txt",ios::out);

for(int k=0;k

outfile<

outfile.close();

}

运行结果:

图4-1.主菜单实现

(2)删除函数:

void ManyVehicle::Delete()

{

Vehicle v3;

cout<<"请输入您所要删除的";

v3.Vehicle::Num();

for(int i=0;i

if(v3.Vehicle::GetNum()==v[i].Vehicle::GetNum())

break;

if(i>=top)

{

cout<

return;

}

Vehicle vt;

for(int j=0;j

if(v3.Vehicle::GetNum()==v[j].Vehicle::GetNum())

v[j]=v[j+1];

top--;

cout<

ofstream outfile("车辆信息库.txt",ios::out);

for(int k=0;k

outfile<

outfile.close();

}

运行结果:

图4-2.读出函数实现

图4-3.删除函数实现

(3)退出函数: void ManyVehicle::Quit() { cout<

cout<<" ※ ~~~系统已退出!欢迎再次使用!~~~

※"<

cout<<" ※

※"<

cout<<"

※※※※※※※※※※※※※※※※※※※※※※※※※"<

cout<

}

运行结果:

4.3 主函数实现

(1)程序代码:

图4-4.显示当前信息库

图4-5.退出系统

int main()

{

Welcome();

if(cin.get()=='\n')

system("cls");

ManyVehicle m1;

int i=0;

while(1)

{

Menu();

cout<

cout<<" 请输入您想操作的序号:";

int n;

cin>>n;

cout<<"\a";

cout<

switch(n)

{

case 1: m1.Add();break;

case 2: m1.Find();break;

case 3: m1.Show();break;

case 4: m1.Edit();break;

case 5: m1.Delete();break;

case 6: m1.Statistics();break;

case 7: m1.Save();break;

case 8: m1.Read();break;

case 0: m1.Quit();return 0;

default: cout<<" 输入不合法!"<

}

}

}

(2)运行结果:输入不同的序号分别执行不同的函数,进行相应的操作。

图4-6.查询函数实现

第五章 系统测试

5.1 模块测试

(1)读出数据:将保存在文件内的信息读出。

(2)添加数据:添加一个重复的编号,系统显示“数据添加重复!取消添加!”并退

回主菜单。

(3)查询一个无效编号。

图5-1.读出数据

图5-2.添加数据

(4)查询卡车类下的所有车辆信息。

(5)统计当前信息。

图5-3.查询一个无效编号

图5-4.按类别查询 图5-5.统计

相关文档
最新文档