版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象技术实训课程实训报告客运站信息管理系统姓 名:班 级:学 号:指导教师:成 绩:完成时间: 2016年 12月完成地点: S4111设计题目(问题)描述和要求某客运站因春运即将到来,客流量急剧增加,工作人员无法按时完成服务工 作,不能满足乘客的出行需求,于是想开发一套智能客运站系统, 实现工作人员 后台操作,乘客自主选票,订票,退票的程序,以缓解出行压力。要求:(1)增加车辆信息(2)更新车辆信息(3)删除车辆信息(4)乘客查票(5)乘客买票(6)乘客退票、2系统分析根据问题描述和要求,系统要求能够编写程序实现输入、输出、查询、增加、 删除、修改、取消操作等功能,这些功能需要调用车辆类
2、的成员函数实现。根据案例需求可以定义一个车辆类,车辆的基本信息有车辆编号、车辆路线、 票价、余票和发车时间。由于需要对车辆信息进行读入和存储,在程序中需要文 件的输入输出操作。先从相应的文件中读入车辆,管理员可以对信息处理后,在 退出系统的时候将已修改资料重新存储到原文件中去。3设计3.1Bus类的设计clBn?4publd.c 二±nt getid(J:int getri:Fig < > ;in t ±±cket=s < > ;c:tiar * ct n-an J ;uold etzn-ame( cH-ar n-aI J J ;ucilc
3、l del bus (),uci:Lcl addbu5(±ntz n chaK * nm);void n tz± d< p"tz 与 I);void sho v«( ) 7itctior ndmc?2C;数据成员int id; /车辆编号int tag; /车辆数量char road20; / 车辆路线函数成员及其实现思路(1)获取行车路线,即返回车辆路线成员变量road的值char * Bus:getroad() retur n road;获取车辆编号,即返回车辆成员变量id的值int Bus:getid() return id;获取车辆数量,即
4、返回车辆成员变量tag的值int Bus:gettag()return tag;获取用户名,返回用户名name的值char * User:get name() return n ame;获取用户人数,返回tag的值int User:gettag() retur n tag;获取用户编号,返回id的值int User:getid() return id;(2)设置车辆路线,即设置车辆成员变量road的值road=newroadvoid User:setroad(char ro) strcpy(road,ro);Rjoid d eXIsus (); vo±dir»tuni rl
5、 * tz cl<eI-£ f i n 1 uoid s ho u(y;3.2 User类的设计Liu»±lI)>z)n v G: It -ar*til 11 rlpr-iuate 二X H r Lag;±n± id ;chaa nantef d 01 ;321数据成员i nt tag; /用户总数int id; /用户编号char n ame10; / 用户函数成员及其实现思路(1) void User:adduser(int n,char * na)/用户注册信息 添加功能的设计思路是:用户输入其型;系统分配用户编号;(2) v
6、oid User:ytickets(int busid)/用户订票功能实现订票功能的设计思路是: 用户选择要订票的汽车编号; 系统检索汽车编号,若汽车存在则分配订单号并提醒订票成功; ( 3) int User:ntickets(int busid)/用户取消订单退票设计思路如下: 用户输入需要退票的汽车编号; 系统检索车辆编号,成功则完成退票,反之退票失败; ( 4) void User:show()/ 输出用户所要信息。设计思路如下: 包括用户,编号等基本信息; 系统检索用户操作信息,用户当前所有订单;3.3 主程序的设计3.3.1 全局变量、全局函数的设计(1)void B_Data:b
7、usdata()/ 管理员向更新系统车辆信息。 设计思路如下:调用 void Bus:addbus() 函数,添加车辆信息;调用 void Bus:setname() 函数,更新车辆信息;调用 Bus * B_Data:search() 函数,查找车辆信息;调用 void Bus:show() 函数,显示用户信息;调用 void Bus:del() 函数,删除车辆信息;(2) void U_Data:userdata()/ 管理员向更新用户信息。调用 void User:addbus() 函数,添加用户信息;调用 void User:setname() 函数,更新用户信息;调用 Bus * U
8、_Data:search() 函数,查找用户信息;调用 void User:show() 函数,显示用户信息;调用 void User:del() 函数,删除用户信息;3.2.2 主函数设计 在主函数中调用 void userlogin() 函数和 void managelogin() 函数, 实现用户 使用功能和管理员管理功能,分别使用上述两函数实现。(1) 某操作算法流程4调试分析、测试结果4.1.1 分析1. 设计的时候,会出现很多错误,应细心检查数据成员及成员函数是否完 整,定吗编辑过程中是否出现拼写错误。2. 在简单地基础上,逐步进行添加数据成员,进而添加相应功能的成员函 数,实现设
9、计预期的结果。3. 编程就是一个不断完善的过程,先搭建框架、逐步扩充,由简到繁,最 后完善。边编程,边调试,边扩充。测试结果:执行结果: ' E:1tEzuoyeDebugzuoye.e«eIvf u 2 吋 H 百 if P 注 it* 暫 H if * * if £ ' I Einujy 2 祜誉 片 2 < tf .p . # f ” y 中 些 苗 if诂 憤 加 < y H ri* 出区 學统 去占縈: 月工鼎<同 £25小结通过对车辆管理系统的设计,自己学会独立运用所学知识,加强了对基础知 识的掌握并进一步加强对较大程
10、序的实现技能。在设计之初,首先要构思好系统应具有的功能,比如管理员添加,删除,更 新车辆及用户信息,用户查询,订票,退票等等,根据要得到的信息,设计要实 现的操作,即对这些信息的使用(成员函数)。准备好之后,根据C的知识,进 行数据的类型选择,根据定义好的类型,选择相应的类型的函数,进行操作。在 简单地程序之上,逐渐扩充,实现更多的功能。在调试的过程会遇到不少大大小 小的问题,书写认真很重要,细心更重要,即便是检查错误,也要细心,经常见 到的就是输入法导致的中英字符混用。编程时一个细心的过程,书写的规,使得查看更方便。附录*/ * bus.h 类声明头文件#ifndef BUS_H_#defi
11、ne BUS_H_#include<iostream>#include<iomanip>#include<string>#include<fstream>#include<stdlib.h>const int maxuser=100;const int maxche=100;const int maxjie=2;using namespace std;#endif*/ * sbus.h 类声明头文件#ifndef SBUS_H_#define SBUS_H_#include"bus.h"class Userpubl
12、ic:User();int gettag();int getid();int ntickets(int busid);int gobusmaxjie;char * getname();void setname(char na);void delbus();void adduser(int n,char * na);void ytickets(int busid);void show();private:int tag;int id;char name10;class U_Datapublic:U_Data();U_Data();int adduser(char * na);void show(
13、);void usershow(int userid);void userdata();User * search(int userid); private:int top;int maxid;User usemaxuser;class Buspublic:Bus();int getid();int gettag();int ytickets();char * getname(); void setname(char na);void delbus();void addbus(int n,char * na); void ntickets();void show();private:int i
14、d;int tag;int onshelf;char name20;class B_Datapublic:B_Data();B_Data();int addbus(char * na); void busdata();void show();Bus * search(int busid); private:int top;int maxid;Bus busmaxche;#endif/*/ * sbus.cpp 类声明头文件#include"sbus.h"User:User()id=0;tag=0;for(int i=0;i<maxjie;i+) gobusi=0;ch
15、ar * User:getname()return name;int User:gettag()return tag;int User:getid()return id;void User:setname(char na)strcpy(name,na);void User:delbus()for(int i=0;i<maxjie;i+)if(gobusi!=0)"vvendl;coutvv"用户"vvnamevv"取消订单失败,请检查操作是否正确!return;tag=1;coutvv" 用户删除成功 "vvendl;void
16、User:adduser(int n,char * na)tag=0;id=n;strcpy(name,na);for(int i=0;i<maxjie;i+)gobusi=0;cout<<endl<<" 用户添加成功,用户编号为: "<<id<<endl; cout<<" 请牢记用户编号,这是你在系统中的登陆账号! "<<endl; void User:ytickets(int busid)for(int i=0;i<maxjie;i+) if(gobusi=busid
17、)cout<<" 订票成功! "<<endl;return;int User:ntickets(int busid)for(int i=0;i<maxjie;i+)if(gobusi=busid)gobusi=0;cout<<" 订单取消成功! "<<endl;return 1;return 0;void User:show() cout<<setw(5)<<id<<setw(10)<<name<<setw(24)<<"
18、 订单号为: for(int i=0;i<maxjie;i+)if(gobusi!=0)cout<<""<<gobusi<<"" cout<<endl;U_Data:U_Data()User s;top=0;fstream file("user.txt",ios:in); while(1)file.read(char *)&s,sizeof(s);if(!file) break;top+; usetop=s;maxid=usetop.getid(); file.close(
19、);int U_Data:adduser(char * na)top+;maxid+;usetop.adduser(maxid,na);return 1;User * U_Data:search(int userid)for(int i=1;i<=top;i+) if(usei.getid()=userid&&usei.gettag()=0)return &(usei);return NULL;void U_Data:show()if(top=0)cout<<endl<<" 没有用户记录 "<<endl; r
20、eturn;for(int i=1;i<=top;i+) usei.show();void U_Data:usershow(int userid)useuserid.show();void U_Data:userdata()char choice=1;char rname20;int userid;User * r;while(choice!='0')*"<<endl;cout<<endl<<"*cout<<"1. 增加用户信息 "<<endl<<"2
21、. 修改用户信息 "<<endl<<"3. 删除用户信息 "<<endl<<"4. 查找用 户信息 "<<endl<<"5. 显示所有用户 "<<endl<<"0. 退出用户信息系统 "<<endl<<" 请选择您要进行的操作: "cin>>choice;switch(choice)case '1':cout<<" 输
22、入用户: "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-
23、>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>
24、;>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()fstream file("user.txt",ios:out);for(int i=1;i<
25、=top;i+) if(usei.gettag()=0) file.write(char *)&(usei),sizeof(usei); file.close(); Bus:Bus()id=0;tag=1; onshelf=1;char * Bus:getname()return name;int Bus:getid() return id;int Bus:gettag()return tag;void Bus:setname(char na) strcpy(name,na); void Bus:delbus()onshelf=1;tag=1;void Bus:addbus(int n
26、,char * na)tag=0;id=n;strcpy(name,na);onshelf=1;cout<<endl<<" 添加车辆成功!车辆编号为 :"<<id<<endl; cout<<" 请牢记车辆编号 !"<<endl;int Bus:ytickets()if(onshelf=1)onshelf=0;return 1;return 0;void Bus:ntickets()onshelf=1;void Bus:show()已发车 ")<<endl; co
27、ut<<setw(10)<<id<<setw(20)<<name<<setw(10)<<(onshelf=1?" 可定B_Data:B_Data()Bus b;top=0;fstream file("bus.txt",ios:in);while(1)file.read(char *)&b,sizeof(b);if(!file) break;top+; bustop=b;maxid=bustop.getid(); file.close();int B_Data:addbus(char *
28、 na) top+;maxid+;bustop.addbus(maxid,na);return 1;Bus * B_Data:search(int busid)for(int i=1;i<=top;i+) if(busi.getid()=busid&&busi.gettag()=0) return &(busi);return NULL; void B_Data:busdata() char choice='1'char bname40;int busid;Bus *b;while(choice!='0')cout<<e
29、ndl<<"*车辆管理*1"<<endl;cout<<"1. 增加车辆信息 "<<endl<<"2. 修改车辆信息 "<<endl<<"3. 删除车辆信息 "<<endl<<"4. 查找车 辆信息 "<<endl<<"5. 显示所有车辆 "<<endl<<"0. 退出车辆信息系统 "<<en
30、dl<<" 请选择您要进行的操作: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->geti
31、d()<<" 的车辆 "<<endl; break;cout<<" 输入新的路线: cin>>bname; b->setname(bname);break;case '3':cout<<" 输入车辆编号: " cin>>busid;b=search(busid);if(b=NULL)cout<<endl<<" 不存在编号为: "<<b->getid()<<" 的车辆 &
32、quot;<<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();bre
33、ak;case '0':break;default:cout<<" 输入有误,请重新输入! "<<endl;void B_Data:show()if(top=0)cout<<endl<<" 没有车辆记录 "<<endl;return;for(int i=0;i<=top;i+)if(busi.gettag()=0)busi.show();B_Data:B_Data()fstream file("bus.txt",ios:out);for(int i=1;
34、i<=top;i+)if(busi.gettag()=0)file.write(char *)&(busi),sizeof(busi); file.close();/*/ * main.cpp 主程序文件 #include"sbus.h"void userlogin()U_Data UserDB;User * r;B_Data BusDB;Bus * b;char tempname20;char choice='1' int bid,rid; while(choice!='0') cout<<endl<<
35、"*用户专区 *"<<endl;cout<<"1. 用户登录 "<<endl<<"2. cin>>choice;用户注册 "<<endl<<"0. 退出 "<<endl<<" 请选择: "<<endl;switch(choice)case '1':cout<<" 输入用户编号: cin>>rid;r=UserDB.search(
36、rid);if(r=NULL)cout<<" 用户不存在 "<<endl;elsechoice='0'break;case '2':cout<<endl<<" 输入用户: "<<endl;cin>>tempname;UserDB.adduser(tempname);break;case '0':cout<<" 欢迎使用! "<<endl; return;default:cout<<
37、" 输入有误,请重新输入! choice='1' while(choice!='0') cout<<endl<<"*"<<endl;订票专区*1"<<endl;"<<endl;coutvv"1. 订票"vvendlvv"2.退票"<<endlvv"3.查看订单"<<"0.退出"<<endl<<"请选择:cin>&
38、gt;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
39、(b->getid();cout<<endl<<" 订票成功 "<<endl;break;case '2':cout<<endl<<" 输入想要退票车辆的编号: "<<endl;cin>>bid; b=BusDB.search(bid); if(b=NULL)cout<<" 不存在编号为 "<<b->getid()<<" 的车辆 "<<endl; break;b->ntickets(); r->ntickets(b->getid();cout<<" 车辆已返回 "<<endl;break;case'3':UserDB.usershow(rid); break;case '0':cou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届广东省佛山一中石门中学顺德一中国华纪中高二上数学期末经典试题含解析
- 医疗数据安全事件应急处置中的数据销毁规范
- 胃癌规培课件
- 医疗数据备份恢复的区块链保障体系
- 肿瘤相关预防课件
- 现代电工电子技术 第3版 课件 第10章 直流稳压电源
- 医疗数据共享的责任保险机制
- 医疗数据共享的知识产权运营策略
- 医疗数据共享的患者知情同意实践
- 肾结石伴积水课件
- 专项基金合作协议书
- 单人徒手心肺复苏操作评分表(医院考核标准版)
- 国家预算实验报告
- 蒸汽品质检测仪安全操作规定
- 设备综合效率OEE统计表(使用)
- 附件1:中国联通动环监控系统B接口技术规范(V3.0)
- 闭合性颅脑损伤病人护理查房
- 《立血康软胶囊研究6400字(论文)》
- GB/T 19216.21-2003在火焰条件下电缆或光缆的线路完整性试验第21部分:试验步骤和要求-额定电压0.6/1.0kV及以下电缆
- 10kV交联聚乙烯电缆热缩终端头制作作业指导书
- 活体动物体内成像技术课件
评论
0/150
提交评论