车辆信息管理系统.docx
《车辆信息管理系统.docx》由会员分享,可在线阅读,更多相关《车辆信息管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
车辆信息管理系统
课程设计说明书
题目:
车辆管理系统设计
学生姓名:
丁陆飞
学院:
信息工程学院
班级:
计13-1
指导教师:
李文静讲师
吕岩讲师
2014年1月6日
内蒙古工业大学课程设计(论文)任务书
课程名称:
面向对象程序设计课程设计学院:
信息工程学院班级:
计13-1
学生姓名:
丁陆飞学号:
201320201049指导教师:
李文静吕岩
一、题目
车辆管理系统设计
二、目的与意义
《面向对象程序设计课程设计》课程设计是计算机科学与技术专业实践性环节之一,通过课程设计的综合训练可以使学生进一步理解和掌握面向对象程序设计课程的基本知识;掌握面向对象程序设计的思路和方法;基本具有利用面向对象的方法以及C++的编程思想来完成系统设计的能力。
三、要求(包括原始数据、技术参数、设计要求、图纸量、工作量要求等)
1.要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
2.要求在设计的过程中,建立清晰的类层次;
3.在系统中至少要定义一个类,类中要有各自的属性和方法;
4.在系统的设计中,至少要用到面向对象的一种机制。
四、工作内容、进度安排
1.根据课程设计的要求,确定设计题目;(0.5天)
2.查找相关资料,进行应用程序总体结构、使用功能的设计;(0.5天)
3.进行应用程序的界面设计和源程序代码的编写;(2.5天)
4.设计说明书的撰写、答辩(1.5天)
五、主要参考文献
[1]《C++语言程序设计(第四版)》,郑莉,清华大学出版社,2010.7
[2]《C++程序设计教程》,钱能主编,清华大学出版社,1999.4
[3]《C++程序设计课程设计》,刘振安,机械工业出版社,2004.8
审核意见
系(教研室)主任(签字)
指导教师下达时间2014年12月25日
指导教师签字:
_______________
摘要
在当前的市场经济体制下,企业要想提高市场的竞争力,取得好的经济效益,不但要有好的产品,同时也要有好的管理方式,所以必须拥有一套完善的并且适合自身特点的信息化管理系统,以实现企业降低成本、及时反馈市场信息、完善服务质量、提高经济效益、分析市场需求、制定销售计划和目标等管理目的。
本文利用VisualC++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
第4章系统实现5
4.1类实现5
4.2函数实现7
第5章系统测试16
5.1模块测试16
5.2课程设计过程中遇到的问题17
总结18
致谢19
第一章绪论
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课程设计环境
VisualC++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)完成系统总结报告。
第三章系统流程图
第四章系统实现
4.1类实现
*基类
数据类Base
*数据成员
charcompany[40];//车辆制造公司
charbrand[20];//汽车品牌
longnumber;//车牌号码
doublekilometer;//总公里数
doubleoil_price;//油价
doubleoil;//耗油量(公里)
doubleroad;//养路费
doublefee;//基本维修费用
doubletotal_cost;//累计总费用
intyear;//年
intmonth;//月
intday;//日
*成员函数
virtualvoidread()=0;
virtualvoidadd()=0;
virtualvoidmodify(int)=0;
virtualvoiddel(int)=0;
virtualvoidsave()=0;
virtualvoidsearch()=0;
virtualvoidget_cost()=0;
*继承类1
轿车类Car:
publicBase
*数据成员
intcarriage;//箱数(两厢或三厢)
*成员函数
voidread();//从文件中输入内存
voidadd();//添加
voidmodify(int);//编辑
voiddel(int);//删除
voidsave();//保存
voidsearch();//查找
查找分以下三种方式:
厂家、车牌号、品牌
voidget_cost();//计算累计总费用
*继承类2
轿车类Truck:
publicBase
*数据成员
doubleload;//载重量
*成员函数
voidread();//从文件中输入内存
voidadd();//添加
voidmodify(int);//编辑
voiddel(int);//删除
voidsave();//保存
voidsearch();//查找
查找分以下三种方式:
厂家、车牌号、品牌
voidget_cost();//计算累计总费用
*继承类3
轿车类Bus:
publicBase
*数据成员
intcarrying;//载客量(最大载客数)
*成员函数
voidread();//从文件中输入内存
voidadd();//添加
voidmodify(int);//编辑
voiddel(int);//删除
voidsave();//保存
voidsearch();//查找
查找分以下三种方式:
厂家、车牌号、品牌
voidget_cost();//计算累计总费用
4.2函数实现
(1)主函数:
voidmain()
{
//将各个文件中的数据依次读入内存
Car(car);
(car).read();
Truck(truck);
(truck).read();
Bus(bus);
(bus).read();
intchoice=1;
//显示主菜单
while
(1)
{
cout<<"**************主菜单**************"<cout<<"1.轿车信息管理"<cout<<"2.卡车信息管理"<cout<<"3.客车信息管理"<cout<<"4.查询汽车数量"<cout<<"0.退出"<cout<<"**********************************"<cout<<"请输入所要操作的编号:
";
cin>>choice;
switch(choice)
{
case1:
car_manage();break;
case2:
truck_manage();break;
case3:
bus_manage();break;
case4:
{search_number();system("pause");}break;
case0:
cout<<"谢谢您的使用!
"<default:
cout<<"请输入0~3之间的数字!
"<}
system("cls");
}
}
(2)轿车界面函数:
while
(1)
{
system("cls");
cout<<"***********客车管理子菜单**********"<cout<<"1.添加客车信息"<cout<<"2.修改客车信息"<cout<<"3.删除客车信息"<cout<<"4.查询客车信息"<cout<<"5.显示所有客车信息"<cout<<"0.退出"<cout<<"***********************************"<程序调试:
1.添加:
voidCar:
:
add()
{
//存入对象数组中
strcpy(car[count_car].company,company);
strcpy(car[count_car].brand,brand);
car[count_car].number=number;
car[count_car].year=year;
car[count_car].month=month;
car[count_car].day=day;
car[count_car].kilometer=kilometer;
car[count_car].oil_price=oil_price;
car[count_car].oil=oil;
car[count_car].road=road;
car[count_car].fee=fee;
car[count_car].carriage=carriage;
count++;
count_car++;
}
程序调试:
2.输出:
for(inti=0;i{
p=&car[i];
p->get_cost();
cout<<"1.编号:
"<
"<"<"<"<"<"<"<"<"<"<"<}
程序调试:
3.查询:
按车牌号和品牌
voidCar:
:
search()
{
intm=0;
for(inti=0;i{
if((car[i].number==number)||(strcmp(car[i].brand,brand)==0))
{
cout<<"1.编号:
"<
"<"<"<<
car[i].year<<"年"<"<"<<
car[i].kilometer<<""<<"7.油价:
"<"<"<<
car[i].road<<""<<"10.基本维修费用:
"<"<"<<
car[i].carriage<m++;
}
}
if(m>0)
system("pause");
if(m==0)
{
cout<<"无此轿车数据!
"<system("pause");
}
}
程序调试:
1.按车牌号查询
2.按品牌查询
按车辆制造公司
voidsearch(charcompany1[40])//按车辆制造公司查询
{
intm=0;
for(inti=0;i{
if(strcmp(car[i].company,company1)==0)
{
p=&car[i];
p->get_cost();
cout<<"1.编号:
"<
"<"<"<<
car[i].year<<"年"<"<"<<
car[i].kilometer<<""<<"7.油价:
"<"<"<<
car[i].road<<""<<"10.基本维修费用:
"<"<"<<
car[i].carriage<m++;
}
}
for(intj=0;j{
if(strcmp(truck[j].company,company1)==0)
{
p=&truck[j];
p->get_cost();
cout<<"1.编号:
"<"<"<"<<
car[j].year<<"年"<"<"<<
truck[j].kilometer<<""<<"7.油价:
"<"<"<<
truck[j].road<<""<<"10.基本维修费用:
"<"<"12.载重量:
"<m++;
}
}
for(intk=0;k{
if(strcmp(bus[k].company,company1)==0)
{
p=&bus[k];
p->get_cost();
cout<<"1.编号:
"<"<"<"<<
bus[k].year<<"年"<"<"<<
bus[k].kilometer<<""<<"7.油价:
"<"<"<<
bus[k].road<<""<<"10.基本维修费用:
"<"<"<<
bus[k].carrying<m++;
}
}
if(m==0)
cout<<"无此卡车数据!
"<system("pause");
}
程序调试:
4.编辑:
voidCar:
:
modify(intindex)
{
strcpy(car[index-1].company,company);
strcpy(car[index-1].brand,brand);
car[index-1].number=number;
car[index-1].year=year;
car[index-1].month=month;
car[index-1].day=day;
car[index-1].kilometer=kilometer;
car[index-1].oil_price=oil_price;
car[index-1].oil=oil;
car[index-1].road=road;
car[index-1].fee=fee;
car[index-1].carriage=carriage;
}
程序调试:
对比输出:
编辑前:
编辑后:
5.删除:
删除前:
删除后:
由于客车和客车与轿车的功能相同,就不在此一一列举了。
第五章系统测试
5.1读出数据:
将保存在文件内的信息读出
voidCar:
:
read()
{
ifstreamcarfile;
carfile.open("轿车信息.txt");
carfile>>car[count_car].company>>car[count_car].brand>>car[count_car].number>>car[count_car].year
>>car[count_car].month>>car[count_car].day>>car[count_car].kilometer>>car[count_car].oil_price
>>car[count_car].oil>>car[count_car].road>>car[count_car].fee>>car[count_car].carriage;
while(!
carfile.eof())
{
count++;
count_car++;
carfile>>car[count_car].company>>car[count_car].brand>>car[count_car].number>>car[count_car].year
>>car[count_car].month>>car[count_ca