列车票务管理系统_第1页
列车票务管理系统_第2页
列车票务管理系统_第3页
列车票务管理系统_第4页
列车票务管理系统_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

列车票务管理系统列车票务管理系统列车票务管理系统列车票务管理系统编制仅供参考审核批准生效日期地址:电话:传真:邮编:1.课程设计的目的与意义、课程设计的目的数据库课程设计是数据库系统原理实践环节的及为重要的一部分.其目的是:(1)培养学生能够应用数据库系统原理在需求分析的基础上对系统进行概念设计,学会设计局部ER,全局ER图;(2)培养学生能够应用数据库系统在概念设计的基础上应用关系规范化理论对系统进行逻辑设计,学会在ER图基础上设计出易于查询和操作的合理的规范化关系模型;(3)培养学生能够应用SQL语言对所设计的规范化关系模型进行物理设计,并且能够应用事务处理,存储过程,触发器以保证数据库系统的数据完整性,安全性,一致性,保证数据共享和防止数据冲突;(4)培养学生理论与实际相结合能力,培养学生开发创新能力;(5)培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应计算机产业日新月异发展的形势;(6)提高和加强学生的计算机应用与软件开发能力,使学生由初学者向专业的程序员过渡。、课程设计的意义目前,我国在计算机应用、计算机软件和电子类相关专业的人才培养方面,取得了长足的发展,但同时也让我们深刻地感觉到缺乏实际开发设计项目的经验,不善与综合运用所学理论,对知识的把握缺乏融会贯通的能力.尤其是我们计算机专业大学生,由于缺乏具体项目经验,毕业之后普遍感到知识不能转化为能力。课程设计可以锻炼我们理论联系实际的能力,为今后工作做铺垫。信息时代已经来临,信息处理的利器——计算机应用于火车站售票的日常管理为火车站售票的现代化带来了从未有过的动力和机遇,为火车站票务管理领域的飞速发展提供了无限潜力。采用计算机管理信息系统已成为火车站票务管理科学化和现代化的重要标志,给火车站票务带来了明显的经济效益和社会效益。计算机已经成为人们生活不可却小的一部分。铁路票务管理是一件比较负责但又非常重要的事情,它是涉及国家铁路运输的正常工作、国民经济的发展和人民生活水平及质量的大事情。随着经济的发展,交通运输越来越便捷,为了提高效率,减轻劳动强度,设计开发高效的铁路信息查询系统就显得颇为重要。火车售票管理中包含许多内容,有铁路乘客运输的运力问题,有订票管理问题等等。铁路信息查询系统是企业信息决策和管理的重要的组成部分,是一种典型的信息管理系统(MIS),其开发主要包括后台的数据库的建立、维护以及前端的相应应用程序的开发两个方面的内容,数据库的建立和维护主要要求其管理数据的一致性、完整性、安全性等特点,而前台的应用程序开发则要求做到各项功能要完备、操作要简便、易学易用等特点。本课程设计专门要解决这些问题,由于铁路火车票务管理的复杂性,本设计与开发也仅是一个尝试性的工作,但其中有很多重要的思想和方法,涉及一些重要的程序代码,对于研究开发该类程序的工程人员可以起一个抛砖引玉的作用。

