《车辆管理系统课程设计报告报告C.doc》由会员分享,可在线阅读,更多相关《车辆管理系统课程设计报告报告C.doc(18页珍藏版)》请在三一办公上搜索。
1、【目录】1、 题目032、 课程设计任务033、 数据结构04四、模块划分 045、 程序的总体设计056、 流程图 06七、主要源程序代码(附件源代码)09八、测试情况及调试中问题与解决方案 10九、实验小结及心得15十、工作日志 16十一、东华理工大学评分表 17一、题目:车辆管理系统设计二、课程设计任务:车辆管理系统主要负责各种车辆的常规信息管理工作。 系统中的车辆主要有大客车、小轿车和卡车。每种车辆有车辆编号、车牌号、车辆制造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息。大客车还有载客量(最大载客数)信息,小轿车还
2、有箱数(两厢或三厢)信息,卡车还有载重量等信息。 每台车辆当月总费用=油价*耗油量/公里+基本维护费用。 基本维护费用:客车:2000元/月,小轿车:1000元/月,卡车:1500元/月。(1)添加车辆:主要完成车辆信息的添加,要求编号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加;当车辆信息库已满,则提示不能再添加新的数据。(2)查询车辆:可按照三种方式来查询物品,分别为:按车辆制造公司查询:输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示该车辆制造公司不存在!”;按编号查询:输入编号,输出所查询的信息,若不存在该记录,则提示该编号不存在!”;按类别查询:输入类别,输出所
3、查询的信息,若不存在记录,则提示该类别没有车辆!”;(3)显示车辆信息库:输出当前车辆信息库中所有车辆信息,每条记录占据一行。(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除车辆:主要完成车辆信息的删除。如果当前车辆信息库为空,则提示车辆信息库为空!”,并返回操作;否则,输入要删除的编号,根据编号删除该车辆的记录,如果该编号不在车辆信息库库中,则提示该编号不存在”。(6)统计信息:输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。(7)车辆信息存盘:将当前程序中的车辆信息存入文件中。(8)读出车辆信息:从文件中将车辆
4、信息读入程序。要求:1、用C+语言实现程序设计;2、利用类和对象数组实现信息的数据结构设计;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机交互),程序加必要的注释。三、数据结构Carsint num; /编号int pnum; /车牌号char made20; /制造公司double time; /购买时间(多少个月)int type;/型号(1-大客车,2-小轿车,3-卡车)double km; /总公里数int cost; /基本维护费用int RoadFee; /养路费double OilKm; /耗油量/公里double AllCount; /累计总费用frien
5、d Manager; /声明为友元Managerint peopleN; /最大载客量(大客车)int coachN; /箱数(小轿车)int weightN; /载重量(卡车)int top; /记录当前车辆数量Manager()top = 0;/车辆初始值为0void add(); /添加车辆void search(); /查询车辆void show();/显示车辆信息库void edit(); /编辑功能void delet(); /删除车辆void sum(); /统计信息void write(); /车辆信息存盘void read(); /读出车辆信息void jiemian();
6、/总界面四、模块划分车辆信息添加车辆信息查询车辆信息显示车辆信息编辑车辆信息删除退出系统车辆管理系统五、程序的总体设计类的设计:class Carspublic:int num; /编号 int pnum; /车牌号 char made20; /制造公司 double time; /购买时间(多少个月) int type; /型号(1-大客车,2-小轿车,3-卡车) double km; /总公里数 int cost; /基本维护费用int RoadFee; /养路费double OilKm; /耗油量/公里double AllCount;/累计总费用;class Managerprivate
7、:Cars carN;int peopleN; /最大载客量(大客车)int coachN; /箱数(小轿车)int weightN; /载重量(卡车)int top; /记录当前车辆数量public:Manager()top = 0;/车辆初始值为0void add(); /添加车辆void search(); /查询车辆void show(); /显示车辆信息库 void edit(); /编辑功能 void delet(); /删除车辆 void sum(); /统计信息 void read(); /读出车辆信息 void write(); /车辆信息存盘 void jiemian();
8、 /总界面;函数设计:在管理类中定义了以下函数,功能标注在其后void add(); /用于添加车辆信息,进行信息录入;void search(); /用于查询车辆信息;void show(); /显示车辆信息库 void edit(); /编辑功能 void delet(); /删除车辆 void sum(); /统计信息 void read(); /读出车辆信息 void write(); /车辆信息存盘 void jiemian(); /总界面六、流程图车辆信息添加车辆信息查询车辆信息显示车辆信息编辑车辆信息删除七、主要源程序代码由于程序代码功能多,此处只节选了添加车辆这一功能的代码,程
9、序完整源代码另附文件/ 查询车辆 /void Manager:search() int choose,m,n,a = 0;char i,t20;cout*endl;cout* 1.按车辆制造公司查询 *endl;cout* 2.按编号查询 *endl;cout* 3.按类别查询 *endl;cout*endl;couti;coutendl;if(i=1|i=2|i=3)break;cout输入错误,重输:;if(i = 1)coutt;else if(i = 2)coutn;else if(i = 3)coutm;for(int j = 0; j top; j+)if(strcmp(carj.
10、made, t) = 0|carj.num = n|carj.type = m)cout编号 车牌号 制造商 购买时间 型号 特性 总公里 养路费 维护费 油耗 总费用endl;break;for( j = 0; j top; j+)if(strcmp(carj.made, t) = 0|carj.num = n|carj.type = m) coutsetw(4)carj.numsetw(7)carj.pnumsetw(7)carj.madesetw(7)carj.time;if(carj.type = 1 )coutsetw(9)大客车setw(8)载客量:peoplej;else if(
11、carj.type = 2 )coutsetw(9)小轿车setw(9)车厢数: coachj;elsecoutsetw(8)卡 车setw(9)载重量:weightj;coutsetw(6)carj.kmsetw(7)carj.RoadFeesetw(7)carj.costsetw(7)carj.OilKmsetw(8)carj.AllCountendl;a+;if(a != 0)coutchoose;if(choose = 1)edit();elseif(i=1) cout车辆制造公司不存在!endl;if(i=2) cout车辆编号不存在!endl;else if (i=3) cout车
12、辆型号不存在!endl;cout按任意键返回功能主界面endl; char zz=getch(); jiemian();八、测试情况及调试中问题与解决方案以下几点分别为我们在课程设计期间测试情况及调试中问题与解决方案1. 显示车辆出现问题1) 问题:养路费数据有问题以及功能3中显示车辆信息库要求每条记录占据一行,当前程序显示没有达到要求(图1.1)2) 解决方案:发现代码分别在169 201 233 282行由于复制出现问题,将top改为j后养路费数据正常(图1.2),使用setw设置域宽来控制显示将每条记录占据一行,修正后的正确显示(图1.3)图1.1图1.2图1.32. 文件无法自动创建问
13、题1) 问题:这是开始编的读取文件功能,当D盘根目录存在a.t*t文件时,功能运行正常。但当D盘根目录不存在a.t*t文件时,会出现如下问题(即编译没问题,但运行时会停止工作,如图2.1-图2.2)图2.1图2.22)解决方案:这是修改后的读取文件功能函数(图2.3),函数增加了判断是否能顺利读取文件”功能。如果不能,则创建a.t*t文件再进行读取图2.33.删除车辆问题1)问题:这个问题是我们课程设计中遇到的最大的问题,困扰了我们很久,当车辆数量足够时,能成功删除车辆(图3.1- 3.3),当车辆删除到最后1辆时,界面显示剩余未发生改变,而存取的文档中车辆信息已经删除(图3.4-3.6)。图
14、3.1图3.2图3.3图3.4图3.5图3.62)解决方案:将代码中的删除功能函数中算法进行改进,修正后即使车辆只有一辆也能删除,不会再出现1)中问题(图3.7-3.8)图3.7图3.8九、实验小结在我们课程设计的任务书中,说明了课程设计的目的是根据软件工程的方法与流程,在相对集中的实训教学时间,通过一个功能较完整的小型应用系统的设计与开发,深入复习并进一步掌握面向对象的程序设计思想与方法。同时,培养我们采用面向对象的方法分析问题与解决问题的能力及团体组织与协作能力。这次课程设计是我们小组三个人历经一个多星期左右共同完成的,通过这一个多星期的学习、合作、交流,我们合作完成了车辆管理系统的程序设
15、计。我们小组的三个人都是第一次做课程设计,面对我们所选的课程设计任务,一开始有点摸不着头脑,但在不断的分工,查找资料,合作交流后,我们逐步实现车辆管理系统中的功能要求。因为我们的小组长在课程设计之前就开始查阅资料,完成了程序的总体设计,在组长的带领下我们小组完成了这次任务。在这次课程设计中,我们也遇到了很多问题,当我们完成了程序的大体设计以及函数功能实现后,发现在显示功能这部分出现问题,在我们查阅书本后,使用了我们不熟悉的一个操作符setw(int n)来设置域宽,解决了显示问题,但由于界面受限制,为保证每条记录占据一行,导致输入的数据受到一些限制。在这之后,我们解决了一个困扰我们很久的数据问
16、题,显示界面中养路费数据始终为0,虽然我们小组有分工,每个人的能力也不同,但是在我们三个人集体讨论这个问题后,我们找到了问题的根源并解决了这个问题,也正是这个问题,让我们体会到了合作的意义以及团队的力量。除此之外,在课程设计期间,遇到问题,也要学会向同学、老师请教,因为我们很可能一时思路受阻或者不熟悉*些操作,通过请教他人,能够迅速解决问题并学习到他人的长处。在课程设计中途,我们发现程序中的文件读取及功能函数中删除信息出现问题,影响了我们的进度,后来尝试了不同的方法,进行测试,并请教他人,对程序进行修改,完成了程序,在这次的问题中,我们遇到问题受到阻碍,心情也有些低落,本来以为已经完成了大部分
17、,突然发现问题,感到一些压力,不过我们小组的人都没有放弃,一直坚持,不断尝试,最终一起努力完成了课程设计。当我们共同完成了这个课程设计,发现在这个过程中我们学习到了很多,得到了成长,学会与人沟通,与人合作,学会虚心请教他人,将所学知识与实践相结合,我们的分析解决实际问题的能力得到了锻炼,并且更真切的感受到无论做什么都需要细心和耐心,小细节也会出大错,细心和耐心,才能发现问题并解决问题从而避免问题,坚持完成。这次课程设计我们参考了部分程序进行的,对我们来说是一个挑战和锻炼。我们在完成设计要求的基础上在程序中加入了自己的想法和其他程序容,也就是对程序改进了一番,并有一些创新。虽然感觉我们的创新还不
18、够典型,但经过这番修改,我们对修改的程序感到满意。由于时间的紧迫和对知识的了解不够广泛,造成了系统中可能还存在一些不足,以后我们会继续努力,大胆创新,争取能编写出透射着自己思想的程序。这次课程设计让我们充分认识到了自己的不足,认识到了动手能力的重要性。我们会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完善的程序,为以后的编程打好基础!十、工作日志周一:我们通过共同讨论,有了各自的大致主要分工任务(A主要编写功能主函数的实现;黄晨茹主要负责代码的完善优化和实验报告;C主要负责调试代码和PPT)A在今天绘制了大致算法流程图,有了基本的设计雏形。编写了一些函数功能代码。黄晨茹在今天对一
19、些功能函数有了优化的思路方向,并合作编写了一些函数功能实现的代码。C在今天对添加车辆函数进行了调试,并经过不断地测试调试将添加车辆函数错误基本解决。小组的每个成员对此次任务充满信心,今天都异常的激动。周二:我们今天共同编写其他所有函数的功能代码,并对各项功能进行了测试。通过请教老师和同学们,我们完成的进度越来越快。A今天在编写文件存取功能上遇到了一些麻烦。通过查阅相关书籍,将文件的相关功能函数问题解决了。黄晨茹今天设计了输出车辆信息库函数,开始显示的每组数据上下都没对齐。后来运用了域宽函数出色的解决了每组数据的对齐格式,使显示更加漂亮。C今天对车辆信息编辑功能进行了调试,并着手准备PPT的制作
20、。对开始编写的代码进行了再次测试,发现添加功能函数的一个漏洞。(即当添加一个卡车、大客车、小轿车之外的车时,还会添加车辆)周三:我们在今天将课程设计的整体设计功能函数全部编完,并能够编译运行,只是还残留有一些小细节没有解决。A今天将剩余的删除功能、编辑功能等编写完毕。并对所有代码进行了大致的注释,使他人读代码时能快速明白设计的思路。黄晨茹今天将各功能函数的运行结果和错误代码进行了截图,还将错误代码的原因进行了解释,以方便完成接下来的实验报告。C对所有函数功能进行了调试。将有错的功能函数的代码进行修改。最后在删除车辆功能函数遇到一个小问题。(即删不掉系统里的最后一辆车,但文件的删除了)周四:我们
21、小组通过在一起讨论分析,最后终于将那个删除函数功能代码彻底修复。程序可以完全无误地实现所有功能并运行。我们离胜利已经不远了。A今天将程序的源代码进行了优化,将重复的代码进行了更改替换,使代码相对较简洁一些。并辅助C一起做PPT。黄晨茹今天在一起讨论分析代码错误中,突然一语道破那个困扰我们许久的问题,让我们激动万分,因为这就意味着程序设计代码彻底完成。她也开始编写实验报告。C今天在讨论出错误后,赶紧进入紧的PPT制作中,为了让周五的PPT演示更成功,他不断地进行优化PPT界面。最终完成了,时间已经到第二天凌晨了。周五:我们一同上台进行了PPT演示和课程设计答辩,在答辩完成,黄晨茹开始撰写课程设计报告,A和C辅助黄晨茹完成。最终报告完成,大家的身上的担子彻底没了。虽然课程设计完成,大家都意识到团队合作的优势,确定了今后的目标。