-1-课程设计报告格式面向对象程序设计I课程设计报告题目:车辆信息管理系统学院:计算机科学与工程学院专业:软件工程专业班级:学号:姓名:指导老师:设计日期:2014.12.17-12.23-2-1.题目及程序(系统)功能设计说明课程设计题目:车辆信息管理系统程序(系统)的基本功能:车辆信息管理系统由两个子系统构成:一是:对轿车信息的管理;二是:对车辆信息的管理功能。主要是增删改功能2.程序涉及的知识点1.类、内联函数、类的继承与派生、虚函数、抽象类的知识.Classcar//轿车类基类:classEmcar//汽车类派生类:classPascar:publicEmcar//客车类classLimou:publicEmcar//轿车类classTruck:publicEmcar//卡车类classTrain:publicEmcar//火车实现车辆管理classCompany//公司类2.实现对文件的操作,stream的子类ifstream,ofstream以及其中的相关函数:open(),close(),good()调用的头文件有#includeiostream,#includeiomanip#includestdlb.h,#includestring,#includefstream#includectype.h掌握getline()逐行读取功能以及ios::in,ios::out,ios::app,-3-对于文件的格式的实现。了解system函数对于命令行指令的调用,cls指令实现清屏及color指令改变控制台的前景色和背景。还应用了左对齐setiosflags(ios::left),设置域宽setw()等函数。3.链表这种数据结构相关增删改查基本功能实现相关知识。3.功能设计或算法设计车辆信息管理系统由两个子系统构成,它的主要功能如下:1.轿车信息管理系统1.添加车辆信息主要添加的车辆信息包括5各方面,分别是:桥车的车牌号(编号不唯一),车辆名字,车辆的价格,车辆的生产日期,车辆的生产地等。2.修改车辆信息输入车辆的编号,就会显示全部车辆信息,然后根据提示写出修改信息,并会保存在相应的文件中。3.删除车辆信息输入要删除的车辆编号,就会将此车辆信息从相应的文件中删除,并提示用户车辆信息已删除。4.查询车辆信息输入查询车辆的编号,就会从文件中调取记录,显示信息。5.显示所有车辆信息显示文件中所有车辆信息。6.清除所有车辆信息清除所有车辆信息。7.总的轿车车辆数利用类中的变量count来计算车辆数,通过文件读取存入,也-4-会在增加和删除时相应的增加和减少车辆数。8.退出轿车车辆信息系统利用break退出,主函数则采用exit(0).2.车辆信息管理系统1.增加车辆信息主要完成车辆信息的添加,要求编号唯一。添加车辆的牌号,汽车制造公司,买车时间,并且按照给定的车型进行选择,当添加车辆信息成功时,提示“新增车辆成功”;2.修改车辆信息按照车辆编号,对车辆的信息进行修改;修改成功后,提示“修改车辆信息成功”;3.删除车辆信息按照车辆编号,对车辆信息进行删除,当删除成功时,提示“找到并删除”;当车库存中没有该车辆的信息时,提示“未找到该车辆信息”;4.查询车辆信息首先会全部列出系统内全部的汽车信息;每条信息占一行;当车辆信息较多的时候,可以按照车辆的编号,查询车辆信息;当输入的编号不在系统内,则输出“未找到该车辆的信息。”;5.基础数据设置主要修改各种车型的基本维护费用;以便于计算各车每个月的总费用,用于各车型总车费的计算;设置后会提示“基础数据已设置”;6.简单统计信息有两个功能一是对车辆的车龄进行统计:二是计算车辆的总费用排行;7.数据存入磁盘8.数据载入内存9.退出管理系统实现的方法:-5-运用面向对象的思想,直接将问题抽象成对象,运用类的派生,实现了代码的复用,运用类的多态性生成多个实例,实现对同一事物的不同响应。功能结构图类图-6-程序流程图新增车辆信息-7--8-修改车辆信息-9-4.程序定义的类及函数说明1.(主要部分)轿车信息管理系统:将轿车信息定义为一个car类,在类中包含私有数据成员stringnameStringnumberstringpricestringdatestringplace,分别表示车名,车辆编号,车辆价格,买车时间及车辆的价格。add_car(),modify_car(),delete_car(),search_car(),show_all(),clear_all(),save_all(),count_all(),分别用来添加车辆信息,修改车辆信息,删除车辆信息,查询车辆信息,显示车辆信息,清除所有车辆信息和统计总的轿车车辆数。然后定义一个menu()菜单函数,使功能菜单显示在运行窗口以提-10-示用户如何进行操作。主函数是必不可少的,使用一个switch函数来选择调用主菜单的各个功能函数。2.车辆信息管理系统:将汽车抽象成一个Emcar类,由此派生出客车Pascar,卡车Truck,轿车Limou和火车Train四个子类,车辆信息管理抽象出一个公司Company类进行信息管理。汽车类包含数据成员Num,Pname,Compa,Borntime,Age,Duty,Fee,分别表示车辆编号,车牌号,车辆公司,买车时间,车龄,和车每个月的费用;共有函数包括voidGetage(),virtualvoidCalcge(),virtualvoidOutput()分别用来实现计算车龄,计算车每月的平均费用(耗油费油+基本维护费用),对车辆信息的输出。派生类客车Pascar,卡车Truck,轿车Limou和火车Train新增数据成员Wload用来表示耗油量。成员函数包括GetWload(),SetWload(),Calcge(),Output(),分别用来实现对耗油量的输入和基础数据的设置,计算各自车型的每月车费;公司类主要的函数成员Emcar*Cker创建一个车辆的链表。doubleAwge()计算平均费用doubleAage();计算平均车龄voidAdd();增加车辆信息voidModify();修改车辆信息voidDelete();删除车辆信息voidQuery();查询车辆信息voidSet();基础数据设置voidCount();简单统计信息voidSave();数据存入磁盘(包括基础数据,车辆数据)voidLoad();数据载入内存(包括基础数据,车辆数据)voidClear();清除内存中数据-11-3.数据结构采用链表实现对类中数据的管理。5.程序清单#includeiostream#includestdlib.h#includeiomanip#includestring#includefstream#includectype.husingnamespacestd;staticintcount;/***********************************************************************赵庆玲/classcar{public:car();voidadd_car();voidmodify_car();voiddelete_car();voidsearch_car();-12-voidshow_all();voidclear_all();voidsave_car();intcount_car();staticintcount;private:stringname;stringnumber;stringprice;stringdate;stringplace;};intcar::count=0;car::car(){name=\0;number=\0;price=\0;date=\0;place=\0;-13-}//添加桥车车辆voidcar::add_car(){coutendl;cout请输入小轿车的信息:endlendl;cout轿车车牌号为:;cinnumber;fflush(stdin);coutendl;cout轿车的名字是:;cinname;fflush(stdin);coutendl;cout轿车的价格是:;cinprice;fflush(stdin);coutendl;cout轿车的生产日期是:;-14-cindate;fflush(stdin);coutendl;cout轿车的生产地是:;cinplace;fflush(stdin);save_car();}//修改轿车车辆信息voidcar::modify_car(){ofstreamoutData(temp.txt,ios::out);ifstreaminData(littlecar.txt,ios::in);if(!outData||!inData){coutendl\t对不起找不到文件.endl;cout\t;system(pause);return;}-15-stringsign;coutendl输入你要修改的车辆编号:;cinsign;boolflag=true;stringstr;while(inDatanumber){getline(inData,str);if(sign==number){coutendl修改的车辆信息:endlendl;coutnumberstrendl;cout请根据下面提示修改信息:endl;cout轿车车牌号为:;cinnumber;fflush(stdin);coutendl;cout轿车的名字是:;cinname;fflush(stdin);-16-coutendl;cout轿车的价格是:;cinprice;fflush(stdin);coutendl;cout轿车的生产日期是:;cindate;fflush(stdin);coutendl;cout轿车的生产地是:;cinplace;fflush(stdin);save_car();flag=false;break;}outDatanumberstrendl;}if(flag){-17-coutendl无此车辆信息!endlendl;}else{while(getline(inData,str)){outDatastrendl;}outData.close();inData.close();ofstreamout(littlecar.txt,ios::out);ifstreamin(temp.txt,ios::in);if(!out||!in){coutendl\t对不起不能打开文件.endlendl;cout\t;system(pause);return;}while(getline(in,str))-18-{outstrendl;}out.close();in.close();cout此车辆信息已修改.endlendl;}}//删除桥车车辆信息voidcar::delete_car(){ofstreamout(temp.txt,ios::out);;ifstreamin(littlecar.txt,ios::in);cout你要删除的车辆编号:;boolflag=true;strings;cins;fflush(stdin);stringrecord;while(innumber)-19-{getline(in,record);if(s==number){cout要删除的车辆信息是:endl;cout车辆编号名称价格生产日期生产地endl;coutnumberrecordendl