C++车辆信息管理系统.docx
《C++车辆信息管理系统.docx》由会员分享,可在线阅读,更多相关《C++车辆信息管理系统.docx(61页珍藏版)》请在咨信网上搜索。
______________________________________________________________________________________________________________ 软件学院 课程设计报告 设计名称: C++课程设计 选题名称: 车辆信息管理系统 姓 名: 王海洋 学 号: 1515925530 专业班级 移动二班 系 (院): 软件学院 设计时间: 2016.6.13~2016.6.17 设计地点: 15#505 1.课程设计目的 (1)基本掌握面向对象程序设计的基本思路和方法; (2)达到熟练掌握C++语言的基本知识和技能; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题 · 2.课程设计任务与要求: 任务 设计题目从任务书所列选题表中选取,每人1题。 要求: 基本要求: (1) 要求利用面向对象的方法以及C++的编程思想来完成系统的设计; (2) 要求在设计的过程中,建立清晰的类层次; (3) 在系统中至少要定义三个类,每个类中要有各自的属性和方法; (4) 在系统的设计中,至少要用到面向对象的一种机制。 创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 3.课程设计说明书 一 需求分析 需要进行车辆信息的录入,然后进行查询、修改、删除、插入操作,最后要向文件中写入全部的车辆信息,完成这些基本功能后,进行一些菜单美化操作,加上一些特殊功能,例如密码登录等等。 二 系统设计 利用了C++完成了这个车辆信息管理系统。在设计中采用文件的记忆功能可以对已输入的货物信息进行二次操作。系统首先是数据的录入并将数据储存在二进制文件中 基本功能: (1)添加车辆:主要完成车辆信息的添加,要求编号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加;当车辆信息库已满,则提示不能再添加新的数据。 (2)查询车辆: 可按照三种方式来查询物品,分别为: 按车辆制造公司查询:输入车辆制造公司,输出所查询的信息,若不存在该记录,则提示“该车辆制造公司不存在!”; 按编号查询:输入编号,输出所查询的信息,若不存在该记录,则提示“该编号不存在!”; 按类别查询:输入类别,输出所查询的信息,若不存在记录,则提示“该类别没有车辆!”; (3)显示车辆信息库:输出当前车辆信息库中所有车辆信息,每条记录占据一行 (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 (5)删除车辆:主要完成车辆信息的删除。如果当前车辆信息库为空,则提示“车辆信息库为空!”,并返回操作;否则,输入要删除的编号,根据编号删除该车辆的记录,如果该编号不在车辆信息库库中,则提示“该编号不存在”。 (6)插入车辆 在已有车辆信息中插入一个新车辆信息,根据编号判断插入位置,若编号不存在,提示”该车辆不存在!”; (7)统计信息 输出当前车辆信息库中总物品数,以及按车辆类别,统计出当前车辆信息库中各类别的物品数并显示。 有功能模块图和流程图 车辆信息管理系统 轿车管理 卡车管理 客车管理 添加车辆信息 插入车辆信息 查找车辆信息 修改车辆信息 文件中读取车辆信息 车辆信息写入文件 显示车辆信息 删除车辆信息 按车牌号查找 按公司查找 类关系图 cho=1 1. 查询函数流程图。 按车牌号查询 Y N cho=2 按公司查询 Y 无车辆信息 输出车辆信息 Index<=count_*** 重新选择 N 2.插入信息。 2. 删除函数。 3.修改信息。 三 详细设计 1、首先写入头文件 #include<iostream> #include<windows.h> #include<cstring> #include<cstdlib> //#include<iomanip> #include <fstream> using namespace std; 2、抽象类 class Base { public: virtual void read()=0;//从文件中读取 virtual void save()=0;//写入文件中 virtual void add()=0;//添加新信息 virtual void modify(int)=0;//修改 virtual void del(int)=0;//删除 virtual void insert(int)=0;//插入 virtual void search()=0;//查询 }; 3.轿车类的实现。 class Car:public Base { public: void read(); void add(); void modify(int); void del(int); void insert(int); void search(); void save(); char carID[20];//车牌号 char car_corporation[20];//公司 double car_year,car_month,car_day;//购买时间 double car_kilo;//总公里数 double car_oil;//耗油量 double car_road;//养路费 char box[10];//车厢数 }; const int MAXcar=10; extern Car car[MAXcar]; extern int count_car;//车辆信息的最后一个,判断添加的位置 void Car::read()//读取文件 { ifstream carfile; carfile.open("轿车信息.txt"); carfile>>car[count_car].carID>>car[count_car].car_corporation>>car[count_car].car_year>>car[count_car].car_month; carfile>>car[count_car].car_day>>car[count_car].car_kilo>>car[count_car].car_oil>>car[count_car].car_road>>car[count_car].box; while(!carfile.eof()) { count_car++; carfile>>car[count_car].carID>>car[count_car].car_corporation>>car[count_car].car_year>>car[count_car].car_month; carfile>>car[count_car].car_day>>car[count_car].car_kilo>>car[count_car].car_oil>>car[count_car].car_road>>car[count_car].box; } carfile.close(); } void Car::save()//写入文件 { ofstream carfile; int i; carfile.open("轿车信息.txt"); for(i=0;i<=count_car-1;i++) { carfile<<car[i].carID<<" "<<car[i].car_corporation<<" "<<car[i].car_year<<" "<<car[i].car_month<<" "; carfile<<car[i].car_day<<" "<<car[i].car_kilo<<" "<<car[i].car_oil<<" "<<car[i].car_road<<" "<<car[i].box<<endl; } carfile.close(); } void Car::add()//添加新信息 { strcpy(car[count_car].carID,carID); strcpy(car[count_car].car_corporation,car_corporation); strcpy(car[count_car].box,box); car[count_car].car_year=car_year; car[count_car].car_month=car_month; car[count_car].car_day=car_day; car[count_car].car_kilo=car_kilo; car[count_car].car_oil=car_oil; car[count_car].car_road=car_road; count_car++; } void Car::modify(int index)//轿车修改函数 { strcpy(car[index-1].carID,carID); strcpy(car[index-1].car_corporation,car_corporation); strcpy(car[count_car].box,box); car[index-1].car_year=car_year; car[index-1].car_month=car_month; car[index-1].car_day=car_day; car[index-1].car_kilo=car_kilo; car[index-1].car_oil=car_oil; car[index-1].car_road=car_road; } void Car::del(int index)//删除函数 {//删除车辆信息之后均前移 int i; for(i=index;i<=count_car-1;i++) { strcpy(car[i-1].carID,car[i].carID); strcpy(car[i-1].car_corporation,car[i].car_corporation); strcpy(car[i-1].box,car[i].box); car[i-1].car_year=car[i].car_year; car[i-1].car_month=car[i].car_month; car[i-1].car_day=car[i].car_day; car[i-1].car_kilo=car[i].car_kilo; car[i-1].car_oil=car[i].car_oil; car[i-1].car_road=car[i].car_road; } count_car--; } void Car::insert(int index) { int i; for(i=count_car-1;i>=index;i--) { strcpy(car[i+1].carID,car[i].carID); strcpy(car[i+1].car_corporation,car[i].car_corporation); strcpy(car[i+1].box,car[i].box); car[i+1].car_year=car[i].car_year; car[i+1].car_month=car[i].car_month; car[i+1].car_day=car[i].car_day; car[i+1].car_kilo=car[i].car_kilo; car[i+1].car_oil=car[i].car_oil; car[i+1].car_road=car[i].car_road; } strcpy(car[index].carID,carID); strcpy(car[index].car_corporation,car_corporation); strcpy(car[index].box,box); car[index].car_year=car_year; car[index].car_month=car_month; car[index].car_day=car_day; car[index].car_kilo=car_kilo; car[index].car_oil=car_oil; car[index].car_road=car_road; count_car++; } void Car::search() { int i,m=0; int cho; char corporation[20],ID[20]; cout<<"请选择查询方式:"<<endl; cout<<"1.按公司查询" <<endl; cout<<"2.按车牌号查询"<<endl; cin>>cho; switch(cho) { case 1: cout<<"请输入公司名称:"<<endl; cin>>corporation; break; case 2: cout<<"请输入车牌号 :"<<endl; cin>>ID; break; default: cout<<"选择1或2!"<<endl; } for(i=0;i<count_car;i++) { if(strcmp(car[i].carID,ID)==0 || strcmp(car[i].car_corporation,corporation)==0) { cout<<"编号 车牌号 公司 购买日期 公里数 耗油量 养路费 厢数 总费用"<<endl; cout<<"["<<i+1<<"] "; cout<<car[i].carID<<" "<<car[i].car_corporation<<" "<<car[i].car_year<<"/"; cout<<car[i].car_month<<"/"<<car[i].car_day<<" "<<car[i].car_kilo<<" "; cout<<car[i].car_oil<<" "<<car[i].car_road<<" "<<car[i].box<<" "; cout<<car[i].car_oil*5+1000<<endl; m++; } } if(m==0) cout<<"不存在该轿车"<<endl; } 4、卡车类的实现 class Truck:public Base { public: void read(); void add(); void modify(int); void del(int); void insert(int); void search(); void save(); char truckID[20];//车牌号 char truck_corporation[20];//公司 double truck_year,truck_month,truck_day;//购买时间 double truck_kilo;//总公里数 double truck_oil;//耗油量 double truck_road;//养路费 double load;//载重量 }; const int MAXtruck=10; extern Truck truck[MAXtruck]; extern int count_truck; void Truck::read() { ifstream truckfile; truckfile.open("卡车信息.txt"); truckfile>>truck[count_truck].truckID>>truck[count_truck].truck_corporation; truckfile>>truck[count_truck].truck_year>>truck[count_truck].truck_month; truckfile>>truck[count_truck].truck_day>>truck[count_truck].truck_kilo; truckfile>>truck[count_truck].truck_oil>>truck[count_truck].truck_road>>truck[count_truck].load; while(!truckfile.eof()) { count_truck++; truckfile>>truck[count_truck].truckID>>truck[count_truck].truck_corporation; truckfile>>truck[count_truck].truck_year>>truck[count_truck].truck_month; truckfile>>truck[count_truck].truck_day>>truck[count_truck].truck_kilo; truckfile>>truck[count_truck].truck_oil>>truck[count_truck].truck_road>>truck[count_truck].load; } truckfile.close(); } void Truck::save() { ofstream truckfile; int i; truckfile.open("卡车信息.txt"); for(i=0;i<=count_truck-1;i++) { truckfile<<truck[i].truckID<<" "<<truck[i].truck_corporation<<" "; truckfile<<truck[i].truck_year<<" "<<truck[i].truck_month<<" "; truckfile<<truck[i].truck_day<<" "<<truck[i].truck_kilo<<" "; truckfile<<truck[i].truck_oil<<" "<<truck[i].truck_road<<" "<<truck[i].load<<endl; } truckfile.close(); } void Truck::add() { strcpy(truck[count_truck].truckID,truckID); strcpy(truck[count_truck].truck_corporation,truck_corporation); truck[count_truck].load=load; truck[count_truck].truck_year=truck_year; truck[count_truck].truck_month=truck_month; truck[count_truck].truck_day=truck_day; truck[count_truck].truck_kilo=truck_kilo; truck[count_truck].truck_oil=truck_oil; truck[count_truck].truck_road=truck_road; count_truck++; } void Truck::modify(int index) { strcpy(truck[index-1].truckID,truckID); strcpy(truck[index-1].truck_corporation,truck_corporation); truck[index-1].load=load; truck[index-1].truck_year=truck_year; truck[index-1].truck_month=truck_month; truck[index-1].truck_day=truck_day; truck[index-1].truck_kilo=truck_kilo; truck[index-1].truck_oil=truck_oil; truck[index-1].truck_road=truck_road; } void Truck::del(int index) { int i; for(i=index;i<=count_truck-1;i++) { strcpy(truck[i-1].truckID,truck[i].truckID); strcpy(truck[i-1].truck_corporation,truck[i].truck_corporation); truck[i-1].load=truck[i].load; truck[i-1].truck_year=truck[i].truck_year; truck[i-1].truck_month=truck[i].truck_month; truck[i-1].truck_day=truck[i].truck_day; truck[i-1].truck_kilo=truck[i].truck_kilo; truck[i-1].truck_oil=truck[i].truck_oil; truck[i-1].truck_road=truck[i].truck_road; } count_truck--; } void Truck::insert(int index) { int i; for(i=count_truck-1;i>=index;i--) { strcpy(truck[i+1].truckID,truck[i].truckID); strcpy(truck[i+1].truck_corporation,truck[i].truck_corporation); truck[i+1].truck_year=truck[i].truck_year; truck[i+1].truck_month=truck[i].truck_month; truck[i+1].truck_day=truck[i].truck_day; truck[i+1].truck_kilo=truck[i].truck_kilo; truck[i+1].truck_oil=truck[i].truck_oil; truck[i+1].truck_road=truck[i].truck_road; truck[i+1].load=truck[i].load; } strcpy(truck[index].truckID,truckID); strcpy(truck[index].truck_corporation,truck_corporation); truck[index].truck_year=truck_year; truck[index].truck_month=truck_month; truck[index].truck_day=truck_day; truck[index].truck_kilo=truck_kilo; truck[index].truck_oil=truck_oil; truck[index].truck_road=truck_road; truck[index].load=load; count_truck++; } void Truck::search() { int i,m=0; int cho; char corporation[20]; char ID[20]; cout<<"请选择查询方式:"<<endl; cout<<"1.按公司查询" <<endl; cout<<"2.按车牌号查询"<<endl; cin>>cho; switch(cho) { case 1: cout<<"请输入公司名称:"<<endl; cin>>corporation; break; case 2: cout<<"请输入车牌号 :"<<endl; cin>>ID; break; default: cout<<"选择1或2!"<<endl; } for(i=0;i<count_truck;i++) { if(strcmp(truck[i].truckID,ID)==0 || strcmp(truck[i].truck_corporation,corporation)==0) { cout<<"编号 车牌号 公司 购买日期 公里数 耗油量 养路费 载重量 总费用"<<endl; cout<<"["<<i+1<<"] "; cout<<truck[i].truckID<<" "<<truck[i].truck_corporation<<" "; cout<<truck[i].truck_year<<"/"<<truck[i].truck_month<<"/"<<truck[i].truck_day; cout<<" "<<truck[i].truck_kilo<<" "<<truck[i].truck_oil; cout<<" "<<truck[i].truck_road<<" "<<truck[i].load<<" "; cout<<truck[i].truck_oil*5+1500<<endl; m++; } } if(m==0) cout<<"不存在该卡车!"<<endl; } 5.客车类的实现。 class Bus:public Base { public: void read(); void add(); void modify(int); void del(int); void insert(int); void search(); void save(); char busID[20];//车牌号 char bus_corporation[20];//公司 double bus_year,bus_month,bus_day;//购买时间 double bus_kilo;//总公里数 double bus_oil;//耗油量 double bus_road;//养路费 double busload;//载客量 }; const int MAXbus=10; extern Bus bus[MAXbus]; extern int count_bus; void Bus::read() { ifstream busfile; busfile.open("客车信息.txt"); busfile>>bus[count_bus].busID>>bus[count_bus].bus_corporation; busfile>>bus[count_bus].bus_year>>bus[count_bus].bus_month; busfile>>bus[count_bus].bus_day>>bus[count_bus].bus_kilo; busfile>>bus[count_bus].bus_oil>>bus[count_bus].bus_road>>bus[count_bus].busload; while(!busfile.eof()) { count_bus++; busfile>>bus[count_bus].busID>>bus[count_bus].bus_corporation; busfile>>bus[count_bus].bus_year>>bus[count_bus].bus_month; busfile>>bus[count_bus].bus_day>>bus[count_bus].bus_kilo; busfile>>bus[count_bus].bus_oil>>bus[count_bus].bus_road>>bus[count_bus].busload; } busfile.close(); } void Bus::save() { ofstream busfile; int i; busfile.open("客车信息.txt"); for(i=0;i<=count_bus-1;i++) { busfile<<bus[i].busID<<" "<<bus[i].bus_corporation<<" "; busfile<<bus[i].bus_year<<" "<<bus[i].bus_month<<" "; busfile<<bus[i].bus_day<<" "<<bus[i].bus_kilo<<" "; busfile<<bus[i].bus_oil<<" "<<bus[i].bus_road<<" "<<bus[i].busload<<endl; } busfile.close(); } void Bus::add() { strcpy(bus[count_bus].busID,busID); strcpy(bus[count_bus].bus_corporation,bus_corporation); bus[count_bus].busload=busload; bus[count_bus].bus_year=bus_year; bus[count_bus].bus_month=bus_month; bus[count_bus].bus_day=bus_day; bus[count_bus].bus_kilo=bus_kilo; bus[count_bus].bus_oil=bus_oil; bus[count_bus].bus_road=bus_road; count_bus++; } void Bus::modify(int index) { strcpy(bus[index-1].busID,busID); strcpy(bus[index-1].bus_corporation,bus_corporation); bus[index-1].busload=busload; bus[index-1].bus_year=bus_year; bus[index-1].bus_month=bus_month; bus[index-1].bus_day=bus_day; bus[index-1].bus_kilo=bus_kilo; bus[index-1].bus_oil=bus_oil; bus[index-1].bus_road=bus_road; } void Bus::del(int index) { int i; for(i=index;i<=count_bus-1;i++) { strcpy(bus[i-1].busID,bus[i].busID); strcpy(bus[i-1].bus_corporation,bus[i].bus_corporation); bus[i-1].busload=bus[i].busload; bus[i-1].bus_year=bus[i].bus_year; bus[i-1].bus_month=bus[i].bus_month; bus[i-1].bus_day=bus[i].bus_day; bus[i-- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 车辆 信息管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文