课程设计报告课程设计题目:车辆管理系统学生姓名:A B C专业:软件工程班级:16*****指导教师:*祥**康(完整源代码和注释在我上次的另一篇文章里)2017年6 月18 日课程设计评分表学生姓名:A 班级16***** 学号:****课程设计题目:格式要求:中文正文使用五号字体,英文及代码使用小五号字体课程设计评分表学生姓名:B 班级16***** 学号:****课程设计题目:格式要求:中文正文使用五号字体,英文及代码使用小五号字体课程设计评分表学生姓名:C 班级16***** 学号:****课程设计题目:格式要求:中文正文使用五号字体,英文及代码使用小五号字体【目录】一、题目 (03)二、课程设计任务 (03)三、数据结构 (04)四、模块划分 (04)五、程序的总体设计 (05)六、流程图 (06)七、主要源程序代码(附件源代码) (09)八、测试情况及调试中问题与解决方案 (10)九、实验小结及心得 (15)十、工作日志 (16)十一、东华理工大学评分表 (17)一、题目:车辆管理系统设计二、课程设计任务:车辆管理系统主要负责各种车辆的常规信息管理工作。
系统中的车辆主要有大客车、小轿车和卡车。
每种车辆有车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息。
大客车还有载客量(最大载客数)信息,小轿车还有箱数(两厢或三厢)信息,卡车还有载重量等信息。
每台车辆当月总费用=油价*耗油量/公里+基本维护费用。
基本维护费用:客车:2000元/月,小轿车:1000元/月,卡车:1500元/月。
(1)添加车辆:主要完成车辆信息的添加,要求编号唯一。
当添加了重复的编号时,则提示数据添加重复并取消添加;当车辆信息库已满,则提示不能再添加新的数据。
(2)查询车辆:可按照三种方式来查询物品,分别为:按车辆制造公司查询:输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示“该车辆制造公司不存在!”;按编号查询:输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!”;按类别查询:输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有车辆!”;(3)显示车辆信息库:输出当前车辆信息库中所有车辆信息,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
(5)删除车辆:主要完成车辆信息的删除。
如果当前车辆信息库为空,则提示“车辆信息库为空!”,并返回操作;否则,输入要删除的编号,根据编号删除该车辆的记录,如果该编号不在车辆信息库库中,则提示“该编号不存在”。
(6)统计信息:输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。
(7)车辆信息存盘:将当前程序中的车辆信息存入文件中。
(8)读出车辆信息:从文件中将车辆信息读入程序。
要求:1、用C++语言实现程序设计;2、利用类和对象数组实现信息的数据结构设计;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机交互),程序加必要的注释。
三、数据结构车辆信息添加车辆信息查询车辆信息显示车辆信息编辑车辆信息删除退出系统车辆管理系统cout<<"* 2.按编号查询*"<<endl;cout<<"* 3.按类别查询*"<<endl;cout<<"****"<<endl;cout<<" 请输入你的选项:";while(1){cin>>i;cout<<endl;if(i=='1'||i=='2'||i=='3')break;cout<<"输入错误,重输:";}if(i == '1'){cout<<"请输入需查询车辆的制造公司:";cin>>t;}else if(i == '2'){cout<<"请输入需查询的车辆编号:";cin>>n;}else if(i == '3'){cout<<"请输入需查询的车辆型号(1-大客车,2-小轿车,3-卡车):";cin>>m;}for(int j = 0; j < top; j++)if(strcmp(car[j].made, t) == 0||car[j].num == n||car[j].type == m){cout<<"编号车牌号制造商购买时间型号特性总公里养路费维护费油耗总费用"<<endl;break;}for( j = 0; j < top; j++)if(strcmp(car[j].made, t) == 0||car[j].num == n||car[j].type == m){cout<<setw(4)<<car[j].num<<setw(7)<<car[j].pnum<<setw(7)<<car[j].made<<setw(7)<<car[j ].time;if(car[j].type == 1 )cout<<setw(9)<<"大客车"<<setw(8)<<"载客量:"<<people[j];else if(car[j].type == 2 )cout<<setw(9)<<"小轿车"<<setw(9)<<"车厢数: "<<coach[j];elsecout<<setw(8)<<"卡车"<<setw(9)<<"载重量:"<<weight[j];cout<<setw(6)<<car[j].km<<setw(7)<<car[j].RoadFee<<setw(7)<<car[j].cost<<setw(7)<<car[j] .OilKm<<setw(8)<<car[j].AllCount<<endl;a++;}if(a != 0){cout<<"是否进行修改(1-是,2-否):";cin>>choose;if(choose == 1)edit();}else{if(i=='1') cout<<"车辆制造公司不存在!"<<endl;if(i=='2') cout<<"车辆编号不存在!"<<endl;else if (i=='3') cout<<"车辆型号不存在!"<<endl;}cout<<"按任意键返回功能主界面"<<endl;char zz=getch();jiemian();}八、测试情况及调试中问题与解决方案以下几点分别为我们在课程设计期间测试情况及调试中问题与解决方案1.显示车辆出现问题1)问题:养路费数据有问题以及功能3中显示车辆信息库要求每条记录占据一行,当前程序显示没有达到要求(图)2)解决方案:发现代码分别在169 201 233 282行由于复制出现问题,将top改为j后养路费数据正常(图),使用setw设置域宽来控制显示将每条记录占据一行,修正后的正确显示(图)图图图2.文件无法自动创建问题1)问题:这是开始编的读取文件功能,当D盘根目录存在文件时,功能运行正常。
但当D盘根目录不存在文件时,会出现如下问题(即编译没问题,但运行时会停止工作,如图图)图图2)解决方案:这是修改后的读取文件功能函数(图),函数增加了判断“是否能顺利读取文件”功能。
如果不能,则创建文件再进行读取图3.删除车辆问题1)问题:这个问题是我们课程设计中遇到的最大的问题,困扰了我们很久,当车辆数量足够时,能成功删除车辆(图),当车辆删除到最后1辆时,界面显示剩余未发生改变,而存取的文档中车辆信息已经删除(图)。
图图图图图图2)解决方案:将代码中的删除功能函数中算法进行改进,修正后即使车辆只有一辆也能删除,不会再出现1)中问题(图)图图九、实验小结在我们课程设计的任务书中,说明了课程设计的目的是根据软件工程的方法与流程,在相对集中的实训教学时间内,通过一个功能较完整的小型应用系统的设计与开发,深入复习并进一步掌握面向对象的程序设计思想与方法。
同时,培养我们采用面向对象的方法分析问题与解决问题的能力及团体组织与协作能力。
这次课程设计是我们小组三个人历经一个多星期左右共同完成的,通过这一个多星期的学习、合作、交流,我们合作完成了车辆管理系统的程序设计。
我们小组的三个人都是第一次做课程设计,面对我们所选的课程设计任务,一开始有点摸不着头脑,但在不断的分工,查找资料,合作交流后,我们逐步实现车辆管理系统中的功能要求。
因为我们的小组长在课程设计之前就开始查阅资料,完成了程序的总体设计,在组长的带领下我们小组完成了这次任务。
在这次课程设计中,我们也遇到了很多问题,当我们完成了程序的大体设计以及函数功能实现后,发现在显示功能这部分出现问题,在我们查阅书本后,使用了我们不熟悉的一个操作符setw(int n)来设置域宽,解决了显示问题,但由于界面受限制,为保证每条记录占据一行,导致输入的数据受到一些限制。
在这之后,我们解决了一个困扰我们很久的数据问题,显示界面中养路费数据始终为0,虽然我们小组有分工,每个人的能力也不同,但是在我们三个人集体讨论这个问题后,我们找到了问题的根源并解决了这个问题,也正是这个问题,让我们体会到了合作的意义以及团队的力量。
除此之外,在课程设计期间,遇到问题,也要学会向同学、老师请教,因为我们很可能一时思路受阻或者不熟悉某些操作,通过请教他人,能够迅速解决问题并学习到他人的长处。