面向对象课程设计-列车车次管理系统.doc_第1页
面向对象课程设计-列车车次管理系统.doc_第2页
面向对象课程设计-列车车次管理系统.doc_第3页
面向对象课程设计-列车车次管理系统.doc_第4页
面向对象课程设计-列车车次管理系统.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

仲恺农业工程学院课程设计报告*课 程 面向对象课程设计姓 名 院 (系) 计算机科学与工程学院 专业年级 学 号 指导教师 日 期 2011年8月29日-2011年9月9日仲恺农业工程学院教务处制目 录一、需求与功能分析3二、概要设计3(一)、系统框架图3(二)、系统类图4三、具体设计5(一)、类的设计5(1)、Class Bus_infor5(2)、Bus_link5(二)主函数6四、程序运行与测试结果61、主界面截图:62、录入车票信息操作截图:73浏览车票信息操作截图:74查询车票信息操作截图:75、删除车票信息操作截图:86、修改车票信息操作截图:87、订购车票信息操作截图:98、退还车票信息操作结果截图:99、退出系统操作截图:9五、总结与展望9六、程序代码10一、需求与功能分析 时代在发展,计算机软件和系统日趋成熟并应用于各行各业。在中国,火车票的发售与管理一直是一个难题,而建立一个火车票订票管理系统是一个很好的解决方法。作为计算机应用的一部分,使用计算机对火车票信息进行管理,具有手工管理所无法比拟的优点,例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、出错率低等各种优点。这些优点能大大提高列车信息管理的效率,也正体现了火车票的科学化正规管理。我的这个系统采用的编程语言是C+,实现了以下功能:1、可操作的界面 2、增添、修改、删除、查找列车信息、票务信息 3、订票退票功能二、概要设计(一)、系统框架图班级管理系统列车信息操作车票使用操作添加车票信息删除车票信息修改车票信息浏览车票信息订购车票退还车票保存信息、退出系统 (二)、系统类图数据成员车的额定载量终点站已订票人数起始站车次号开车时间到达时间ClassBus_infor成员函数void input()void input(ifstream & is)void output()void output(ofstream & os)GetTime_start()GetTime_end()ShowTime()addr()Order_tickt(int n)Unorder_tickt(int n)Get_all_tickted()Get_tickted()Get_bus_order()class Bus_linkBus_link()void input()void mend()void del()int find()void found()void show()void Order()void Unorder()void save()void begin()void clear()char mainmenu()成员函数数据成员Bus_infor *headint key三、具体设计(一)、类的设计这个程序我设计了两个类,一个是列车信息类:Class Bus_infor,另一个是利用用于操作数据的class Bus_link类。(1)、Class Bus_infor这个类的数据成员有int No(车次号)、static int Bus_No(给录入的车次默认编号)、 char start20(起点站)、char end20(终点站)、int Bus_order(车次)、int all_tickted(车的额定载量)、int tickted(已定票人数)、int Hour_start、Minute_start ,Hour_end,Minute_end(发车时间,行车时间)。囊括了所需要的全部列车信息。类的成员函数有Bus_infor();Bus_infor();int Get_no();int Get_all_tickted();int Get_tickted();int Get_bus_order();char *Get_start();char *Get_end();void addr(); void Order_tickt(int n);void Unorder_tickt(int n);void GetTime_start();void GetTime_end();void ShowTime();void Show_infor();void input();void input(ifstream & is);void output();void output(ofstream & os);各个成员函数把把每一个功能细化。Bus_infor();Bus_infor()为类的构造和析构函数,构造和析构分别对Bus_No这个默认编号进行自增或自减。int Get_no();int Get_all_tickted();int Get_tickted();int Get_bus_order();char *Get_start();char *Get_end();这几个函数分别是返回各个数据成员。void addr()为输入起始站和终点站的函数。void Order_tickt(int n);void Unorder_tickt(int n)为订票与退票的函数。void GetTime_start();void GetTime_end()则分别为输入发车时间和行车时间的函数,void Bus_infor:ShowTime()为输出时间的函数。(2)、Bus_link这个类的设计是用链表对数据进行存储、操作,以完成查找等操作。它的数据成员只有类对象作为链表的头指针的Bus_infor *head和用于标记是否已经进行过操作的int key两个。类的成员函数为Bus_link()、void input()、void mend()、void del()、int find、int find1、void found()、void show()、void Order()、void Unorder()、void save()、void begin()、void clear()、char mainmenu()、int getkey()、void setkey(int k)。Bus_link()是这个类的构造函数,是建立一个带头接点的单链表。void begin()是main函数下作为程序开始的函数,在里面构造了Bus_infor类的两个对象*p和*p2,p=head,新建外部文件bus.txt,is为输入流,os为输出流,按链表方式存储。char mainmenu()是主界面的函数,用于用户操作,输入一个字符进行选择。void input()是mainmenu()下的第一个功能录入车票信息,构建Bus_infor对象 *p,*p2,p=head,令p指向其前驱,调用Bus_infor中的input()函数输入数据存入链表。show()为浏览车票信息,即输出已经录入的的列车信息一样是在链表中调用Bus_infor的output()进行输出。found()是mainmenu()中查询车票信息的操作分别按车次查找和终点站查找两种方式,把输入内容传入find()函数,在find函数中用了查找到匹配信息,调用输出函数。del()函数是mainmenu()中的删除车票信息的操作,先输入想删除车次号,在调用find1()函数查找信息,确认查找到,就删除并释放结点。mend()是mainmenu()中修改车票信息操作的函数,与前面一个一样是先输入查找内容,调用find1()查找信息找到内容的借点之后就调用Bus_infor的input()函数重新输入内容。Order()是mainmenu()中定购车票信息的操作的函数输入车次号之后按find1()查找,查找到了就输入要买票数,判定是否超过剩下票数,没有超过就成功写入订票。Unorder()为mainmenu()中退还车票信息的操作的函数和订票的代码差不多。设计了key这个变量作为一个标记是否进行过操作,写了getkey()和setkey(int k)两个函数,用于返回key值和设定key值,在每一个操作之后就调用setkey(1),把key设定为1,表示已经操作过,未保存。只在save()函数中把已修改的信息写入外部文件中,setkey(0),表示已经保存过。最后的clear()是释放链表空间的函数。(二)主函数主函数只定义了一个Bus_link的对象pp,之后执行pp.begin()用一个循环执行pp.mainmenu(),给用户进行操作。四、程序运行与测试结果1、主界面截图:2、录入车票信息操作截图:选择8保存之后就出现bus.txt的外部文件存储信息,结果截图:3浏览车票信息操作截图:4查询车票信息操作截图:(1)、按车次查询:(2)、按终点站查找:5、删除车票信息操作截图:再次查询已经没有102车次的列车信息:6、修改车票信息操作截图:7、订购车票信息操作截图:超过额定人数无法订票的情况:8、退还车票信息操作结果截图:9、退出系统操作截图:key此时等于0,操作的结果未保存,退出时提示是否保存:五、总结与展望这次课程设计的内容用到了上学期学到的面向对象编程,我选择的面向对象语言是学过的C+,选择的题目是列车车次管理系统。一开始选到这个题目,我就初步开始做需求和功能分析,把这个系统的需求和功能划分为:拥有良好简易的操作界面、对列车信息进行增删改查等操作和车票的订购退订这些功能。定义了存放列车信息的类Bus_infor,用这个类来完成所需要的需求功能,可是我很快就发现了,直接用这个类来做按条件查找,删除、修改、添加这些操作实在太麻烦,于是我想到了数据结构中的链表这个数据结构,这个系统用这个结构刚刚好。于是我又编写了另外一个类Bus_link,在这个类中,我把Bus_infor做成链表里的元素,编写了一系列的函数,这样增删改查这些操作就可以在链表中实现了。经过仔细地检查错误,修改内容之后,再经过各种测试,总算把这个系统给做完了。但是由于能力有限,还没有深入学习MFC等图形界面的知识,所以没能把整个系统的界面做得更漂亮一点。相信在以后的学习中,我能不断地提高,做出更好的设计。通过这次课程设计,更加深入对C+方面的程序设计的了解,尤其是它在面向对象的编程思想的应用,并通过这次的不断发现问题,解决问题的过程,学到了不少东西。六、程序代码#include#include#include#include#include using namespace std;class Bus_infor/列车信息int No;static int Bus_No;/给录入的车次默认编号char start20;/起点站char end20;/终点站int Bus_order;/车次 int all_tickted;/车的额定载量int tickted;/已定票人数int Hour_start,Minute_start,Hour_end,Minute_end;/发车时间,行车时间public:Bus_infor *next;Bus_infor();Bus_infor();int Get_no();int Get_all_tickted();int Get_tickted();int Get_bus_order(); char *Get_start();char *Get_end();void addr(); void Order_tickt(int n);void Unorder_tickt(int n);void GetTime_start();void GetTime_end();void ShowTime();void Show_infor(); void input()/录入车次信息coutttt按提示输入:endl;coutBus_order;coutall_tickted;GetTime_start();GetTime_end();addr();char a;cout是否清空售票(y/n)?a;if(a=y) tickted=0; void input(ifstream & is) /数据流的写入 isBus_orderstartendall_ticktedticktedHour_startMinute_startHour_endMinute_end;is.get(); void output()/输出车次信息cout客车基本信息如下:endl;cout车次:Bus_order 发车时间:Hour_start: Minute_start 起点站:start 终点站:end行车时间Hour_end: Minute_end额定载量all_tickted已订票人数ticktedendlendl; void output(ofstream & os) / 数据流的写出 ossetw(6)Bus_ordersetw(15)startsetw(6)endsetw(15)all_ticktedsetw(15)ticktedsetw(15)Hour_startsetw(15)Minute_startsetw(15)Hour_endsetw(15)Minute_endendl;int Bus_infor:Bus_No=1;void Bus_infor:GetTime_start()/输入发车时间int NewH=0,NewM=0;cout请输入发车时间:NewHNewM;Hour_start=NewH;Minute_start=NewM;void Bus_infor:GetTime_end()/输入行车时间int NewH=0,NewM=0;cout请输入行车时间:NewHNewM;Hour_end=NewH;Minute_end=NewM;void Bus_infor:ShowTime()coutHour_start:Minute_start ; coutHour_end:Minute_end ;Bus_infor:Bus_infor()No=Bus_No+; tickted=0;Bus_infor:Bus_infor() Bus_No-; void Bus_infor:addr()cout请输入起点站与终点站:a;cinb;strcpy(start,a);strcpy(end,b);char *Bus_infor:Get_start()return start;char *Bus_infor:Get_end()return end;int Bus_infor:Get_no() return No;int Bus_infor:Get_all_tickted()return all_tickted;int Bus_infor:Get_tickted()return tickted;int Bus_infor:Get_bus_order()return Bus_order;void Bus_infor:Order_tickt(int n)tickted=tickted+n;void Bus_infor:Unorder_tickt(int n)tickted=tickted-n;class Bus_linkpublic:Bus_link()head=new Bus_infor;head-next=NULL;key=0;/建立一个带头接点的单链表void input();void mend();void del();int find(Bus_infor *p,int num,char *pn);/查询车次信息 int find1(Bus_infor *p,int num,char *pn);/退票查找 void found();void show(); void Order(); void Unorder(); void save(); void begin(); void clear(); char mainmenu(); int getkey() return key; void setkey(int k) key=k; private: Bus_infor *head; /类对象作为链表的头指针 int key;void Bus_link:input()Bus_infor *p,*p2=NULL;p=head; int n;while(p-next)p=p-next;/令p指向其前驱while(n)p2=new Bus_infor;p2-input();p-next=p2;p2-next=NULL;p=p-next; Bus_link:setkey(1);coutn;void Bus_link:Order()Bus_infor *p;cout确定购票(y/n)?X;if(X=y)int num;coutnum;if( !find1(&p,num,) )couttt找不到你要定票的车辆的内容!endl;return;coutn;p=p-next;/if(p-Get_tickted()+n)Get_all_tickted()p-Order_tickt(n);cout谢谢使用endl;else cout对不起,没有足够的票数。endl; else if(X=n) cout谢谢使用endl;else cout输入字符不确定endl;Bus_link:setkey(1);void Bus_link:Unorder()Bus_infor *p;cout确定退票(y/n)?X;if(X=y)int num;coutnum;if( !find1(&p,num,) )couttt找不到你要定票的车辆的内容!endl;return;coutn;p=p-next;if(p-Get_tickted()-n)=0)p-Unorder_tickt(n);else cout对不起,数据出错!。endl; else if(X=n) cout谢谢使用endl;else cout输入字符不确定endl;Bus_link:setkey(1);void Bus_link:found()Bus_infor *p;int num=-1,n=0;char name20=;docoutn;while(n2);if(n=1)coutnum;if(n=2)coutname;if(!find(&p,num,name)couttt找不到你要查找的内容!next)(*p1)=p;if( (p-next)-Get_bus_order()=num|!strcmp( (p-next)-Get_end(),pn ) )(p-next)-output(); t=1;break;p=p-next;return t;int Bus_link:find1(Bus_infor *p1,int num,char *pn)Bus_infor *p;p=head;int t=0;while(p-next)(*p1)=p;if( (p-next)-Get_bus_order()=num|!strcmp( (p-next)-Get_end(),pn ) )return 1;p=p-next;return 0;void Bus_link:del()Bus_infor *p,*p2;int num;coutnum;if( !find(&p,num,) )couttt找不到你要删除的内容!next;p-next=p2-next;/删除并释放结点delete p2;Bus_link:setkey(1);void Bus_link:show()Bus_infor *p;p=head;while(p-next)(p-next)-output();p=p-next;void Bus_link:mend()Bus_infor *p;int num=-1;char name20=;coutnum;if( !find1(&p,num,name) )couttt找不到你要修改的内容!next)-output();(p-next)-input();Bus_link:s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论