火车票预订系统报告.docx
《火车票预订系统报告.docx》由会员分享,可在线阅读,更多相关《火车票预订系统报告.docx(22页珍藏版)》请在冰豆网上搜索。
![火车票预订系统报告.docx](https://file1.bdocx.com/fileroot1/2022-12/9/b9f343fb-4a35-4e08-aaf3-4846ef60d2d8/b9f343fb-4a35-4e08-aaf3-4846ef60d2d81.gif)
火车票预订系统报告
基于.NET的火车联网售票系统的设计
摘要
基于B/S模式的火车联网售票系统是一个目前非常流行的在线售票系统。
该系统的出现大大满足了现今对于火车售票的需要,使原本极为麻烦的售票、购票过程变得方便快捷,从而提高效率并且大大降低了售票员的工作量。
火车联网售票系统主要包括的火车票查询子系统、订票子系统等功能系统。
它能够实现在线车票查询(包括简单查询、详细查询两个部分),在线订票等功能。
其开发主要包括后台数据库的建立管理和前台应用程序的开发这两个方面。
程序功能实现后用户将可通过互联网在线查询、订购所需的火车票,并能随时查看自己所订购的车票。
本文首先介绍了火车联网售票系统的整体系统构架及MicrosoftSQLSERVER2000数据库的建立,接着详细介绍了各子系统,包括各子系统的功能概述,具体实现,以及数据库相关表设计。
关键词:
在线售票;订单;管理
TheDesignofTrainOnlineBookingSystemBasedon.NET
Abstract
OnlineBookingSystembasedonB/Sstructureiscurrentlyaverypopularonlineticketingsystem.Thesystemcanmeettherequirementofthesellingtrainticketing,maketheextremelytroubleprocessofbuyingtrainticketfastandconvenient.Itimprovesefficiencyandreducesworkloadofconductor.
TrainOnlineBookingSystemmainlycompriseofticketquery,bookingsubsystem,completeonlineticketquery(includessimplequery,detailquery),onlinebookingandsoon.Thedevelopmentincludestheestablishmentandmanagementofthebackgrounddatabase,andtheimplementationofapplicationprogram.ThesystemwillallowcustomerstoinquiriesandbookthetrainticketsthroughtheInternet.Theycaninquireabouttheticketsoftheirbookingatanytime.
ThispaperintroducestheticketingsysteminterconnectionoftheoverallsystemarchitectureandhowtocreateMicrosoftSQLSERVERdatabasebeingfollowedbyadetaileddescriptionofthesubsystems,includingthesubsystemsoverview,thedetailofrealizationandtherelateddesignoftable.
Keywords:
onlinebooking;order;manage
论文总页数:
21页
1引言
1.1课题背景
随着我国经济的高速发展,我国的交通运输能力不断提高,越来越多的国民开始走出家门来到异地进行商务或者旅游等活动。
在这一条件下,客流量不断增大。
火车售票的管理对于交通运输的正常运行起着至关重要的作用,而随着信息量的逐步增加,繁杂的数据处理费时费力,单纯以人力进行的火车售票已经不适合现状了。
现在的时代是一个信息产业的时代,国家把信息产业作为了增长国民经济重要的一环。
在这样的环境下,以先进的信息技术进行火车售票的管理成为了时代发展的必然。
综上所述,开发这样一个火车联网售票系统是相当有必要的。
1.2本课题研究的意义
火车联网售票系统以计算机为操作工具,把售票的工作人员从繁杂的数据管理以及处理中解放出来,从而增加工作效率,火车联网售票系统把车票的各种信息保存于数据库中,通过计算机可以很方便地对所需要数据进行查询等各种操作,而且这些操作全部由系统内部的代码完成,用户只需要通过该系统友好的界面,输入一些简单的数据便可操作,使用者可以很轻易地学会使用。
2系统概述
2.1开发目的
本系统采用B/S模式设计,开发目的除了方便用户可以通过系统查询车票情况,或者对车票进行预定等操作之外,还能让售票员管理火车票信息,相当方便。
2.2开发环境
本系统是在WindowsXP操作系统下,基于Web服务器和浏览器IE6.0及其以上的版本。
本系统主要由使用ASP.NET以及HTML开发的页面和由SQLSEVER2000开发的数据库组成。
具体配置如下:
2.2.1硬件环境
1)CPU:
AMD2500+
2)内存:
512MB
3)硬盘:
80G
2.2.2软件环境
1)WindowsXP(含IIS)
2)MicrosoftSQLServer2000
2.3软硬件需求
为了保证系统运行的效率和可靠性,服务器端应具有较高软硬件配置,客户端的要求不需要很高。
此应用程序可广泛运行于Internet,也适用于内部的局域网,在运行本系统前,请检查一下计算机是否满足以下的客户端配置要求:
2.3.1硬件配置要求
1)CPU:
赛扬2.0GHZ以上
2)内存:
256MB以上
3)硬盘:
20G以上
2.3.2软件配置要求
1)Windows2000/NT/XP/2003
2)IE6.0
3数据库设计
3.1数据库概念模型
E-R(Entity-RelationshipApproach)图是最常用的概念模型表示方法,也是数据库的核心和基础,它是按用户的观点来对数据和信息建模,依据概念模型设计应具的特点:
真实性、易理解性、易修改性、易转换性,火车联网售票系统的E-R图如下所示。
图3.1订单信息E-R图
图3.2管理员信息E-R图
图3.3车票信息E-R图
图3.4火车线路E-R图
图3.5用户信息E-R图
图3.6用户留言E-R图
图3.7公告信息E-R图
3.2数据库各表设计
火车联网售票系统数据库采用MicrosoftSQLSERVER,数据库中的表及其作用如下。
Account:
包含用户注册信息,主要有用户名(登录网站用的名字)、登录网站的密码、用户身份证号、用户的姓和名等。
如表3-1所示。
AddressMessage:
包含火车时刻表信息,即是记录火车从始发站到最后的终点站这一的路线上所经过的每一站和到站时间、离站时间。
如表3-2所示。
Admin:
包含管理员信息,即管理员帐号和密码。
如表3-3所示。
HotMessage_Notice:
存放热门信息和公告,记录由管理员发布的公告信息及其他热门信息等。
如表3-4所示。
Orders:
存放订单信息,主要是订单号、用户所订购火车票的票号、订票的用户名、票单价、用户订购票的数量等。
如表3-5所示。
UserLeaveMessage:
存放用户留言,即用户对网站的一些建议,想与其他用户之间交换、出售、购买火车票等的信息。
如表3-6所示。
TicketDetail:
包含火车票信息,主要有车票的票号、是否被订购、车票日期、车票单价、车次、到站时间、离站时间。
如表3-7所示。
表3-1Account
字段名
数据类型
长度
是否允许为空
字段描述
userId
varchar
80
否
用户名
email
varchar
80
否
用户邮箱
firstName
varchar
80
否
姓
lastName
varchar
80
否
名
addr
varchar
80
否
用户地址
identifyNum
varchar
20
否
用户身份证号
phone
varchar
80
否
用户电话
passWord
varchar
80
否
用户密码
表3-2AddressMessage
字段名
数据类型
长度
是否允许为空
字段描述
id
int
4
否
编号
trainId
varchar
20
否
车次
name
varchar
20
否
车站名
arriveTime
varchar
20
否
到站时间
leaveTime
varchar
20
否
离站时间
表3-3Admin
字段名
数据类型
长度
是否允许为空
字段描述
adminId
varchar
80
否
管理员帐号
adminPassWord
varchar
80
否
管理员密码
表3-4HotMessage_Notice
字段名
数据类型
长度
是否允许为空
字段描述
id
int
4
否
编号
showTime
datetime
8
否
发表时间
content
varchar
50
否
内容
表3-5Orders
字段名
数据类型
长度
是否允许为空
字段描述
orderId
int
4
否
订单号
userId
varchar
80
否
用户名
ticketId
int
4
否
车票编号
ticketUnitPrice
money
8
否
车票单价
orderticketNum
int
4
否
订购数目
orderTime
varchar
20
否
订票时间
trainId
varchar
20
否
车次
表3-6UserLeaveMessage
字段名
数据类型
长度
是否允许空
字段描述
id
int
4
否
编号
userId
varchar
80
否
用户名
writeTime
datetime
8
否
留言时间
content
text
16
否
留言内容
表3-7TicketDetail
字段名
数据类型
长度
是否允许为空
字段描述
ticketId
int
4
否
车票编号
orderTicketStatus
bit
1
否
是否被订
ticketDay
varchar
20
否
车票日期
ticketUnitPrice
money
8
否
车票单价
trainId
varchar
20
否
车次
sourceAddr
varchar
20
否
起点站
destinationAddr
varchar
20
否
终点站
arriveTime
varchar
20
否
到站时间
leaveTime
varchar
20
否
离站时间
seatStatus
varchar
20
否
卧铺/硬座
3.3数据库的连接
1)为了在移植程序时便于数据库连接,将连接字符串写为一个类,在程序中调用这个类。
2)如遇到移植程序需要更改连接字符串时,只需要在类这一处更改就可以了,极大的减轻了工作量,增强了程序的可移植性。
3)这个类名为Strconn,代码如下:
publicclassStrconn
{
publicStrconn()
{
//TODO:
在此处添加构造函数逻辑
}
privatestaticstringconnString="server=(local);database=TrainSaildb;uid=sa;Pwd=sa";
publicstaticstringConnString
{
Get
{
returnconnString;
}
}
}
4系统总体设计
根据火车联网售票系统的逻辑划分,本系统一共分为五个子系统,分别是用户登录和注册子系统,火车票查询子系统,订票子系统,用户管理子系统,管理员管理子系统。
其功能结构图如图4.1所示。
图4.1系统功能结构图
4.1用户登录和注册子系统
4.1.1用户登录模块
主要完成用户登录的功能,并将用户名记录入cookie中。
如果注册用户想要订购火车票,就必须登录。
登录时必须正确添写用户名和密码。
如果游客没有注册。
登录界面有到注册界面的连接。
4.1.2用户注册模块
完成用户注册的功能。
登录的注册用户和未登录的游客的区别在于登录的注册用户可以浏览首页,查询火车票,订购火车票,管理(查看、修改)自己的注册信息,查看自己的订单信息,可以在网站上留言(例如:
用户查询到自己想要的火车票已经售完,就可以在网站上留言,求购此票);而未登录的游客则只能浏览首页,查询火车票,其余的功能都不能用。
4.2火车票查询子系统
4.2.1快速查询
主要实现按起点站、终点站来查询车票。
在首页有一个快速查询模块,用户无须经过点击连接按钮,转到专门的查询页面再进行查询这样一个麻烦的过程就能得到较为满意的查询结果。
4.2.2详细查询
主要实现按日期、起点站、终点站、车次、是否是卧铺这五点来查询。
虽然有快速查询这样一个方便的查询模块,但其功能不够强大,有时可能不能满足用户的查询要求,这时就需要这样一个功能强大的详细查询模块。
4.3订票子系统
主要实现将用户选种的车票进行锁定,以及生成定单并显示。
这是网站的一个重要功能模块,在显示详细的查询信息页面点击订购按钮后,将转向订单页面,并向之传递用户所订购火车票的信息,然后在订单页面生成订单并显示。
4.4用户管理子系统
4.4.1用户注册信息的管理
主要实现用户自己的注册信息的修改。
有时用户因为各种情况需要修改自己的注册信息,就可以进入用户管理子系统。
点击用户注册管理的子模块,修改自己的注册信息。
4.4.2订单管理
主要实现查询和删除用户已经下了的订单。
4.4.3用户留言模块
实现用户留言功能。
这是用户与用户之间,用户与管理员之间交流的窗口。
用户可以通过它向网站提出建议;与其他用户之间进行信息交流,例如用户查询到自己想要的火车票已经售完,就可以在网站上留言,求购此票,或与其他用户换票等。
极大的丰富网站功能,方便了用户。
4.5管理员管理子系统
4.5.1订单信息管理
主要实现查询所有的订单以及删除订单的功能。
可能会出现一些情况,使管理员需要删除一些用户的某些订单,这个功能模块就是为应对这种情况而作的。
4.5.2用户信息管理
主要实现查询所有的用户注册信息以及删除功能。
一个完善的网站一定会有对用户信息管理,主要是查看删除用户的注册信息。
4.5.3车票信息管理
主要实现查询所有的车票信息以及对车票信息的修改和删除。
可能会出现一些情况使得现有车票不符和实际情况,所以就需要管理员能对车票信息进行修改和删除。
4.5.4地址信息管理
主要实现查询所有的地址信息以及对地址信息的修改和删除。
可能会出现一些情况使得火车到点时刻出现变化,这就需要管理员能对之进行相应的改动。
4.5.5用户留言管理
主要实现查询所有的用户留言以及对用户留言删除。
首先管理员应该能够查看所有的用户的所有留言,这才能发现违反规定的用户留言,为进一步的删除操作做好前提准备。
其次用户留言可能会很多,如不及时清除会站用太多的存储空间,所以需要管理员能够对用户留言进行删除。
4.5.6发布公告/热门信息模块
主要实现管理员对一些信息的发布。
这个模块是实现与用户交流的一个窗口。
管理员可以通过它发布一些当前的热门车票的信息;发布一些网站公告等。
它与用户留言模块一起构成了网站与用户的沟通。
5系统具体设计
5.1用户登录和注册子系统设计
5.1.1功能概述
1)登录时用户输入自己的用户名和密码,如果少输或输入出错及没有注册,则给出相应的出错信息。
2)按提示填写注册信息。
用验证控件来控制用户是否输入,检验用户输入密码与确认密码是否一致。
5.1.2用户登录和注册子系统的实现
1)用户登录和注册主要由Login.aspx和CreateNewAccount.aspx来完成。
2)当用户进入Login.aspx页面要登录时,先选择登录身份,然后输入用户名和密码就可以了。
如果输入错误或少输入了一项或两项则会显示出错信息。
3)如果要注册帐户,则进入CreateNewAccount.aspx页面,按照页面上的提示填写注册信息,然后提交。
对于用户输入的信息由验证控件来验证。
4)以下是在Login.aspx页面里实现在cookie中记录用户ID,以便在其他页面能够对用户是否登录进行验证,从而避免用户在浏览器的地址栏中直接输入网址,从而跳过身份验证页面进对非法访问。
Ø创建cookie的代码如下:
HttpCookienewcookie_Manager=newHttpCookie("ManagerCookie");
newcookie_Manager.Values["ManagerID"]=this.username.Text;
Response.AppendCookie(newcookie_Manager);
Ø对管理员是否登录的验证代码:
if(Request.Cookies["ManagerCookie"]==null)
Response.Redirect("Login.aspx");
Ø对用户是否登录的验证代码:
if(Request.Cookies["customerCookie"]==null)
Response.Redirect("Login.aspx");
5.2火车票查询子系统设计
5.2.1功能概述
1)快速查询功能是指只输入起点站、终点站,就可查询的一个功能模块。
2)
详细查询功能是指按日期、起点站、终点站、车次、是否是卧铺这五点的任意组合来查询的一个功能模块。
如图5.1所示。
图5.1详细查询页面截图
5.2.2火车票查询子系统的实现
1)查询是由用户控件SimpleSearch.ascx、DetailSearch.aspx和SearchResults.aspx三个文件来完成。
2)当用户登录首页时,会有供选择查询条目的两个下拉框(简单查询),用户在下拉列表中选择所需的条目,然后点击提交按钮。
3)当用户需要更详细的查询时,可进入详细查询页面(DetailSearch.aspx),其中有包括日期、起点站、终点站、车次、是否是卧铺这五种查询条件的下拉框,用户可选择这五种查询条件的任意组合,进行查询。
4)两种查询方式在提交后,都将转向查询结果页面(SearchResults.aspx),在其中显示查询结果,以便进一步操作。
5)实现多种查询条件任意组合进行查询的关键是根据不同的组合选用相应的SOL语句,是由SelectIdentify()函数完成实现的,代码如下:
(因代码太多,共有200多行,所以只取其一部分,其余的用省略号代替)
protectedstringSelectIdentify()
{
if(Session["ticketday"].ToString()!
="")
{
if(Session["sourceaddr"].ToString()!
="")
{
if(Session["destinationaddr"].ToString()!
="")
{
if(Session["trainid"].ToString()!
="")
{
if(Session["seatstatus"].ToString()!
="")
{
return"selecttrainId,ticketDay,sourceAddr,destinationAddr,arriveTime,leaveTime,seatStatus,ticketUnitPrice,ticketIdfromTicketDetailwhereticketDay=@ticketdayandsourceAddr=@sourceaddranddestinationAddr=@destinationaddrandtrainId=@trainidandseatStatus=@seatstatusandorderTicketStatus<>0andoperateStatus<>1";
}
else
{
return"selecttrainId,ticketDay,sourceAddr,destinationAddr,arriveTime,leaveTime,seatStatus,ticketUnitPrice,ticketIdfromTicketDetailwhereticketDay=@ticketdayandsourceAddr=@sourceaddranddestinationAddr=@destinationaddrandtrainId=@trainidandorderTicketStatus<>0andoperateStatus<>1";
}
……
}
}
5.3订票子系统设计
5.3.1功能概述
用户在查找到自己所需的票后,点击订购,就会自动生成订单,完成订票功能。
在详细信息页面点击订购,就完成了订购功能,转向订单页面显示。
如图5.2所示。
图5.2显示订单页面截图
5.3.2订票子系统的实现
1)订票的实现主要是由ShowDetail.aspx和Order.aspx两个文件来完成的。
2)在显示详细页面(ShowDetail.aspx)中,每一张票都有一个对应的“点击订购”的按钮,用户点击后会将参数传到Order.aspx页面,在其中生成订单,并返回显示。
3)本页主要代码如下:
Ø将订单信息插入订单表Orders中的代码:
SqlCommandcmd=newSqlCommand("upOrdersadd",conn);
cmd.CommandType=CommandType.StoredProcedure;
SqlDataAdapterda=newSqlDataAdapter(cmd);
Ø显示自己的定单信息的代码:
stringsql="select*fromOrderswhereuserId=@userid";
SqlCommandcmd_show=newSqlCommand(sql,conn);
HttpCookiecookie=Request.Cookies["customerCookie"];
cmd_show.Parameters.Add("@userid",SqlDbType.VarCha