2.需求分析.需求分析的任务随着旅游业的逐渐的成熟发达,铁路客运量大幅度的提高,各大省市的列车都显著的增加,这些都对列车票务管理系统提出了更高的要求,所以要不断的完善更新列车票务管理系统,提高列车售票系统的工作效率。随着科学的不断进步,计算机应用已经遍布整个社会的每个角落。目前社会正处于健保发展方兴未艾的时代,各火车站莫不兢兢业业地改善本身的体制或管理方式,以适应健保越来越严格的规范。列车在我国的人员流动、物资运输中占据着举足轻重的地位。全国有大量的人员通过搭乘火车到达目的地。而与火车的特殊性及可能经过多个城市,每个城市的车站可以出售此火车的车票。而且同一车站可能有多辆车经过。许多希望以最快的方式选择自己想来乘坐的那一趟列车。所以以人工的方式是不可能实现这种功能的。一种可行的方案是基于客户端服务器的体系结构。服务器为数据库系统,存储所有必要的信息。客户端通过连接到服务的应用程序快速、准确地完成相应的工作,通过网上订购,可以达到高效、便捷的购票。列车票务管理系统的实施,将会在一定程度上促进铁路客运生产力和生产关系的变革,增强市场竞争能力,提高铁路部门的工作效率,提升管理水平,减少劳动强度,方便广大旅客购票,有一定的社会和经济效益。.系统需要实现的功能和操作如下:.查询:可以通过起点站与终点站在进行查询,也可根据具体的车次输入进行查询,同时每次查询都会显示车次号,点击即可显示该趟列车所进过站点的详细信息,其中包括所到达每个站的到达时间与出发时间。.客户注册、注销:由于要进行网上订购车票,用户需注册,填写有关信息,由物流公司负责送车票到客户手中。如果用户不再使用本系统可以选择注销,从而从数据库中删除其有关记录。(3).订票业务:本系统为网上订票,用户经过查询车次信息、票务信息,找到自己所需的车票通过所关联的账户进行订购。(4).退票业务:根据客户提供的情况(车次、时间、)为客户办理退票手续,退票时按票价的80%退给客户金额,若所退票额能满足他的要求,则为他办理退票手续,同时在数据库中进行更新。.更新功能:该系统随时跟据车辆的变化情况进行更新,增加车辆时可以在系统中插入该车的详细信息,同时也能根据需要修改某趟车经过的站点与发车时间,当某趟车停止、开行时可以删除该趟车的信息。同时包括对列车信息、站点信息、管理人员信息、订票记录等的更新功能。.车票配送:客户在订购了车票之后,管理人员通过后台管理订票记录,然后根据客户的要求选择物流公司及时为其配送车票。3.系统设计总体设计1.功能设计:该铁路票务系统流程主要包括客户操作、管理人员操作、主管操作:客户操作:查询操作:可以按照车次或始发站、终点站两种方式进行查询,只需要输入关键信息即可查到所需的车次的有关信息,包括车的类型、所剩票的类型、数量、票价等。注册操作:网上订票,需要与客户的银行账号、电话、地址等有关信息关联,只有进行注册之后才可以进行订票操作。订票操作:客户进行注册后,可以方便地进行订票,可以选择支付方式与送票方式,以达到最快速、高效地完成车票的订购。退票操作:由于一些原因,可能造成客户要求退票,系统根据具体的情况判定是否可以退票,进行退票。注销操作:客户可能因为某些原因要进行注销操作,系统根据客户请求完成客户注销,删除数据库中的该客户有关信息。功能模块图局部ER图(以客户为主体)详细设计:3.2.1逻辑结构设计用户(用户账号,密码)用户详细信息(用户账号,姓名,性别,电话,地址,支付方式)支付类型(类型编号,支付类型)网上银行(银行编号,银行名称)订票记录(用户编号,车票编号,数量,订票日期)票务信息(车票编号,剩余数量,日期)票类型1(票类型编号1,票类型名称1)票类型2(票类型编号2,票类型名称2)物流公司(物流公司编号,物流公司名称)3.2.2数据库物理设计用户表:字段名称数据类型宽度可否为空是否为主键说明ID8char20否是用户账号passwordchar16否否用户密码用户详细信息表:字段名称数据类型宽度可否为空是否为主键说明ID8char20否是用户账号Namechar20否否姓名Sexnoint1否否性别编号telchar11否否电话Addresschar30否否地址zhifunoint1否否支付方式支付类型表:字段名称数据类型宽度可否为空是否为主键说明zhifunoint1否是类型编号zhifuchar20否否支付类型网上银行:字段名称数据类型宽度可否为空是否为主键说明Banknoint1否是银行编号Bankchar20否否银行名称订票记录:字段名称数据类型宽度可否为空是否为主键说明ID8char20否是用户帐号IDchar20否是车票编号numint1否否数量Datedatetime1否否订票日期票务信息表:字段名称数据类型宽度可否为空是否为主键说明IDchar20否是车票编号num1int1否否剩余数量Date1datetime1否否日期票类型1表:字段名称数据类型宽度可否为空是否为主键说明Type1int1否是票类型编号1Type1nachar20否否票类型名称1票类型2表:字段名称数据类型宽度可否为空是否为主键说明Type2int1否是票类型编号2Type2nachar20否否票类型名称2物流公司(物流公司编号,物流公司名称)字段名称数据类型宽度可否为空是否为主键说明transnoInt1否是物流公司编号transnaChar20否否物流公司名称系统数据库设计3.2.1.该系统由两部分组成:登录部分和车次车票部分。(1).登录部分:该部分分为管理员与乘客登录,管理员登录时需要设定账号与密码,只有输入正确的账号与密码才能登陆,同时系统的功能管理员都能操作,乘客不需要账号与密码,但是乘客只有查询的操作权限。(2).车次车票部分:该部分又分为四个子系统:查询系统:可以查询车次基本信息与车次详细。购票系统:用于乘客购票,同时显示剩余票数与票价。更新系统:当车次信息有变化时,管理员可以根据情况插入和删除车次信息。退票系统:用于乘客需要退票时,且退票时只退票价的80%。该系统ER图如图:目的站出发站车次账号目的站出发站车次账号nn座位类型火车管理管理员 n座位类型火车管理管理员11终点到达时间始发时间密码终点到达时间始发时间密码显示显示nn出发时间到达时间站点出发时间到达时间站点剩余票数票价剩余票数票价图该系统流程图如下开始:开始错误选择登录类型错误选择登录类型返回退出乘客退出操作返回操作输入账号和密码管理员正确账号类型返回退出乘客退出操作返回操作输入账号和密码管理员正确账号类型查询系统查询系统查询系统更新系统退票系统购票系统查询系统更新系统退票系统购票系统结束结束图4.系统实现设计的火车站售票系统主要分为五个模块:.登陆模块。在登陆系统中,所需要的功能就是对输入的账号和密码与数据库中的账号信息进行匹配查询。其实现使用了text控件,adodc控件,frame控件,option控件,command控件以及label控件。主要代码如下:PrivateSubCommand1_Click()If=TrueThen'判断是否是管理员登陆If=""Then'如果账号中输入为空则显示"请输入账号"MsgBox"请输入账号"ElseIf=""Then'如果密码框输入为空则显示"请输入密码"MsgBox"请输入密码"ElseIf<>""Then'当账号框中输入不为空DimstrsqlAsStringstrsql="select*from表3Whereid="+"'"+Text1+"'"'从数据库中找到账号等于账号框中输入的数据时WithAdodc1ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RecordSource=strsql.RefreshEndWithIf=TrueThenMsgBox"账号信息错误"ElseIf<>"passnum")ThenMsgBox"密码错误"ElseIf="passnum")Then'当密码框中输入的数据与数据库的密码相符时EndIfEndIfElseIf=TrueThen'如果选择为游客登录则跳转到游客查询界面EndIfEndSub另外为了美化界面,增加登陆界面的功能,添加了time控件,将计算机系统时间显示在lable控件中,具体代码如下:PrivateSubTimer1_Timer()=NowEndSub.主菜单即管理员登陆进入后的操作菜单。本界面中用到了command控件。作用是跳转到操作员所需要的界面。主要代码示例如下:PrivateSubCommand1_Click()‘当前主菜单隐藏,更新系统显示。EndSub.更新系统更新系统中主要要求对数据库中的表的数据进行修改,主要包括插入,修改,删除。在这些功能的实现中我们使用了adodc控件,option控件,label控件,datagrid控件。主要代码如下:PrivateSubCommand1_Click()‘如果选择的为火车基本信息,则让datagrid控件中显示火车基本信息的表。并实现插入功能。反之则对火车详细信息表进行插入操作。If=TrueThenSet=Adodc1ElseIf=TrueThenSet=Adodc2EndIfEndSubPrivateSubCommand2_Click()‘允许在datagrid中对数据进行更新=TrueEndSubPrivateSubCommand3_Click()‘如果选择的为火车基本信息,则让datagrid控件中显示火车基本信息的表。并实现删除功能。反之则对火车详细信息表进行删除操作。If=TrueThenElseIf=TrueThenSet=Adodc2EndIfEndSubPrivateSubCommand4_Click()‘使用户不能对datagrid中数据进行更新,防止出错。=FalseEndSub.查询系统在本系统中主要是要求用户能对火车进行查询,包括车次查询,站点查询以及详细查询。另外要求不能对数据进行修改。为了实现这些功能,我们用到了datagrid控件,adodc控件,label控件,command控件,text控件。具体代码如下:PrivateSubCommand1_Click()‘对输入的两个站点进行查询。查询进过输入的两个站点的所有火车。为了实现这个对两个站点间的查询,我们使用了子查询语句。DimstrsqlAsStringstrsql="select*from表2where车次in(select车次from表2Where站点in('"+Text1+"','"+Text2+"')groupby车次havingcount(*)>=2)and站点in('"+Text1+"','"+Text2+"')orderby编号asc"WithAdodc2.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RecordSource=strsqlSet=Adodc2.RefreshEndWithEndSubPrivateSubCommand2_Click()‘对DimstrsqlAsStringstrsql="select*from表2Where车次="+"'"+Text3+"'orderby编号asc"WithAdodc2.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RecordSource=strsqlSet=Adodc2.RefreshEndWithEndSubPrivateSubCommand3_Click()‘对输入的车次进行查询,输出该车次的信息。DimstrsqlAsStringstrsql="select*from表2orderby编号asc"WithAdodc2.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RecordSource=strsqlSet=Adodc2.RefreshEndWithEndSubPrivateSubForm_Load()‘使datagrid中输出的数据不能进行修改。=False=False=FalseEndSub.购票退票系统在该系统中要实现的功能是支持售票员对游客购票的车次的查询,以及购票的操作,其中包括对票价的显示,座位数的加减,尤其是实时对数据库的车票情况的更新,以及购买硬座、硬卧、软卧、站票这不同车票的区别。为此,我们使用了label控件,frame控件,text控件,options控件,datagrid控件,adodc控件以及command控件。具体功能实现如下:(查询的实现与查询系统的相似,不在这里列出)PrivateSubCommand1_Click()'实现乘客购票的显示,以及实时对数据库中的车票信息进行更新。===="发车时间")If=TrueThen="软卧剩余票数")="软卧剩余票数")-1="软卧剩余票数")ElseIf=TrueThen="硬卧剩余票数")="硬卧剩余票数")-1="硬卧剩余票数")ElseIf=TrueThen="硬座剩余票数")="硬座剩余票数")-1="硬座剩余票数")EndIf=="车次类型")=DateEndSubPrivateSubCommand3_Click()‘通过option控件,查询出不同座位价格并把价格显示到text控件中。If=TrueThen=*"软卧剩余票数")="软卧剩余票数")+1="软卧剩余票数")ElseIf=TrueThen=*"硬卧剩余票数")="硬卧剩余票数")+1="硬卧剩余票数")ElseIf=TrueThen=*"硬座剩余票数")="硬座剩余票数")+1="硬座剩余票数")EndIfEndSubPrivateSubOption1_Click()‘选择软卧,并把软卧的剩余票数输出。DimaAsDouble,bAsDoublea="软卧票价")b="软卧票价")=b-a="软卧剩余票数")EndSub.此外,在系统设计过程中,我们发现如果直接使用adodc控件对数据库进行关联,将使得我们设计的软件只能在指定的路径中才能运行,为此,我们查阅了相关资料,在软件设计过程中动态设置我们数据库的路径,从而使软件能在不同的路径中正常运行,代码如下:WithAdodc1.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RefreshEndWith5.系统调试.登陆系统图:此为密码输入错误提示。图:此为密码输入正确后跳转到主菜单的界面。图:此为选择乘客后正确跳转到查询的界面。图图图.查询系统图:此为输入长沙到常德的站点查询后正确查询出的信息。图:此为输入1374车次后正确查询出的车次信息。图:此为点击详细查询后正确输出的信息。图图图.更新系统图:此为未更新前显示信息。图:此为插入1234车次后显示信息。图:此为删除1234车次后显示信息。图图图.购票系统。图:此为输入站点,车次后过滤出的车次信息。图:此为在图十的基础上选择软座后显示的票价及剩余票数信息。图:此为点击确定购买后显示的信息,包括对剩余票数的更新信息。图图图.退票系统图:此为初始状态。图:此为在输入与购票系统相同信息后输出的退还现金数目。图图6.小结对于此次课程设计我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整两个星期的日子里,学到的很多理论知识,在这次课程设计实习中更具体的体现了出来,在实践过程中,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学到的理论知识与实践相结合起来,从理论中得出结论,将结论辅助与理论,才能真正学到知识并写出有用的程序,所以提高自己的实际动手能力和独立思考的能力是十分重要的。在设计的过程中遇到很多的问题,可以说得是困难重重,由于对以前所学过的知识理解得不够深刻,掌握得不够牢固。导致自己在程序设计过程中经常出错,致使程序无法运行或无法实现要求的步骤。还有很多是些小问题,这都是由于我粗心大意而造成的,所以我认识到设计程序一定要仔细,容不得丝毫的马虎和粗心大意。当然还有其他的问题,尤其是关于文件的操作,是我们最大的问题,不过,经过老师的讲解和改错之后,也开始懂得设计和运用了。在本次实践中,我认识到了团队的重要性,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。某个人的离群都可能导致整项工作的失败。只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们实习成功的一项非常重要的保证。而这次实习也正好锻炼我们这一点,这也是非常宝贵的。我很清楚的知道团结协作的力量是伟大的,如果是我一个人孤军奋战的话,肯定不能在规定时间内完成这次课程设计的要求内容,因此我很怀念这两个星期的合作,想起我们一起查阅资料,一起讨论设计程序的思路,成功的时候一起分享喜悦,失败的时候互相鼓励,我坚信,在这两个星期的时间里面,我们的友情和团结精神在历练中经受住了考验,变的更加顽强,我们是一个集体的思想已经深入人心!附录源代码from1(登陆界面):PrivateSubCommand1_Click()If=TrueThenIf=""ThenMsgBox"请输入账号"ElseIf=""ThenMsgBox"请输入密码"ElseIf<>""ThenDimstrsqlAsStringstrsql="select*from表3Whereid="+"'"+Text1+"'"WithAdodc1.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RecordSource=strsql.RefreshEndWithIf=TrueThenMsgBox"账号信息错误"ElseIf<>"passnum")ThenMsgBox"密码错误"ElseIf="passnum")ThenEndIfEndIfElseIf=TrueThenEndIfEndSubPrivateSubCommand2_Click()EndEndSubPrivateSubForm_Load()EndSubPrivateSubTimer1_Timer()=NowEndSubfrom2(主菜单):PrivateSubCommand1_Click()EndSubPrivateSubCommand2_Click()EndSubPrivateSubCommand3_Click()EndEndSubPrivateSubCommand4_Click()EndSubPrivateSubCommand5_Click()EndSubfrom3(查询系统):PrivateSubCommand1_Click()DimstrsqlAsStringstrsql="select*from表2where车次in(select车次from表2Where站点in('"+Text1+"','"+Text2+"')groupby车次havingcount(*)>=2)and站点in('"+Text1+"','"+Text2+"')orderby编号asc"WithAdodc2.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RecordSource=strsqlSet=Adodc2.RefreshEndWithEndSubPrivateSubCommand2_Click()DimstrsqlAsStringstrsql="select*from表2Where车次="+"'"+Text3+"'orderby编号asc"WithAdodc2.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RecordSource=strsqlSet=Adodc2.RefreshEndWithEndSubPrivateSubCommand3_Click()DimstrsqlAsStringstrsql="select*from表2orderby编号asc"WithAdodc2.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RecordSource=strsqlSet=Adodc2.RefreshEndWithEndSubPrivateSubForm_Load()=False=False=FalseEndSubPrivateSubLabel4_Click()EndSubPrivateSubLabel5_Click()EndEndSubfrom4(更新系统):PrivateSubCommand1_Click()If=TrueThenSet=Adodc1ElseIf=TrueThenSet=Adodc2EndIfEndSubPrivateSubCommand2_Click()=TrueEndSubPrivateSubCommand3_Click()If=TrueThenElseIf=TrueThenSet=Adodc2EndIfEndSubPrivateSubCommand4_Click()=FalseEndSubPrivateSubForm_Load()strsql="select*from表1"WithAdodc1.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RecordSource=strsql.RefreshEndWithstrsql1="select*from表2"WithAdodc2.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False".RecordSource=strsql1.RefreshEndWith=FalseEndSubPrivateSubLabel1_Click()EndEndSubPrivateSubLabel2_Click()EndSubPrivateSubOption1_Click()Set=Adodc1EndSubPrivateSubOption2_Click()Set=Adodc2EndSubfrom5(购票退票系统):PrivateSubCommand1_Click()===="发车时间")If=TrueThen="软卧剩余票数")="软卧剩余票数")-1="软卧剩余票数")ElseIf=TrueThen="硬卧剩余票数")="硬卧剩余票数")-1="硬卧剩余票数")ElseIf=TrueThen="硬座剩余票数")="硬座剩余票数")-1="硬座剩余票数")ElseIf=TrueThen="硬座剩余票数")="硬座剩余票数")-1="硬座剩余票数")EndIf=="车次类型")=DateEndSubPrivateSubCommand2_Click()DimstrsqlAsStringstrsql="select*from表2where车次in('"&&"')and站点in('"+Text2+"','"+Text3+"')orderby编号asc"WithAdodc1.ConnectionString="Provider="_&"DataSource="++"\;PersistSecurityInfo=False"

温馨提示

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

评论

0/150

提交评论