版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。《面向对象技术实训》课程实训报告客运站信息管理系统姓名: 班级:学号:指导教师:成绩:完成时间:12月完成地点:S4111设计题目(问题)描述和要求某客运站因春运即将到来,客流量急剧增加,工作人员无法按时完成服务工作,不能满足乘客的出行需求,于是想开发一套智能客运站系统,实现工作人员后台操作,乘客自主选票,订票,退票的程序,以缓解出行压力。要求:增加车辆信息更新车辆信息删除车辆信息乘客查票乘客买票乘客退票、2系统分析根据问题描述和要求,系统要求能够编写程序实现输入、输出、查询、增加、删除、修改、取消操作等功能,这些功能需要调用车辆类的成员函数实现。根据案例需求能够定义一个车辆类,车辆的基本信息有车辆编号、车辆路线、票价、余票和发车时间。由于需要对车辆信息进行读入和存储,在程序中需要文件的输入输出操作。先从相应的文件中读入车辆,管理员能够对信息处理后,在退出系统的时候将已修改资料重新存储到原文件中去。3设计3.1Bus类的设计3.1.1数据成员 intid;//车辆编号 inttag;//车辆数量 charroad[20];//车辆路线3.1.2函数成员及其实现思路(1)获取行车路线,即返回车辆路线成员变量road的值char*Bus::getroad(){returnroad;}获取车辆编号,即返回车辆成员变量id的值intBus::getid(){returnid;}获取车辆数量,即返回车辆成员变量tag的值intBus::gettag(){returntag;}获取用户名,返回用户名name的值char*User::getname(){returnname;}获取用户人数,返回tag的值intUser::gettag(){returntag;}获取用户编号,返回id的值intUser::getid(){returnid;}(2)设置车辆路线,即设置车辆成员变量road的值road=newroad。voidUser::setroad(charro[]){strcpy(road,ro)};3.2User类的设计3.2.1数据成员 inttag;//用户总数 intid;//用户编号 charname[10];//用户姓名3.2.2函数成员及其实现思路(1)voidUser::adduser(intn,char*na)//用户注册信息添加功能的设计思路是:用户输入其型姓名;系统分配用户编号;(2)voidUser::ytickets(intbusid)//用户订票功能实现订票功能的设计思路是:用户选择要订票的汽车编号;系统检索汽车编号,若汽车存在则分配订单号并提醒订票成功;(3)intUser::ntickets(intbusid)//用户取消订单退票设计思路如下:用户输入需要退票的汽车编号;系统检索车辆编号,成功则完成退票,反之退票失败;(4)voidUser::show()//输出用户所要信息。设计思路如下:包括用户姓名,编号等基本信息;系统检索用户操作信息,用户当前所有订单;3.3主程序的设计3.3.1全局变量、全局函数的设计(1)voidB_Data::busdata()//管理员向更新系统车辆信息。设计思路如下:调用voidBus::addbus()函数,添加车辆信息;调用voidBus::setname()函数,更新车辆信息;调用Bus*B_Data::search()函数,查找车辆信息;调用voidBus::show()函数,显示用户信息;调用voidBus::del()函数,删除车辆信息;(2)voidU_Data::userdata()//管理员向更新用户信息。调用voidUser::addbus()函数,添加用户信息;调用voidUser::setname()函数,更新用户信息;调用Bus*U_Data::search()函数,查找用户信息;调用voidUser::show()函数,显示用户信息;调用voidUser::del()函数,删除用户信息;3.2.2主函数设计在主函数中调用voiduserlogin()函数和voidmanagelogin()函数,实现用户使用功能和管理员管理功能,分别使用上述两函数实现。(1)某操作算法流程主程序调用流程图4调试分析、测试结果4.1.1分析1.设计的时候,会出现很多错误,应细心检查数据成员及成员函数是否完整,定吗编辑过程中是否出现拼写错误。2.在简单地基础上,逐步进行添加数据成员,进而添加相应功能的成员函数,实现设计预期的结果。3.编程就是一个不断完善的过程,先搭建框架、逐步扩充,由简到繁,最后完善。边编程,边调试,边扩充。4.1.2测试结果:执行结果:5小结经过对车辆管理系统的设计,自己学会独立运用所学知识,加强了对基础知识的掌握并进一步加强对较大程序的实现技能。在设计之初,首先要构思好系统应具有的功能,比如管理员添加,删除,更新车辆及用户信息,用户查询,订票,退票等等,根据要得到的信息,设计要实现的操作,即对这些信息的使用(成员函数)。准备好之后,根据C的知识,进行数据的类型选择,根据定义好的类型,选择相应的类型的函数,进行操作。在简单地程序之上,逐渐扩充,实现更多的功能。在调试的过程会遇到不少大大小小的问题,书写认真很重要,细心更重要,即便是检查错误,也要细心,经常见到的就是输入法导致的中英字符混用。编程时一个细心的过程,书写的规范,使得查看更方便。附录//*****************************************************************//*bus.h
类声明头文件
#ifndefBUS_H_#defineBUS_H_#include<iostream>#include<iomanip>#include<string>#include<fstream>#include<stdlib.h>constintmaxuser=100;constintmaxche=100;constintmaxjie=2;usingnamespacestd;#endif
//*****************************************************************//*sbus.h类声明头文件
#ifndefSBUS_H_#defineSBUS_H_#include"bus.h"classUser{public: User(); intgettag(); intgetid(); intntickets(intbusid); intgobus[maxjie]; char*getname();voidsetname(charna[]); voiddelbus(); voidadduser(intn,char*na); voidytickets(intbusid); voidshow();private: inttag; intid; charname[10];};classU_Data{public: U_Data(); ~U_Data(); intadduser(char*na); voidshow(); voidusershow(intuserid);voiduserdata(); User*search(intuserid);private: inttop; intmaxid; Useruse[maxuser];};classBus{public: Bus(); intgetid(); intgettag(); intytickets(); char*getname(); voidsetname(charna[]); voiddelbus(); voidaddbus(intn,char*na); voidntickets(); voidshow();private: intid; inttag; intonshelf; charname[20];};classB_Data{public: B_Data(); ~B_Data(); intaddbus(char*na); voidbusdata(); voidshow(); Bus*search(intbusid);private: inttop; intmaxid; Busbus[maxche];};#endif
//*****************************************************************//*sbus.cpp类声明头文件
#include"sbus.h"User::User(){id=0;tag=0;for(inti=0;i<maxjie;i++) gobus[i]=0;}char*User::getname(){returnname;}intUser::gettag(){returntag;}intUser::getid(){returnid;}voidUser::setname(charna[]){strcpy(name,na);}voidUser::delbus(){for(inti=0;i<maxjie;i++){if(gobus[i]!=0){cout<<"用户"<<name<<"取消订单失败,请检查操作是否正确!"<<endl; return;}}tag=1;cout<<"用户删除成功"<<endl;}voidUser::adduser(intn,char*na){tag=0;id=n;strcpy(name,na);for(inti=0;i<maxjie;i++)gobus[i]=0;cout<<endl<<"用户添加成功,用户编号为:"<<id<<endl;cout<<"请牢记用户编号,这是你在系统中的登陆账号!"<<endl;}voidUser::ytickets(intbusid){for(inti=0;i<maxjie;i++){if(gobus[i]=busid) cout<<"订票成功!"<<endl;return;}}intUser::ntickets(intbusid){for(inti=0;i<maxjie;i++){if(gobus[i]==busid){gobus[i]=0; cout<<"订单取消成功!"<<endl; return1;}}return0;}voidUser::show(){cout<<setw(5)<<id<<setw(10)<<name<<setw(24)<<"订单号为:";for(inti=0;i<maxjie;i++)if(gobus[i]!=0) cout<<"["<<gobus[i]<<"]"; cout<<endl;}U_Data::U_Data(){Users;top=0;fstreamfile("user.txt",ios::in);while(1){file.read((char*)&s,sizeof(s));if(!file)break;top++;use[top]=s;}maxid=use[top].getid();file.close();}intU_Data::adduser(char*na){top++;maxid++;use[top].adduser(maxid,na);return1;}User*U_Data::search(intuserid){for(inti=1;i<=top;i++) if(use[i].getid()==userid&&use[i].gettag()==0) return&(use[i]); returnNULL;}voidU_Data::show(){if(top==0){cout<<endl<<"没有用户记录"<<endl; return;}for(inti=1;i<=top;i++)use[i].show();}voidU_Data::usershow(intuserid){use[userid].show();}voidU_Data::userdata(){charchoice=1;charrname[20];intuserid;User*r;while(choice!='0'){cout<<endl<<"********************用户管理*********************"<<endl; cout<<"1.增加用户信息"<<endl<<"2.修改用户信息"<<endl<<"3.删除用户信息"<<endl<<"4.查找用户信息"<<endl<<"5.显示所有用户"<<endl<<"0.退出用户信息系统"<<endl<<"请选择您要进行的操作:"; cin>>choice; switch(choice) { case'1': cout<<"输入用户姓名:"; cin>>rname; adduser(rname); break;case'2': cout<<"输入用户编号:"; cin>>userid; r=search(userid); if(r==NULL) { cout<<endl<<"不存在编号为:"<<userid<<"的用户"<<endl; break; } cout<<"输入新的用户名:"; cin>>rname; r->setname(rname); break; case'3': cout<<"输入用户编号:"; cin>>userid; r=search(userid); if(r==NULL) { cout<<endl<<"不存在编号为:"<<userid<<"的用户"<<endl; break; } r->delbus(); break; case'4': cout<<"输入用户编号:"; cin>>userid; r=search(userid); if(r==NULL) { cout<<"该用户不存在!"<<endl; break; } r->show(); break; case'5': show(); break; case'0': break;default: cout<<"输入有误,请重新输入!"<<endl; }}}U_Data::~U_Data(){ fstreamfile("user.txt",ios::out);for(inti=1;i<=top;i++) if(use[i].gettag()==0) file.write((char*)&(use[i]),sizeof(use[i])); file.close();}Bus::Bus(){id=0;tag=1;onshelf=1;}char*Bus::getname(){returnname;}intBus::getid(){returnid;}intBus::gettag(){returntag;}voidBus::setname(charna[]){strcpy(name,na);}voidBus::delbus(){onshelf=1;tag=1;}voidBus::addbus(intn,char*na){tag=0;id=n;strcpy(name,na);onshelf=1;cout<<endl<<"添加车辆成功!车辆编号为:"<<id<<endl;cout<<"请牢记车辆编号!"<<endl;}intBus::ytickets(){if(onshelf==1){onshelf=0;return1;}return0;}voidBus::ntickets(){onshelf=1;}voidBus::show(){ cout<<setw(10)<<id<<setw(20)<<name<<setw(10)<<(onshelf==1?"可定":"已发车")<<endl;}B_Data::B_Data(){Busb;top=0;fstreamfile("bus.txt",ios::in);while(1){file.read((char*)&b,sizeof(b));if(!file)break;top++;bus[top]=b;}maxid=bus[top].getid();file.close();}intB_Data::addbus(char*na){top++;maxid++;bus[top].addbus(maxid,na);return1;}Bus*B_Data::search(intbusid){ for(inti=1;i<=top;i++) if(bus[i].getid()==busid&&bus[i].gettag()==0) return&(bus[i]); returnNULL;}voidB_Data::busdata(){charchoice='1';charbname[40];intbusid;Bus*b;while(choice!='0'){cout<<endl<<"*********************车辆管理*********************"<<endl; cout<<"1.增加车辆信息"<<endl<<"2.修改车辆信息"<<endl<<"3.删除车辆信息"<<endl<<"4.查找车辆信息"<<endl<<"5.显示所有车辆"<<endl<<"0.退出车辆信息系统"<<endl<<"请选择您要进行的操作:"; cin>>choice; switch(choice) { case'1': cout<<"输入车辆路线:"; cin>>bname; addbus(bname); break;case'2': cout<<"输入车辆编号:"; cin>>busid; b=search(busid); if(b==NULL) { cout<<endl<<"不存在编号为:"<<b->getid()<<"的车辆"<<endl; break; } cout<<"输入新的路线:"; cin>>bname; b->setname(bname); break; case'3': cout<<"输入车辆编号:"; cin>>busid; b=search(busid); if(b=NULL) { cout<<endl<<"不存在编号为:"<<b->getid()<<"的车辆"<<endl; break; } b->delbus(); break; case'4': cout<<"输入车辆编号:"; cin>>busid; b=search(busid); if(b=NULL) { cout<<endl<<"不存在编号为:"<<b->getid()<<"的车辆"<<endl; break; } b->show(); break; case'5': show(); break; case'0': break;default: cout<<"输入有误,请重新输入!"<<endl; }}}voidB_Data::show(){if(top==0){cout<<endl<<"没有车辆记录"<<endl;return;}for(inti=0;i<=top;i++)if(bus[i].gettag()==0) bus[i].show();}B_Data::~B_Data(){ fstreamfile("bus.txt",ios::out); for(inti=1;i<=top;i++) if(bus[i].gettag()==0) file.write((char*)&(bus[i]),sizeof(bus[i])); file.close();}//*****************************************************************//*main.cpp主程序文件#include"sbus.h"voiduserlogin(){U_DataUserDB;User*r;B_DataBusDB;Bus*b;chartempname[20];charchoice='1';intbid,rid;while(choice!='0'){cout<<endl<<"************************用户专区************************"<<endl;cout<<"1.用户登录"<<endl<<"2.用户注册"<<endl<<"0.退出"<<endl<<"请选择:"<<endl;cin>>choice;switch(choice){case'1': cout<<"输入用户编号:"; cin>>rid; r=UserDB.search(rid); if(r==NULL) { cout<<"用户不存在"<<endl; } else choice='0'; break;case'2': cout<<endl<<"输入用户姓名:"<<endl; cin>>tempname; UserDB.adduser(tempname); break; case'0': cout<<"欢迎使用!"<<endl; return;default: cout<<"输入有误,请重新输入!"<<endl;}}choice='1';while(choice!='0'){cout<<endl<<"************************订票专区************************"<<endl;cout<<"1.订票"<<endl<<"2.退票"<<endl<<"3.查看订单"<<"0.退出"<<endl<<"请选择:"<<endl;cin>>choice;switch(choice){case'1': cout<<"输入车辆编号:"; cin>>bid; b=BusDB.search(bid); if(b==NULL) { cout<<"车辆不存在"<<endl; break; } if(b->ytickets()==0) { cout<<"车辆"<<b->getname()<<"已发出"<<endl; break; } r->ytickets(b->getid()); cout<<endl<<"订票成功"<<endl; break;case'2': cout<<endl<<"输入想要退票车辆的编号:"<<endl; cin>>bid; b=BusDB.search(bid); if(b==NULL) { cout<<"不存在编号为"<<b->getid()<<"的车
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (新教材)2026人教版三年级下册数学 4 小讲堂 教学课件
- 2026年专利买卖合同(1篇)
- 2025 网络基础之能源网络的电网故障快速恢复网络案例课件
- 2026年农地租用合同(1篇)
- 文旅设备更新可行性研究报告
- 干燥设备生产项目可行性研究报告
- 行政处罚的种类和适用条件
- 高中信息技术信息系统在水产育苗场水质调控与鱼苗生长跟踪中的应用课件
- 2025 高中信息技术数据与计算之算法的模拟进化算法课件
- 2025 高中信息技术数据与计算之数据在智能医疗远程监护系统优化中的应用课件
- 五年级下册字谜故事带答案
- 中药学重点完整版本
- GB/T 29038-2024薄壁不锈钢管道技术规范
- 《农业经营与管理》考试历年真题考试题库(职校用)
- 实验诊断概论课件
- 废旧纸再生利用项目计划书
- 群众工作方面存在问题及整改措施
- 数控技术实习报告3篇
- 三年级全册道德与法治教案
- 高原性低氧症护理
- 金华市优力塑业有限公司年产36万套吹塑盒技改项目环评报告
评论
0/150
提交评论