system("pause");
return0;
}
题目4.车辆管理系统设计
1、问题描述
车辆管理系统主要负责各种车辆的常规信息管理工作。
系统中的车辆主要有大客车、小轿车和卡车。
每种车辆有车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息。
大客车还有载客量(最大载客数)信息,小轿车还有箱数(两厢或三厢)信息,卡车还有载重量等信息。
每台车辆当月总费用=油价*耗油量/公里+基本维护费用。
基本维护费用:
客车:
2000元/月,小轿车:
1000元/月,卡车:
1500元/月
2、功能要求
(1)添加车辆:
主要完成车辆信息的添加,要求编号唯一。
当添加了重复的编号时,则提示数据添加重复并取消添加;当车辆信息库已满,则提示不能再添加新的数据。
(2)查询车辆:
可按照三种方式来查询物品,分别为:
按车辆制造公司查询:
输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示“该车辆制造公司不存在!
”;
按编号查询:
输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!
”;按类别查询:
输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有车辆!
”;
(3)显示车辆信息库:
输出当前车辆信息库中所有车辆信息,每条记录占据一行。
(4)编辑功能:
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除车辆:
主要完成车辆信息的删除。
如果当前车辆信息库为空,则提示“车辆信息库为空!
”,并返回操作;否则,输入要删除的编号,根据编号删除该车辆的记录,如果该编号不在车辆信息库库中,则提示“该编号不存在”。
(6)统计信息
输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。
(7)车辆信息存盘:
将当前程序中的车辆信息存入文件中。
(8)读出车辆信息:
从文件中将车辆信息读入程序。
(9)可自行添加新功能(加分项)
1.需求分析
随着社会的进步和人们生活水平的提高,车辆作为交通工具,已经成为人们日常生活中不可缺少的一部分.大大增加了交通压力,同时,也对车辆里的管理有了一个更高的要求.因此,需要一个车辆管理系统来对各种车辆的各种信息进行统一管理.
2.系统功能模块图
3.测试
4、结论
程序总共设计了三个类,满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C++的编程思想来完成系统的设计,做到了用文件存储车辆信息、从文件中读取车辆信息、修改信息、查询信息、删除信息显示文件中存储的信息等要求。
而且界面简洁,容易操作。
但是程序不太条理,不够简练,导致出现错误很难发现和修改。
同时,发现一个难点,那就是类的封装。
一个可以运行的程序要把它成功的封装起来也很困难。
系统的错误提示难以识别,错误点不易找到,导致程序的耗时量大大增加。
5、心得体会
这次课程设计历经两个星期,通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,也有很多闻所未闻的东西,从而更加明白知识扎实的重要性,理解实践能力的重要性!
因为基础知识的不扎实让我在这次课程设计中走了许多弯路,不过我认为是值得的,它大大的补充了我知识不足的那一面,我始终相信付出必有收获。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
通过这次车辆管理系统的设计,我在多方面都有所提高。
首先,整体与局部的把握,在系统设计前,需要整体思考车辆管理系统所包含的信息及其实现的功能,在设计过程中,再思考局部功能实现的完整性与整个程序的结合。
其次,在实现用户权限设置这个功能时,通过查阅课本、资料,实践,对字符串的使用(strcmp(mm,"1234");)更加熟悉、了解,能够熟练运用字符串,而且加强了对类中参数传值的使用,巩固了类定义,函数成员使用等知识,并通过条件语句实现不同的人设置不同的操作,在实现查找功能时,更熟练了指针对象的使用。
最后,在整个程序运行时,考虑到屏幕出现的效果,查阅资料及其前人的登录系统代码,了解了库函数中的屏幕清零函数(system("cls");),并能正确使用。
课程设计使我对c++课程又进行了系统的复习,独立思考的能力也有了提高。
同时感谢老师和同学的帮助,在他们的帮助下,我才能顺利完成设计。
6、参考书目
1.《C++语言基础教程》清华大学出版社吕凤翥
2.《C++程序设计教程》(第二版)清华大学出版社钱能
3.谭浩强.C++程序设计教程清华大学出版社
4.谭浩强.C++面向对象程序设计清华大学出版社
5.VisualC++从入门到精通
源代码:
#include
#include
#include
#include
usingnamespacestd;
classBase
{
public:
virtualvoidread()=0;
virtualvoidadd()=0;
virtualvoidmodify(int)=0;
virtualvoiddel(int)=0;
virtualvoidsave()=0;
virtualvoidsearch()=0;
};
classCar:
publicBase
{
public:
doublecarFee;
charcarID[20];
charcarName[20];
voidread();
voidadd();
voidmodify(int);
voiddel(int);
voidsave();
voidsearch();
};
constintMAXcar=10;
externCarcar[MAXcar];
externintcount_car;
voidCar:
:
read()
{
ifstreamcarfile;
carfile.open("轿车信息.txt");
carfile>>car[count_car].carID>>car[count_car].carName>>car[count_car].carFee;
while(!
carfile.eof())
{
count_car++;
carfile>>car[count_car].carID>>car[count_car].carName>>car[count_car].carFee;
}
carfile.close();
}
voidCar:
:
add()
{
strcpy(car[count_car].carID,carID);
strcpy(car[count_car].carName,carName);
car[count_car].carFee=carFee;
count_car++;
}
voidCar:
:
modify(intindex)
{
strcpy(car[index-1].carID,carID);
strcpy(car[index-1].carName,carName);
car[index-1].carFee=carFee;
}
voidCar:
:
del(intindex)
{
//前移其后记录
for(inti=index;i<=count_car-1;i++)
{
strcpy(car[i-1].carID,car[i].carID);
str