车站售票系统.docx
- 文档编号:25193134
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:17
- 大小:539.73KB
车站售票系统.docx
《车站售票系统.docx》由会员分享,可在线阅读,更多相关《车站售票系统.docx(17页珍藏版)》请在冰豆网上搜索。
车站售票系统
滨江学院
《Web技术与应用》课程设计
题目车站售票系统
院系计算机系
年级班级10软工3班
学生姓名丁林梅
学号20102344902
学期2012-2013
(2)
任课教师陈瑶
车站售票系统
1引言
随着Internet的迅速发展和用户数量的急剧增加,互联网对于企业和事业单位的运营和发展日益重要,网上交易也逐渐被人们认可,并成为未来交易的发展方向。
在这种情况下,很多原有的C/S模式的系统也逐步向B/S模式靠拢,铁路客车售票系统也不例外。
铁路客车售票系统是铁路旅游服务信息系统的一个重要组成部分,为旅客提供优质便捷的服务。
为了提高铁路客运的售票效率,丰富铁路客运的营销手段,火车站售票总站的下属代售点可以通过公用的互联网资源,实现网上的售票,查询及管理工作。
本论文围绕如何实现基于B/S结构的客票系统展开讨论,通过对现有C/S结构的售票系统与B/S结构的优缺点进行比较,给出基于B/S结构售票系统的具体解决方案:
查询,买票,订票,退票,新闻管理,用户管理等六大模块,并研究B/S结构在网络中面临的安全问题及提出相应的解决方案。
2系统设计
1.需求分析
客车售票系统的总目标是:
在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的客车售票系统,为企业的决策层提供准确、精细、迅速的客票销售信息。
2.功能分析
(1)功能需求
客票系统通过计算机网络将客户端与服务器的数据库相连,将从客户端得到的信息进行处理,实现车次查询,售票,订票,退票,新闻管理,销售统计等功能。
以计算机为中心,实现销售业务的计算机自动化,为铁路部门降低成本、提高销售额、为铁路部门的经营决策提供及时精确的依据。
(2)查询功能需求
查询功能要能满足至少两种方式的查询:
按车次查询,按站点查询。
如果查询出来满足条件的车次后,用户可以直接点击购买。
查询出来的信息里面应该包括车次,开车时间,到达时间,起始站,终点站,车辆类型等主要车次信息。
(3)售票功能需求
售票模块主要有两个入口:
一个是系统主界面的买票按钮,另一个是查询结果后面的购买按钮。
买票界面里可以供用户填写或者选择的内容有:
车次,开车时间,起始站,终点站,座位类型,票数等。
还要有价格计算按钮,购买按钮和重置按钮。
每趟车次的具体路段起始站和终点站要在用户输入车次后自动绑定,供用户选择。
点击购买按钮后,系统给出具体的购买票据,并且要能打印票据。
(4)退票功能需求
退票模块要能实现两种功能:
退订和退票。
退订是指用户有过订票记录,但票还没拿到;退票是指用户退掉已经拿到的车票(退票时间必须给出具体限制)。
(5)订票功能需求
订票模块和买票模块主要有两点区别:
用户进行订票操作时必须要输入用户信息;订票的和买票的提前时间不同,订票可以提前更多的时间。
订票操作成功后,系统应给出具体的订票信息票据。
(6)注册功能需求
第一次使用系统时,首先要做的是注册用户,注册用户模块里主要分两种类型的注册:
代售点注册和企业用户注册。
这两种注册方式的差别体现在所填注册信息上。
不同的用户拥有不同的权限。
3.功能模块设计
●系统安全可靠
未经注册的用户不能登录系统,用户个人信息和购票信息通过互联网上传输时,要确保信息的安全性。
●系统准确及时
用户对系统进行操作时,系统应在很短时间内(一般以秒为单位)给与响应。
●系统的可扩展性
对于用户新的需求,能做到只需添加新模块即可满足用户要求。
,功能模块图如图1所示。
图1系统功能模块结构图
3、数据库设计
本系统采用的数据库软件为SQLserver2000,本系统用到的数据库名为selltickets(售票),它里面包括9张表,为了便于理解,本系统的所有表的字段名称都为中文汉字,下面逐一介绍。
1.用户表
表1用户表
字段名称
数据类型
长度
描述
序号
Int
4
主键
用户名
Char
10
用户名
密码
Char
10
密码
联系方式
Varchar
50
联系方式
负责人
Char
10
负责人
单位全称
Varchar
50
单位全称
具体地址
Varchar
20
具体地址
身份证
Char
20
身份证号
代售点编号
Int
4
为代售点用户自动分配编号
用户类型
Int
4
代售点为1,企业用户为2
2.车次详细信息表
表2车次详细信息表
字段名称
数据类型
长度
描述
序号
Decimal
9
主键
车次
Char
18
车次
开车时间
Datatime
8
开车时间
到达时间
Datetime
8
到达时间
出发站
Char
50
出发站
到达站
Char
50
到达站
行程
Decimal
9
每两站之间的距离
3.普通列车价格表
表3普通列车价格表
字段名称
数据类型
长度
描述
序号
Int
4
主键
里程
Int
4
路程分段计费
普通列车
Decimal
9
普通列车对应路段价格
普快列车
Decimal
9
普快列车对应路段价格
特快列车
Decimal
9
特快列车对应路段价格
空调费率
Int
9
路段空调费率
座位类型
Char
10
座位类型
4订票记录表
表4订票记录表
字段名称
数据类型
长度
描述
序号
Int
4
主键
车次
Char
10
车次
出发站
Char
10
车发站
到达站
Char
10
到达站
座位类型
Char
10
座位类型
票数
Decimal
9
票数
总价格
Decimal
9
总价格
用户名
Char
50
用户名
联系方式
Decimal
20
联系方式
身份证
Decimal
20
身份证
发车日期
Datetime
8
发车日期
时间
Datetime
8
时间
座位号
Int
4
座位号
客车售票系统E-R图
图2系统E-R图
3系统实现
在前面分析和设计的基础上通过ASP.NET和sqlserver2000来实现售票系统。
下面将详细介绍每个功能模块是如何实现。
主要模块如图2所示。
(1)管理员登录(login.aspx)
用户输入用户名和密码后,点击登录,系统执行登录按钮的鼠标点击事件,登录按钮的鼠标点击事件里面先判断用户名和密码两个文本框是否为空,如果为空,提示“输入信息不完整!
”,如果两个文本框不为空,以用户名为查询条件,查询user表(用户表),查询出来的结果填充到数据集里面,然后判断数据集里面的数据表,如果行数为空,说明用户为非法用户,提示“用户名或者密码错误”,如果行数大于等于一,通过验证,跳转到系统主界面。
管理员登录界面如下图3所示。
图3学生学籍管理系统登录界面
其关键代码如下:
以下代码实现的功能是判断管理员与密码是否正确,若正确跳转到主页面,否则显示出错信息。
privatevoidButton_denglu_Click(objectsender,System.EventArgse)
{
if(this.sqlConnection_user.State.ToString()=="Closed")
this.sqlConnection_user.Open();
//如果数据库连接状态为关闭,打开数据库连接
if(this.text_name.Text.Trim()!
=""&&this.text_password.Text.Trim()!
="")
//如果用户名和密码栏不为空
{stringsql="select*from[user]where用户名='"+this.text_name.Text.Trim()+"'and密码='"+this.text_password.Text.Trim()+"'";
//构造查询语句:
以用户名为条件查询数据库,
this.sqlDataAdapter_user.SelectCommand.CommandText=sql;
this.sqlDataAdapter_user.Fill(this.dataSet_user);
//把查询结果填充到数据集里面
if(this.dataSet_user.Tables[0].Rows.Count>0)
//如果查询结果不为空
{
Session["username"]=this.text_name.Text.Trim();
//把当前用户名纪录在Session["username"]。
this.Response.Redirect("main.aspx");
//跳转到系统主界面。
}
else
Global.Alert(this,"用户名或密码输入有误,请重新输入!
");
//如果查询结果为空,提示错误信息。
}
else
{
Global.Alert(this,"用户名或密码输入不完整!
");
//如果用户名和密码栏由空值,提示错误信息。
Session["username"]=null;
}
}
(2)注册模块
注册模块里有两种注册方式:
代售点注册和企业用户注册。
本系统从user表里的两个字段来区分:
一是“代售点编号”字段,如果是代售点注册,系统在用户注册时自动分配给该用户一个编号,如果是企业用户注册,该字段为空;二是通过“用户类型来区分”,如果是代售点注册,用户类型为“1”,如果是企业用户注册,该字段值为“2”,如果是高级管理员该字段值为“0”,这个字段的值在订票和买票作中要用到,因为不同的用户类型他的提前订票和买票时间不同
。
图4注册模块界面
Button_queding_Click事件的核心代码如下:
this.sqlDataAdapter_user.InsertCommand.CommandText="insertinto[user](序号,用户名,密码,联系方式,负责人,代售点编号,具体地址,身份证,用户类型)values('"+xuhao+"','"+xingming+"','"+mima+"','"+lxfs+"','"+fzr+"','"+bianhao+"','"+dz+"','"+sfz+"','"+yonghuleixing+"')";//构造sql插入语句
if(this.sqlConnection1.State.ToString()=="Closed")
this.sqlConnection1.Open();//打开数据库连接
this.sqlDataAdapter_user.InsertCommand.ExecuteNonQuery();//执行插入语句
this.Response.Redirect("zhucechenggong.aspx");//跳转到注册成功信息页面
◆获取IP的代码如下:
this.Label_IP.Text=Page.Request.UserHostAddress;
◆获取浏览器版本号的代码如下:
this.Label_LLQ.Text=Request.Browser.Version;
(3)系统主界面
系统主界面是所有系统其它所有模块的入口,主界面上的所有按钮鼠标点击事件主要执行两种代码:
一是直接跳转如:
this.Response.Redirect("xxx.aspx");,“xxx.aspx”是其它功能页面的名称,
二是在主界面的上弹出新的窗口,如:
stringmsg;
msg="
msg+="window.open('yhxx.aspx"+"','个人','height=220,width=650,top=150,left=200,toolbar=no,menubar=no,scrollbars=no,resizable=no,location,nn=no,status=no')";//设置弹出窗口的大小及位置
msg+="";
this.RegisterStartupScript("个人信息",msg);//执行javascript脚本
系统主界面如图5-3:
图5系统主界面
(4)售票模块
在买票页面,用户需要输入购买的车次,开车时间,起始站,终点站,座位类型,是不是学生票,票数,等信息。
这里要注意的是:
当用户输入车次后,直接去点起始站和终点站的下拉菜单是没有可选值的,正确定操作是输入车次后,点确定,系统会根据车次把该车次的详细路段信息绑定到起始站和终点站的下拉菜单里面,为什么要输入车次后点击确定?
这就是B/S结构系统得特点,要想得到结果必须要把数据提交给后台服务器,如果只是输入车次不点确定,后台无法或者车次信息。
同样的道理,当上面的车票信息都填写完后要点击价格按钮,系统会根据车次信息把价格计算出来,显示给用户。
计算出来价格后,用户就可以点击购买按钮,进行买票。
绑定车次代码
DropDownList_qsz(起始站下拉框)和DropDownList_zdz(终点站下拉框)两个下拉框开始时是空的,当用户输入车次后,点击“确定”按钮,系统会根据车次从数据库里面的ticketsinf表查询该车次的所有沿途站点,并把它绑定到DropDownList_qsz和DropDownList_zdz上,用户就可以从DropDownList_qsz和DropDownList_zdz里面分别选择起始站和终点站。
图6售票界面
其关键代码如下:
Button_quding_click(确定车次)事件里绑定起始站的核心代码如下:
dsbegin=newDataSet();//存放起始站的查询结果
sql="SELECT出发站FROMticketsinf";/*构造查询语句
sql+="where车次='"+this.Text_checi.Text.Trim()+"'";*/
if(this.sqlConnection1.State.ToString()=="Closed")/*打开数据库连接
this.sqlConnection1.Open();*/
this.sqlDataAdapter_ticketsinf.SelectCommand.CommandText=sql;/*执行查询操作
this.sqlDataAdapter_ticketsinf.Fill(this.dsbegin);*/
this.DropDownList_qsz.DataSource=this.dsbegin;//以下为绑定起始站代码
this.DropDownList_qsz.DataMember=this.dsbegin.Tables[0].ToString();
this.DropDownList_qsz.DataTextField=this.dsbegin.Tables[0].Columns[0].ToString();
this.DropDownList_qsz.DataValueField=this.dsbegin.Tables[0].Columns[0].ToString();
this.DropDownList_qsz.DataBind();
(6)订票模块
订票模块和买票模块共用一个界面,当在软件主界面分别点击买票和订票按钮时,通过URL传递给买票页面的参数(flag)不一样,买票页面在page_load事件里面先判断flag的值,如果flag=1,买票界面下面的用户信息栏(如图5-11)不显示,如果flag=2则显示用户信息栏。
其它的操作原理基本一致,只是订票操作在dingpiao表中要记录的字段多一些,这里不再螯述。
图7用户信息结构图
(7)查询模块
1.DateGrid控件
DateGrid(数据网格)控件是用来把数据库中的查询结果展示给用户,使用之前先要设置好它的数据源和数据成员。
当执行了查询语句后,填充数据集,再执行数据网格绑定,数据就可以展示出来。
本页面的DateGrid控件主要有以下几个事件:
DataGrid_ItemComman事件。
这个事件里面常用的命令有两种:
select,delete,DateGrid里面用到的是select命令,也就是我们在查询结果中看到的“购买”。
如图5-16:
8车次查询结果
其关键代码如下:
判断查询方式的代码如下:
if(this.TextBox_qsz.Text.Trim()!
=""&&this.TextBox_zdz.Text.Trim()!
="")
type="zh";//起始站和终点站都不为空,查询类型为“zh”
elseif(this.TextBox_qsz.Text.Trim()!
="")//按起始站查询
type="sfz";
elseif(this.TextBox_zdz.Text.Trim()!
="")//按终点站查询
type="zdz";
if(type!
=null)
{
this.displayccxx(type);//调用查询车次函数
}
(8)更新车次模块
更新车次这个模块式比较重要的模块,系统管理员在列车售票系统安装完成以后,首先要用到的就是这个模块。
在更新车次里,首先在车次基本信息表里添加车次记录,然后根据车次基本信息表对应的在车次详细信息表里把对应的详细站点,停开时间,路程等都添加进去,这样用户才可以在客户端查询到车次信息。
车次基本信息的字段比较多大体结构如图5-26:
用户管理模块主体界面如图5-22:
图9更新车次模块界面
4结束语
此次我选的课程设计题目是车站售票系统。
有了曾经几次做课程设计的经验,在做这次课程设计的程序初期,我就理清了思路,制定好了我所要完成的程序框架。
我去图书馆中借阅了大量的相关书籍,选择使用自己较为熟悉的VS2005和SQLSERVER2005作为本次毕业设计的程序开发工具。
我所制作的毕业设计是以SQLServer2005为数据库后台,采用ASP.NET框架,使用ASP.NET的控件与C#.NET开发的Web应用程序。
不仅是以前课上学过的只是得到了回顾与应用,也是我学到了许多书本外的编程知识。
以前的我每当程序调试时出现问题总是向老师寻求解答,而现在我已经能够自己独立解决一些程序中出现的问题。
并且在和其他同学在交流各自的毕业设计中也学到了很多,而且大家相互帮助共同提高。
通过这次的课程设计,使我对ASP.NET软件以及SQL数据库的理解更加深刻,对它们的运用更加纯熟,使之前在课堂中学习的薄弱点得到了大大加强,并且当我再次遇到一些调试时出现的小问题时能够有目的的去下手解决,这都让我收获了一些,前进了一步。
使我对错误的分析能力得到了显著的提高,以及为以后遇到问题该如何分析,如何一步步解决问题打下了基础,当以后自己走上社会遇到其它的问题,也提供了很好的处事方法。
参考文献:
[1]邹建峰,周山峰,项细威.C#企业级开发案例精讲.人民邮电出版社,2004.3
[2]陶宏才.数据库原理及设计.清华大学出版社,2004.2
[3]金雪云简明教程.清华大学出版社,2005.5
[4]石志国,刘冬梅,陈上应用教程.科技出版社,2003.1
[5]方振球.铁路无线售票系统的设计与开发.铁道科学研究院,2003.6
[7]黄钧.网络售票数据库安全通信系统.成都理工大学,2002.5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车站 售票 系统