




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于JAVA的火车购票系统的设计目录摘要 基于JAVA的火车购票系统的设计与实现摘要:随着互联网技术的不断发展,通过线上购买火车票出行已经成为主流,所以一个好的购票系统尤为重要。此系统就是基于这点设计的,它能够实现现实生活中乘客与火车站售票员之间的基本操作,使得用户获得更加方便快捷的购票体验。本系统采用的是B/S模式,选用了JAVA+Servlet+JSP技术和MySQL数据库,使用Servlet来进行设计,服务器端系统使用MYSQL访问数据库,使用JSP技术作为表现手段。本系统是一个基于Java的火车购票系统,实现了管理员可以进行登录操作、车次管理、会员管理、订单管理、销售管理,用户可以注册、登录、查询、订票、改签、退票。当前系统经过测试,测试结果为:软件的功能和性能已达到用户要求。关键词:火车购票系统;Java;MySQL;B/S1引言1.1课题背景从古至今,人们的出行方式发生了跨越式的变化,从原始的步行到现在的骑行、汽车、火车、轮船、高铁、飞机等各种各样的交通方式,而综合来看,火车是人们普遍选择的出行方式。无论哪种交通方式基本都需要购买车票,并且需要去指定的地方才能购买车票,所以火车票必须去火车站购买,而如今,随着互联网技术的高速发展,网上购票已经成为人们购买车票的一个普遍模式[12],并对社会的发展产生了推动力。现在国内已经全面推广了网上购票这种购票形式,传统的火车站购买车票的方式已经满足不了人们的购票需求,网上购票则是一个更加方便快捷的购票方式[13]。基于Java的火车购票系统可以通过渗透世界各个角落的互联网进行购票[8][9],这样一方面既可以在火车站进行购票,也可以在世界各地进行购票,只要有网络就可以随时购票,大大节省了时间。1.2课题目的和意义火车站购票这种传统的购票方式远远满足不了当代人的购票需求,它曾经是人们出行的必要购票方式,但是时代在发展,国民也需要与时俱进,对于好的购票方式,人们应该学会认同以及尽快适应。现如今,火车站购票和网上购票相配合,为不同人提供适合的购票方法,使其获得更好的购票体验。网上购票不需要随身携带购票的证件、不需要携带现金、不需要安排售票员,节省了财力物力,同时减少了丢失证件、钱财的风险,就这些优势来说,网上购票被更多人接受[10],越来越普及,即使是在偏远的地区也慢慢普及。互联网时代的到来使得人们的学习、生活以及工作方式等都产生了巨大的影响,现在许多需要购票的地方都采用了类似于火车购票系统的网上购票[11],如动物园购票、游乐园购票、景区购票等等,使用这种方式大大减少了财力物力的损耗、资源的浪费。每个地方的交通方式可以说决定了这个地方的经济发展,决定了人们的生活水平,交通联系着人们的方方面面,便捷的交通为人们带来财富、带来出路。如今除了因地势和客流等各种原因而不能修建铁路的地方,全国大部分地区已经实现了火车通行,大大促进了经济的发展、社会的发展。1.3研究现状现代社会计算机网络已经普遍出现在家家户户,每家每户都离不开网络,例如从前购买任何东西,不管是吃的还是用的,都需要携带现金,现在只需要打开手机扫码就可支付成功;从前购买生活用品需要跑到商店购买,现在手机淘宝就可以轻松搞定,本地的、外地的,甚至是千里、万里之外的商品,一个快递轻松送到家,人们只需要等待即可;从前想要和外地的家人、朋友联系,则需要通过写信或者排队打电话,而现在只需要一个手机就可以视频联络,面对面进行交流了,网络不但给我们节省了时间、金钱,而且也节省了资源。同样的如今的交通也离不开网络。网络在交通上的应用,也是非常值得称赞的,大大方便了人们购买火车票。传统的购票方式就是到火车站的售票窗口排队购买火车票,不仅需要随身携带证件,还需携带现金,费时费力。网上购票具有许多传统购票所没有的优点[14],第一,可以让乘客不用排队等候购票,大大减轻了售票员的工作量;第二,乘客可以自己查询车票的最新消息,然后通过查询选择适合的车次以及考虑是否需要改签,自己把旅程安排的明明白白,做到去哪里都心中不慌;第三,网上购票不需要现金支付,使用网银线上支付,方便又安全;第四:网上购票后取票时间弹性较大,只要购票成功,随时可以去火车站的取票窗口或自助取票机上取票,方便快捷,省时省钱。
2系统开发环境2.1Java技术Java是由SunMicrosystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称[1][3]。Java的研发者是JamesGosling和他的同事们,并且它于1995年被正式推出。Java语言吸收了C++的优点[2],摒弃了C++中那些不常使用的、不好理解的、迷惑人的特性以及大部分人难以理解的指针。与其它语言相比较,Java语言是更加安全且简单易用的[6],所以自从Java语言面世以来,大多数程序员是更倾向于使用它来编写程序。2.2Servlet技术JavaServlet是一种在Web服务器或应用服务器上进行运行的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。人们使用Servlet,可以收集来自网页表单的用户输入,可以呈现来自数据库或其他源的记录,并且还可以动态创建网页。Servlet在Web应用程序中的位置如下图2-1。图2-1Servlet在Web应用程序中位置Servlet的生命周期分为三个阶段:(1)初始化阶段:Servlet容器会创建一个Servlet实例并调用init()方法;(2)处理客户端请求阶段:每收到一个客户端请求,服务器就会产生一个新的线程去处理;(3)终止阶段:调用destroy方法终止。Servlet的生命周期如图2-2。图2-2Servlet生命周期2.3MVC设计模式MVC模式指一种程序设计概念。MVC最初是存在于桌面程序中的,M指业务模型,V指用户界面,C则指控制器。MVC可以将M和V的实现代码进行分离,从而使得同一个程序可以使用不同的表现形式,这使得人们更倾向于使用它。2.4MySQL数据库MySQL数据库是一个关系型数据库管理系统[4][15],它简单易用,在不同的表中进行填写数据、保存数据,如果对数据进行增、删、改、查,对应的数据库也会发生变化,速度快,灵活性高。所以即使MySQL只是一个小型软件,也深受着人们的喜爱。
3系统需求分析3.1可行性研究可行性研究对于每一个项目都是必不可少的环节,火车购票系统是一种用户可以随时随地在有网络的地方就可以完成购买火车票的系统。编写代码前的准备工作有很多,查阅资料,搜集信息,整理资料,以及通过对与其类似系统的各个方面进行仔细地分析,这些都为设计火车购票系统打下了坚实的基础。从经济、技术、操作这三个方面来对火车购票系统进行仔细的分析,发现此系统完全是可以顺利实现的,而且此系统非常符合目前的时代发展,节约了财力物力,同时也减少了资源浪费,并且极大地提高了用户的购票效率。(1)经济可行性火车购票系统和传统的购票方式相比,具有许多优点,不需要本人带着证件和现金去购票,节约了路费;乘客不需要排队等候购票,大大减少了火车站的客流量,从而减少了火车站的员工数量。这样节约了人力、物力和财力。并且系统在开发过程中所使用的软件都是开源的,所以经过仔细分析此系统在经济上是完全可行的。(2)技术可行性本系统使用了JSP+Servlet+Java框架进行开发,合理的提示信息,简洁的界面让人一目了然;后台使用小巧实用的MySQL数据库,开发环境使用Eclipse,可以基本满足系统的功能、性能要求。该系统使用的技术和环境都是非常广泛的,所以该系统在技术上是可行的。(3)操作可行性运行程序后,会看到一个非常简洁的界面,完成注册之后,填写用户名和密码点击登录,就可成功进入系统,然后点击主界面中的各个按钮,系统就会根据界面提示进入用户需要进入的界面进行操作,然后完成查询、订票、改签、退票等基本操作。可见本系统在操作上十分简单便捷。3.3系统的基本功能火车购票系统具有两类账户:管理员账户和用户账户。不同的账户,权限也大不相同,同时,所能使用的功能也大不相同。通常把系统的开发者称作管理员,管理员具有如下几个功能。(1)车次管理模块:在车次列表中,具有添加车次、编辑车次、删除车次、检索车次等功能。(2)订单中心模块:在订单列表中,具有导出订单信息到Excel表、查看乘车人详细信息、编辑订单、删除订单、检索订单等功能。(3)会员中心模块:在会员列表中,具有添加会员,查看会员信息、查看会员状态、编辑会员、删除会员、检索会员等功能。(4)管理员账户管理模块:在管理员列表中,具有添加管理员、检索管理员等功能。在修改密码中,具有修改管理员密码的功能。(5)销售统计模块:在统计详情中,具有查看已完成订单数、查看总销售额的功能。火车购票系统的用户是想要购买火车票的乘客,他们可以使用这几个功能。(1)用户注册登录功能:用户填写基本信息后点击注册,注册成功后点击登录,然后填写正确的用户名和密码就可成功登录。(2)用户查询功能:用户根据自己出行的时间和地点填写信息,点击查询,查看车次后选择一个最合适的车次。(3)用户订票功能:用户根据查询的车次,点击“订票”按钮,确认订票信息是否正确,如果正确点击“确定”按钮即可订票成功。(4)用户改签功能:用户进入会员中心,在我的订单中的订单列表中,点击“改签”按钮,选择合适的车次,重复订票操作,即可改签成功。(5)用户退票功能:在订单列表中点击“退票”按钮即可退票成功。管理员模块和用户模块相互独立,方便管理员管理系统,也为乘客提供购票服务带来极大的便利。
4系统总体设计4.1系统架构设计火车购票系统采用的是B/S架构,B/S架构被人们普遍使用,B指浏览器,S指服务器。选择B/S架构的原因,是由于和C/S架构相比,B/S架构维护方式简单,对于大多数人来说使用起来更加方便。B/S架构如今是比较通用的架构,它让系统具备可以随时进行查询、浏览的功能,浏览器服务器的合理分工又节省了人力、物力和财力,它还具有开发简单、共享性强、成本低等优点,所以B/S架构如今备受人们的青睐。如图所示B/S架构的示意图。图4-1B/S架构示意图4.2系统模块4.2.1用户模块用户登录系统以后,点击主界面的会员中心。用户可以在我的中心的修改密码中修改自己的登录密码,输入原密码,然后输入新密码点击“提交”按钮,跳出“修改成功!”的提示页面就表示修改密码成功;在个人资料中的我的资料中,用户可以修改自己的个人资料。此外,用户还可以在订单列表的我的订单中修改订单信息。最后用户可以点击退出以退出当前的会员中心页面,回到主界面。用户管理模块用户管理模块修改资料修改密码订单列表我的信息退出图4-2用户模块4.2.2管理员模块管理员通过用户名和密码,登录进入系统,在整个火车购票系统中管理员拥有最高的权限,他可以对用户账号、车次信息、订单信息以及其他管理员账号进行管理,管理员模块拥有5个功能:车次管理、订单中心、会员中心、管理员账号管理、销售统计。管理员管理模块管理员管理模块会员中心订单中心管理员账号管理车次管理销售统计图4-3管理员模块4.3系统流程图在火车购票系统中,用户可以查询车次,订票,改签,退票,管理员可以对车次、用户、订单、销售情况以及其他管理员账号进行管理。系统流程图如图4-4所示。登录失败登录失败不是用户登录用户注册购买火车票的人管理员查询车次查询车次订票退票开始销售统计车次管理订单中心会员中心管理员管理管理员改签退票检索添加添加删除添加编辑删除删除图4-4系统流程图
4.4数据库设计4.4.1数据库信息表MySQL数据库,操作简单,只需输入正确的sql语句就可以创建表和插入信息[7]。首先创建一个名为ticketing的数据库[5],然后在此数据库下建立5个表,分别是管理员表、用户表、用户信息表、订单表、车次管理表,5张表的设计信息如下。管理员表一共拥有七个属性,分别为adminid,username,password,creattime,flag,isuse,logintime。因为adminid在管理员表中是独一无二的,所以将adminid设置为主键,自增长。表4-1管理员表列名功能说明类型(长度)备注adminid管理员IDInt(4)主键username管理员姓名varchar(50)不允许空password管理员密码Varchar(50)不允许空creattime创建时间datetime不允许空flag管理员权限Int(1)不允许空isuse管理员状态Int(1)不允许空logintime登录时间datetime不允许空用户表拥有六个属性,分别是memberid,username,password,registertime,ifuse和logintimes。memberid为用户表的主键,设置为整型。表4-2用户表列名功能说明类型(长度)备注memberid会员IDInt(4)主键username会员姓名varchar(50)不允许空password会员密码varchar(50)不允许空registertime登记时间datetime不允许空ifuse会员状态Int(4)不允许空logintimes登录时间datetime不允许空用户信息表用于存放用户注册的信息,它拥有六个属性,分别为pmemberid,memberid,realname,sex,age和idcard。在此表中把pmemberid设置为主键,因为每一个用户具有唯一的序号,以此来区分每一个用户。表4-3用户信息表列名功能说明类型(长度)备注pmemberid序号Int(4)主键memberid会员IDInt(4)不允许空realname真实姓名varchar(50)不允许空sex会员性别varchar(50)不允许空age会员年龄Int(4)不允许空idcard身份证号varchar(50)不允许空订单表用于存放用户的订单信息,它拥有十一个属性,分别为prepid,phone,roomtype,startstation,endstation,trainnumber,starttime,endtime,price,way和booktime。表4-4订单表列名功能说明类型(长度)备注prepid序号Int(4)主键phone车次idInt(4)不允许空roomtype会员信息IDInt(4)不允许空startstation起始站varchar(50)不允许空endstation终点站varchar(50)不允许空trainnumber火车车次varchar(50)不允许空starttime出发时间varchar(50)不允许空endtime到达时间varchar(50)不允许空price车票价格Int(4)不允许空way付款情况Bit(1)不允许空booktime订票时间datetime不允许空车次管理表拥有九个属性,分别为trainid,trainnumber,startstation,endstation,starttime,endtime,price,seatnumber,addtime。表4-5车次管理表列名功能说明类型(长度)备注trainid序号Int(4)主键trainnumber车次varchar(50)不允许空startstation起始站varchar(50)不允许空endstation终点站varchar(50)不允许空starttime出发时间varchar(50)不允许空endtime到达时间varchar(50)不允许空price车票价格Int(4)不允许空seatnumber座位数量Int(4)不允许空addtime添加时间datetime不允许空
5系统功能的实现5.1系统展示界面火车购票系统的主界面展示了系统的首页,会员中心,登录/注册,退出登录,查询等功能。在此界面中,管理员和普通用户都必须先登录系统,才可以进行相关操作。在地址栏输入:http://localhost:8080/ticketing/就可以进入系统主界面。图5-1系统主界面5.2用户注册功能home.jsp是用户注册登录页面,用户注册时,填写完所有的基本信息后点击注册,系统会收到请求调用RegMemberServlet,当提交的数据是合法的,那么会往用户表里插入一条数据,然后返回给客户端处理结果,客户端提示用户注册成功或失败。运行截图如下。图5-6用户注册界面5.3登录功能首先用户需要登录系统才能使用本系统,当点击登录时,系统就去调用MemberLoginServlet来获取用户注册时填写的密码,然后调用Service中的login()方法并实现该方法,与后台的表进行核对,核对无误则返回结果,表明登录成功,否则跳出提示界面表明登录失败。登录的主要代码、调用流程及界面如下: 图5-2登录界面5.4会员查询功能点击个人资料的超链接,系统就会去调用MemberDao中的getmember()方法,然后在MemberDaoImpl里进行实现,同时在session中存储该用户的所有信息。最后跳转一下页面,在Center.jsp页面进行遍历显示。运行结果如下图所示。图5-3查询个人资料页面点击查询车次的超链接,系统去调用TrainDao中的getById()方法,然后TrainDaoImpl来实现该方法,在Session中存储车次信息,最后由home.jsp页面遍历显示。运行结果如下图所示。图5-4查询车次页面点击订单列表的超链接时,系统调用PrepDao中的getPrepByPmemberId()方法,然后在继承类中重写该方法,然后在session里存储所有的订单信息,最后由adminMain.jsp遍历取出并显示。运行结果如下图所示。图5-5查询订单页面5.5用户订票功能用户登录系统后就可以自己在线订票了,管理员在查看购票信息时会统一进行订单处理。订票请求发起后,系统会调用BookingServlet,然后Servlet调用PrepDao中的getById()方法,最后PrepDaoImpl实现该方法,获取车票的信息并且把这些信息统一保存在订单表中。订票的主要代码、运行截图如下。图5-7用户订票页面5.6用户改签退票功能用户订票后也可以根据自己的需求进行改签或者退票。改签请求发起后,系统调用UpdatePrepServlet,然后Servlet调用PrepDao中的changePrep()方法,然后PrepDaoImpl实现该方法,再次更新后的车票信息统一保存在订单表中。退票的工作原理与改签类似。改签的主要代码、运行截图如下。图5-8用户改签退票页面5.7添加车次功能管理员不仅具有使用、查询、修改各类相关信息的功能,也可以对车次进行管理。在添加车次时,管理员需要填写车次,起始站,终点站,开车时间,到站时间,车票价格,座位数量这些信息,然后点击提交,后台调用AddTrainServlet处理,然后调用TrainDaoImpl里的add()方法,向车次管理表中插入一条记录。部分主要实现代码和运行截图如下。图5-9添加车次页面5.8销售统计功能销售统计中,管理员可以查看订单数和总销售额。统计销售这一请求发起后,然后点击提交,后台调用CountPrepServlet处理,然后调用doget()方法,统计订单数和销售额。部分主要实现代码和运行截图如下。图5-10销售统计页面
6系统测试6.1系统测试的重要性一个合格的系统只有经过反复地测试,才能找出其存在的问题,解决了这些问题,才能使系统达到最稳定的状态。如今系统测试这一步骤已被很多公司及个人高度重视,这是因为任何一个系统都不能保证它没有一个错误,所以只有通过不断地测试才能找出问题,解决问题,这样才能最大限度地减少不必要的错误,使系统更加接近完美,给用户带来更好的体验感。6.2系统功能测试(1)用户注册测试首次使用本系统的用户必须先进行注册,用户注册需要填写基本信息,然后点击“注册”按钮,页面出现“注册成功,点击登录!”的提示信息后,点击“确定”按钮即可。同时查看SQLyog中的表member中查看刚刚注册的信息是否插入成功。图6-1用户注册(2)用户登录测试用户登录需要填写注册时填写的用户名和密码,填写完毕后,点击“登录”按钮,如果登录成功,则会出现“登录成功!欢迎你,张莎莎”。如图6-2。用户登录时用户名为空或密码为空,以及填写的用户名或密码错误,则都会提示“该用户不存在!”或“密码错误,请重新输入!”的提示页面。图6-2用户登录(3)用户查询测试用户登录成功后即可进入系统的主界面,在此界面中用户可以进行查询、订票、改签、退票等操作。用户想要查询到最适合的车次,只需在主界面中选择起始站、终点站,然后填写开车时间,最后点击查询即可找到适合自己的车次。图6-3用户查询车次(4)用户订票测试用户查询到最适合自己的车次后,点击页面中的订票操作就可进入订票页面,在此页面中确认订票信息是否正确,确认过信息后点击“确定”按钮即可订票成功。同时,查看SQLyog中的prep表是否成功插入这条记录。图6-4用户订票(5)用户改签测试用户在主页面的会员中心的我的订单中查看订票信息。若行程临时有变,可以进行改签,在订单列表中的订单信息中点击“改签”操作,跳出“请选择新的车次!”页面,点击“确定”,重复订票操作,确定后页面提示“改签成功!”,表示用户改签成功。同时,查看SQLyog中的prep表是否成功插入这条记录。图6-5用户查看订票信息图6-6用户改签(6)用户退票测试用户在主页面的会员中心的我的订单中的订单信息中点击“退票”操作,跳出“退票成功!”的页面,表示用户退票成功。同时,查看SQLyog中的prep表是否成功删除了这条记录。图6-7用户退票
7课题总结本系统是一个基于B/S架构,采用MVC设计模式进行开发,开发环境使用Eclipse,使用Java语言进行编码,后台数据库使用MySQL数据库的火车购票系统。最后经过检测,发现最初设计该系统的预期功能都已顺利完成,主要有以下几个主要功能:(1)管理员登录,增加管理员和用户注册登录;(2)管理员进行车次管理、订单中心、会员中心、管理员管理、销售统计等服务;(3)用户查询、订票、改签、退票等服务。但是从市场应用角度来进行分析,本系统有一些小缺点,界面不美观,缺少最优车次推荐等等。并且系统不能够立即投入使用,因为这些缺点以及代码的优化程度低,所以仍然需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024商业购物中心二次元潮玩店谷子店周年庆活动策划案
- 循环系统疾病患者的护理
- 小学二年级数学上册加减乘除混合口算题
- 企业股权收购合同范例
- 买卖儿童农村房屋合同范例
- 劳务输送框架合同范本
- 企业集资合同范例
- 临时兼职用工合同范例
- 加盟拿料合同范例
- 入园合同范例
- 戴德梁行物业培训ppt课件
- 回转式空气预热器安装作业指导书
- GB∕T 16422.3-2022 塑料 实验室光源暴露试验方法 第3部分:荧光紫外灯
- 第三章1轨道电路
- 煤矿防治水中长期规划2017—2019
- 2022年乡镇(街道)执法人员资格考试题库(含答案)
- 新版广西大学毕业设计封面
- 汽机各系统吹管调试方案
- 金华市区低丘缓坡综合开发利用研究
- MATLAB在电力系统中应用
- 基于深度学习的图像压缩感知算法综述
评论
0/150
提交评论