火车票预订系统报告Word文件下载.docx
《火车票预订系统报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《火车票预订系统报告Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
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硬件配置要求
赛扬2.0GHZ以上
256MB以上
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
用户邮箱
firstName
姓
lastName
名
addr
用户地址
identifyNum
20
用户身份证号
phone
用户电话
passWord
用户密码
表3-2AddressMessage
id
int
4
编号
trainId
车次
name
车站名
arriveTime
到站时间
leaveTime
离站时间
表3-3Admin
adminId
管理员帐号
adminPassWord
管理员密码
表3-4HotMessage_Notice
showTime
datetime
8
发表时间
content
50
内容
表3-5Orders
orderId
订单号
ticketId
车票编号
ticketUnitPrice
money
车票单价
orderticketNum
订购数目
orderTime
订票时间
表3-6UserLeaveMessage
是否允许空
writeTime
留言时间
text
16
留言内容
表3-7TicketDetail
orderTicketStatus
bit
1
是否被订
ticketDay
车票日期
sourceAddr
起点站
destinationAddr
终点站
seatStatus
卧铺/硬座
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["
]==null)
Response.Redirect("
Login.aspx"
对用户是否登录的验证代码:
customerCookie"
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"
if(Session["
destinationaddr"
{
if(Session["
trainid"
{
if(Session["
seatstatus"
{
return"
selecttrainId,ticketDay,sourceAddr,destinationAddr,arriveTime,leaveTime,seatStatus,ticketUnitPrice,ticketIdfromTicketDetailwhereticketDay=@ticketdayandsourceAddr=@sourceaddranddestinationAddr=@destinationaddrandtrainId=@trainidandseatStatus=@seatstatusandorderTicketStatus<
>
0andoperateStatus<
1"
}
else
selecttrainId,ticketDay,sourceAddr,destinationAddr,arriveTime,leaveTime,seatStatus,ticketUnitPrice,ticketIdfromTicketDetailwhereticketDay=@ticketdayandsourceAddr=@sourceaddranddestinationAddr=@destinationaddrandtrainId=@trainidandorderTicketStatus<
……
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["
];
cmd_show.Parameters.Add("
@userid"
SqlDbType.VarCha