资源描述
北华航天工业学院实践报告北华航天工业学院基于C+的面向对象程序设计实例实践报告报 告题目:车辆管理系统设计作者所在系部:计算机科学与工程系作者所在专业:网络工程作者所在班级:B12522作者学号:作者姓名:妖YYYao指导教师姓名:李瑛完成时间:2013年6月北华航天工业学院教务处制在当前的市场经济体制下,企业要想提高市场的竞争力,取得好的经济效益,不但要 有好的产品,同时也要有好的管理方式,所以必须拥有一套完善的并且适合自身特点的信 息化管理系统,以实现企业降低成本、及时反馈市场信息、完善服务质量、提高经济效益、分析市场需求、制定销售计划和目标等管理目的。本文利用Visual C+6.0编写程序,实现了用户对公司车辆的编号、车牌号、车辆制 造公司、车辆购买时间、车辆型号(大客车、小轿车和卡车)、总公里数、耗油量/公里、基本维护费用、养路费、累计总费用等信息的管理。本系统主要实现了对车辆的添加,查询,显示,编辑,删除,统计,存盘,读出。主 要运用了类的继承等编程方法来实现对这些车辆的管理。已经过全面的系统测试,能够很 好的运行,达到了预期的效果。关键词:系统设计车辆管理类的继承目录摘要I.第1章绪论L.1.1 课程设计的目的1.1.2 课程设计的背景及意义 1.1.2.1 课程设计的背景1.1.2.2 课程设计的意义 1.1.3 课程设计环境 1.第2章系统需求分析2.2.1 问题描述 22.2 功能分析 22.3 问题的解决方案 3第3章系统设计4.3. 1数据设计4.3.1.1 类设计4.3.1.2 1. 2类之间的关系4.3.1.3 函数设计4.3. 2结构设计5.3. 2. 1系统流程图5.4. 2. 2界面设计6.第4章系统实现8.5. 1类实现8.4. 2函数实现 104. 3主函数实现 14第5章系统测试165. 1模块测试 166. 2课程设计过程中遇到的问题 18总结19致谢2Q参考文献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)统计信息:输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。 车辆信息存盘:将当前程序中的车辆信息存入文件中。(8)读出车辆信息:从文件中将车辆信息读入程序。2. 3问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。3北华航天工业学院实践报告第三章系统设计3. 1数据设计3. 1. 1类设计(1)日期类Date(2)车辆类 Vehicle(3)车辆管理类ManyVehicle3. 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结构设计4. 2. 1系统流程图5. 2. 2界面设计(1)欢迎界面:按Enter键清屏并显示主菜单«日岸邹玛至淞Mbug恃项正理三诧c函欢迎进入北华航天工业学院车行管理系统、按Enter飕显示主菜单本系统由B1现及班梁爽友情刖作图3-2.欢迎界面(2)主菜单:通过输入序号进行相应的操作。输入 0退出系统主菜单、MSSSS = =3a3aiiiiit4ttt4tiii±iiiiiiiiiiiiitjittiittttiiiiiiBeeSEMMSSS = =aa1)海加车辆J 4)编绢车辆J 7)隼辆常息存盘2)查询车辆JI c)删除车辆J0 8)读出车辆信息J 3)显示车辆信息库J 6)统计信息J 0)退出图3-1.流程图7:-=zzzz= = =二-nnnz-i-inattiitittitttttttttttttttttttttttttttTiTitiTiRH请输入您想操作的字号:图3-3.主菜单北华航天工业学院实践报告(3)查询菜单:主菜单下的子菜单。在主菜单下输入“ 2”,则进入本子菜单。通过 输入序号进行相应的查询方式。XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX& 1 按车辆制造公司查询 也2 按编号查询& 3 按类别查询XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX图3-4.查询菜单第四章系统实现6. 1类实现类名日期类Date数据成员int year; int month; int day; 年,月,日成员函数int GetYear(); int GetMonth(); int GetDay(); /返回 year, month, dayvoid Input_Date(); 输入日期void Show_Date(); /输出日期表 4-1.Date 类类名车辆类Vehicle数据成员string num; string plate; string make; 车辆编号,车W#,制造公司Date time;车辆购买时间string type;/车辆型号double kilometres; 总公里数Double oil, maintenance; /耗油量/公里,基本维护费用double road; double money;/养路费,累计总费用int people; int box; int heavy;/载客量,箱数,载重量成员函数string GetNum(); string GetMake(); string GetType(); 传递void Num();/车辆编号输入double Maintenance();double Money(); /基本维护费用,累计总费用void Input();/输入车辆信息void Show();输出车辆信息void Show_txt();/输出文件信息friend ostream & operator <<(ostream &,Vehicle &); 输出voidSet(string ,string ,string ,int ,int ,int ,string ,double ,double ,double ,double ,d ouble ,int ,int ,int );表 4-2.Vehicle 类类名车辆数组类 ManyVehicle数据成员Vehicle vN;定义车辆数组int top;数组内信息数量成员函数ManyVehicle()top=0; 构造void Add();/添加车辆void Find(); 查询车辆void Find1();/按制造公司查询void Find2();按编号查询void Find3(); 按类别查询void Top();/首行格式void Show();/显示车辆信息库void Edit();编辑车辆void Delete();/删除车辆void Statistics。;/统计信息void Save(); /车辆信息存盘void Read();/读出车辆信息void Quit();/ 退出表 4-3.ManyVehicle 类174. 2函数实现(1)添加函数:void ManyVehicle:Add()Vehicle v1;if(top>=N)cout<<"信息库已满!不能添加新的数据!"<<endl<<endl;return;cout<<"请输入您想要添加的"v1.Vehicle:Num();for(int i=0;i<top;i+)if(v1.GetNum()=vi.Vehicle:GetNum()cout<<"数据添加重复!取消添加!"<<endl<<endl;return;cout<<"当前信息库未满!可以添加 "<<endl;v1.Vehicle:Input();vtop=v1;cout<<”数据添加成功! "<<endl<<endl;top+;ofstream oufile("车辆信息库.txt",ios:out);for(int k=0;k<top;k+)outfile<<vk<<endl;outfile.close();运行结果:二二1rli二三三口口口二巳巳二二二匚匚二二二二二二HBiur巳二二2二二二二。:1Hzi口口 口口口mo二二三鳖量量:口二口二二二二匚匚匚二二二三33,口口口:;巳1:£?二二:工三三二二二二巳巳巳二二二上二二二三工WFWG j . 单W、-.统计信息 退出辆辆播车车军 询除出 X制说LJ. Lkjr Jr 2 _ 3 XIIJ1)添加车辆1 4)维辑车辆I T)车辆信息存盘请输入您想操庠的字号工1湾输入您怛要肃加的车轮嗝号:5当花信息淫未滴!可以海加,,,,-车牌号一5车辆制造公司;5车辆购买时同:2000 9 9车辆型号工卡车总公豆数:5耗油量公星二5养躇费” 5清输入载里量;5散据流加成功!半:图4-1.主菜单实现(2)删除函数:void ManyVehicle:Delete()Vehicle v3;cout<<”请输入您所要删除的"v3.Vehicle:Num();for(int i=0;i<top;i+)if(v3.Vehicle:GetNum()=vi.Vehicle:GetNum() break;if(i>=top) cout<<endl<<” 操作失败!该编号不存在!"<<endl<<endl;return;Vehicle vt;for(int j=0;j<top;j+)if(v3.Vehicle二GetNum()=vj.Vehicle二GetNum()vj=vj+1;top-;cout<<endl<<” 操作成功!编号"<<v3.Vehicle:GetNum()<<"的车辆已从数据库中删除! “<<endl<<endl;ofstream oufile("车辆信息库.txt",ios二out);for(int k=0;k<top;k+)outfile<<vk<<endl;outfile.close();运行结果:11507,331023,4i1531.261546.8710N. 6QD1Q30Q0iQ06Q703显示隼轲信息厚G统计信息车运信息为:无且读取或功!请输入您电俵世的序号号"生菜单、o o o o O 0殴0 0内-O巾5 5小车 车 车箭车车舒 卡小卡卡小EI nun出2 5 s昨M11gli昨hntnamggmt;昨:rmnt昨土口姐勺乖hngganwggnt;昨!rcgNHgngUh的明祚土的曲:!1时cgudgngEgnt:! as旦存 辕转息 车车信 加相柄 漆编车达 13 2 5 ISS图4-2.读出函数实现“5主菜单一L 1)漆加车辆L 23查询车辆I 3)旦示车辆信息库1才工必调辑车辆L 53科除车辆I63统4宿电3I 7)车辆信息存盘I 8)u ;, '工二 土 r= J :,* r= r 1 :,工* r 厂l 五r 厂 * rR造出车轴信息II r l r1"t u n -3l + r K-t f壮 r 0)中*星用Ft请首人您照携午的字号二5请箫入影所要刑除的车辆编号:7躲隹成功L编号7的车稻已从敕阴虚中阳除!图4-3.删除函数实现(3)退出函数:void ManyVehicle:Quit()cout<<endl;cout<<""<<endl;cout<<""<<endl;cout<<"X 系统已退出!欢迎再次使用!"<<endl;cout<<""<<endl;cout<<""<<endl;cout<<endl;运行结果:图4-5.退出系统4. 3主函数实现(1)程序代码:int main()Welcome。;if(cin.get()='n')system("cls");ManyVehicle ml;int i=0;while(1)Menu();cout<<endl;cout<<"请输入您想操作的序号:"int n;cin>>n;cout<<"a"cout<<endl;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<<"输入不合法! "<<endl;break;(2)运行结果:输入不同的序号分别执行不同的函数,进行相应的操作请输入您想操作的序号:2xxxxxxmxxxxxxxxxmxKKmxmxx 舞 KmxxxxxwKmxxxxxxxKxxxxxmxwmKxmxXX & 1 按车辆制造公司查询& 2 按编号查询 & 3 按类别查询XXXxxxxxxxxxxxxxxxxxxxxxxxxmxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx请输入您所需要的查询方式:3请输入您想要查询的车辆类别:卡车编号车牌号制造公司车辆购买时间车辆型号总公里数耗油量公里基本维护费目养路11120003一4卡车111600122220005一5卡车441500445200342卡车661500655520009g卡车5515005查询完毕!半:图4-6.查询函数实现北华航天工业学院实践报告第五章系统测试5. 1模块测试(1)读出数据:将保存在文件内的信息读出。-百,幸苣理至统山口讣幸笆理至统£叱请输入您想操作的序号;车辆信息为:11120003一43332003一4一2222000一5一44520034255.520009-9车车轿车车车卡小卡卡卡005 .11000005I-1o O o O5 5 IX IXRRFIII图5-1.读出数据(2)添加数据:添加一个重复的编号,系统显示“数据添加重复!取消添加! 回主菜单。,E、车辆苣理衰统9 ebu 9存羽爸理妾维一请输入您想操作的序号:1请输入您想要添加的车辆编号:2 数据添加重复!取消添加!图5-2.添加数据(3)查询一个无效编号。图5-5.统计21图5-3.查询一个无效编号(4)查询卡车类下的所有车辆信息 *E:车辆苣连未蝴Dtfbug,=胃理素筑/I ° I a请输入您所需要的查询方式13请输入您想要查询的车辆类别,卡车编号车牌号制造公司车辆购买时间车辆型号总公里数耗油量/公里基本11120003一411150022220005544150044520034266150055520009一9551500半:irF图5-4.按类别查询(5)统计当前信息*乍:车辆爸理亲婚口吐吗车辆管理案统的£请输入您想操作的序号;6半:旨围岸现有大客车0辆,小轿车1辆,卡车4辆二共5辆, 显不如下:编号车牌号制造公司车辆购买时间车辆型号总公里数耗油量/公里基本维33320034一5小轿车3310001112000-3-41115002222000554415004452003-4-26615005552000-9-9501500HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHrrr5. 2课程设计过程中遇到的问题(1)删除函数:删除车辆信息时,信息库的车辆总数要减一,一开始运行的时候,出现了信息重复的现象;后来将数组中的每个信息复制到前面,再依次输出,最后将数组中车 辆总、数top减一,再运行,就正确了。(2)清屏功能:一开始,将清屏写到了每个功能函数的后面,执行完函数买就自动清屏, 执行出来的内容闪一下就被清屏了;后来将清屏写到了欢迎界面的后面,按回车键,执行 清屏功能并进入主菜单,看起来清晰多了。北华航天工业学院实践报告总结课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实际能力的重要 环节。是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,当今计算机应用在生活中可以说无处不在。因此对于二十一世纪的大学生来说,掌握计算机开发技术十分重要。我的题目是车辆管理系统的设计, 对于我们这些新手来说, 这是很大的考验, 所以怎样才能找到课 堂所学与实际应用的最佳结合点, 怎样才能让自己的程序更加直观简练, 怎样才能让程序的运行更加人 性化,这都是在课程设计中必须考虑的问题。很感谢学校和老师给了我们一个能够自主实践的机会,让我们能够培养自己的自学能力以及实际操作能力。通过这次课程设计,我获益良多。从拿到题目直到完成整个课设的内容,实现了从理论到实际 的转变。在设计程序的过程中可以说是问题重重,各种错误以及误区都被检验出来,而这次课程设计则使我及时的纠正从前的错误,养成了自主学习与参考书籍的好习惯。25忙碌了半个月,课程设计终于接近了尾声,作为一个新手,第一次课程设计使我感到 知识与经验严重的缺乏,在这里衷心感谢老师的悉心指导,以及同学的支持帮助。经过了十几个忙碌的日子,课程设计终于顺利的完成。在设计时遇到了很多编程的问 题,最后在李瑛老师的帮助下不断完善,同时也在同学的编程中学到了一些新思路,这对 我启发很大,尤其是小组之间的交流,组员们提出了许多宝贵的意见和建议,让我拓宽了 视野。最后,感谢本次课程设计,给了我一次动手实践,将理论与实践相结合的机会,这是 我一次宝贵的实践经历。参考文献1耿祥义,张跃平.JSP实用教程.北京:清华大学出版社,20032王珊,萨师燎.数据库系统概论.北京:高等教育出版社,20063谭浩强.C语言程序设计(第二版).北京:清华大学出版社,20094谭浩强.C+狗向对象程序设计.北京:清华大学出版社,20095谭浩弓虽.C语言程序设计解题与上机指导(第三版).北京:高等教育出版社,2005指 导 教 师 评 语 及 设 计 成 绩评 语成绩:指导教师:日期:年月一日
展开阅读全文