车站售票管理系统数据库课程设计分析方案.docx
《车站售票管理系统数据库课程设计分析方案.docx》由会员分享,可在线阅读,更多相关《车站售票管理系统数据库课程设计分析方案.docx(19页珍藏版)》请在冰豆网上搜索。
车站售票管理系统数据库课程设计分析方案
车站售票管理系统数据库课程设计分析方案
天津农学院
计算机科学与信息工程系
《SQLServer》教案实习报告
实习名称:
SQLServer
专业:
计算机科学与技术
班级:
2018级农信班
学号:
1008074112
姓名:
张春
指导教师:
赵光煜
成绩:
2018年9月
1.3数据流图
1.4数据字典
1.数据项
票号、票价、车次、日期、车型、开车时间、票种、座位号、起始站、终点站、身份证号、银行卡号、数量、退票时间、退票手续费、订票时间、订票手续费
2.数据结构
表1.1车票的数据结构
DS-01车票
DS-02:
车票标志
DS-03:
车次信息
DS-04:
座位信息
DS-05:
票价信息
I1:
车票编号
I3:
起始站
I8:
座位号
I9:
全票价
I2:
车票类型
I4:
车次编号
I10:
折扣
I5:
终点站
I6:
发车时间
I7:
乘车日期
3.数据流
数据流编号:
DS1
数据流名称:
车票
简述:
车票有关信息
数据流来源:
用户执行售票操作结果
数据流去向:
购票旅客
数据流组成:
车票编号+车票类型+车次信息+座位信息+票价信息
4.数据存储
售票记录:
票号,起始站,终点站,票价,车次,日期,开车时间,
车型,票种,座位号,售出时间
退票记录:
票号,起始站,终点站,票价,车次,日期,开车时间,
车型,票种,座位号,退票时间
订票记录:
票号,起始站,终点站,票价,车次,日期,开车时间,
车型,票种,座位号,订票时间,顾客身份证号
缺票记录:
票号,起始站,终点站,票价,车次,日期,开车时间,
车型,票种
车票记录:
票号,起始站,终点站,票价,车次,日期,开车时间,
车型,票种,座位号,售出时间,票数
5.处理过程
车票汇总:
工作人员将一天所售出的票进行统计,包括票数,票类,形成确定的车票记录。
查询:
将顾客需要的车票信息输入系统,并查询其是否可供应。
查询顾客信息:
为订票所设,将顾客的准确信息记录,为其预定所车票。
处理买票:
进行买票交易,把顾客需要的票<可供应)售出,并在系统中作相应记录,确定车票记录。
处理订票:
进行订票交易,工作人员为顾客预定其所需车票,并在系统中作相应记录,确定订票记录。
处理退票:
进行退票交易,工作人员为顾客办理退票手续,并在系统中作相应记录,确定退票记录。
2概念及逻辑结构设计
2.1E-R图
本系统根据以上的设计规划出的实体有:
车票实体、车站实体、顾客实体。
各个实体具体的描述E-R图如下:
图2-1车票ER图
图2-2顾客ER图
图2-3实体之间ER图
2.2关系模型
车票与顾客之间的联系
售票1:
N
车票<票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客<身份证号,银行卡号,票号)
退票1:
N
车票<票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客<身份证号,银行卡号,票号,退票时间,退票手续费)
订票1:
N
车票<票号,车次,日期,车型,票价,开车时间,票种,座位号,起始站,终点站)
顾客<身份证号,银行卡号,票号,日期,交易时间,交易金额,数量,起始站,终点站)
2.3数据库结构
表2.1Train表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
TrainID
字符
是
是
车次编号
TrainType
单精度
否
否
客车型号
PlateNumber
字符
否
是
车牌号
TrainHolder
字符
否
否
责任人
RunningWay
字符
否
否
经营路线
SeatLimit
单精度
否
是
座位限额
OutSetTime
日期
否
是
发车时间
表2.2Seat表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
TrainID
字符
否
是
车次编号
Date
日期
否
是
日期
Terminal
字符
否
是
终点站
Selled
布尔
否
否
票是否售出
Price
单精度
否
是
车票价格
表2.3PriceDiscount表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
RecordNumber
自动编号
是
是
记录号
TicketTypeID
单精度
否
是
车票类型
Discount
单精度
否
是
折扣
TrainID
字符
否
是
车次
表2.4Price表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
TerminalID
字符
是
是
终点站编号
OutStation
字符
否
否
起始站
TerminalName
字符
否
是
终点站
TNPYCode
字符
否
是
拼音码
TrainID
字符
否
是
车次编号
TicketPrice
单精度
否
是
票价
表2.5Type表详细设计
字段名
数据类型
是否主键
是否必填
字段说明
RecordID
自动编号
是
是
记录号
TicketTypeID
单精度
否
是
车票类型编号
TicketType
字符
否
是
车票类型
3数据库设计
本车站售票系统有两个实体,分别是车票和顾客,利用SQL建表如下:
3.1建立表—车票和顾客
车票
顾客
系统实现的具体功能和创建的各类代码如下所示:
createdatabase练习
onprimary
(
name=trainticket,
filename='E:
\my.mdf',
size=10mb,maxsize=30mb,
filegrowth=2mb
>
logon
(
name=trainlog,
filename='E:
\my.ldf',
size=10mb,
maxsize=20mb,
filegrowth=26%
>
Createtable车票
<票号nchar(10>primarykeynotnull,
日期nchar(10>notnull,车次nchar(10>notnull,座位号nchar(10>
Notnull,开车时间nchar(10>notnull,车型nchar(10>notnull,检票口nchar(10>notnull,起始站nchar(10>notnull,
终点站nchar(10>notnull,票价nchar(10>notnull,票种nchar(10>notnull)
Createtable顾客
<身份证号floatprimarykeynotnull,
银行卡号floatnotnull)
3.2建立触发器
Trigger1
createtrigger顾客_inserton顾客
forinsert,update
as
declare@_身份证号asfloat
select@_身份证号=i.身份证号frominsertedi
ifnotexists(select*from顾客where身份证号=@_身份证号>
begin
print'该用户不存在!
'
rollbacktran
end
else
rollbacktran
print'插入成功'
Trigger2
createtriggerinsead_of_insert
on车票
insteadofinsert
as
declare
@_票号nchar(10>,
@_日期nchar(10>,
@_车次nchar(10>,
@_座位号nchar(10>,
@_开车时间nchar(10>,
@_车型nchar(10>
@_检票口nchar(10>
@_起始站nchar(10>
@_终点站nchar(10>
@_票价nchar(10>
@_票种nchar(10>
set@_票号=(select票号frominserted>
set@_日期=(select日期frominserted>
set@_车次=(select车次frominserted>
set@_座位号=(select座位号frominserted>
set@_开车时间=(select开车时间frominserted>
set@_车型=(select车型frominserted>
set@_检票口=(select检票口frominserted>
set@_起始站=(select起始站frominserted>
set@_终点站=(select终点站frominserted>
set@_票种=(select票种frominserted>
set@_身份证号=(select身份证号frominserted>
set@_银行卡号=(select银行卡号frominserted>
insert顾客values(@_身份证号,@_银行卡号>
insert车票values(@_票号,@_日期,@_车次,@_身份证号码,@_座位号,@_开车时间,@_车型,@_检票口,@_起始站,@_终点站,@_票种,@_银行卡号>
4系统软件结构
4.1系统功能设计
火车站售票管理系统主要设有五个主要功能模块:
分别是车次管理、票价管理、票务管理、用户管理和查询管理。
1.车次管理模块
该模块主要实现车次信息的编辑。
车次管理中的数据源为Access数据库中Train表,在此管理部分中,能够使用界面操作实现车次信息的编辑,并将数据库中的数据按照编辑的要求来及时更新数据表中的相关数据。
2.票价管理模块
该模块主要实现票价信息的录入、修改与删除以及票价折扣信息的录入、修改与删除。
票价详细信息的录入、修改、删除,它的数据源为Access数据库的Price表。
在此管理部分中,通过票价管理当命令为修改或者添加时则自动跳转到票价编辑窗体3.票务管理模块
票务管理部分实现前台售票、前台退票功能。
主要完成售票、远程售票、废票、取消废票功能、改签票、退票、取消退票功能、补票、售票查询和票款结算单填写等功能。
4.用户管理模块
该模块主要实现用户添加,用户信息修改与用户的删除。
所有系统用户的管理,包括系统普通用户与系统管理员。
此管理模块数据源为Access数据库的Users表。
在系统主界面中首先进入的是名称为FrmUserMan的用户管理主窗体,通过提取用户名、用户类型来查看用户具体信息,选择添加或删除用户进入名为FrmUserEdit的用户编辑界面进行操作,操作完成便更新数据库数据。
5.查询管理模块
该模块主要实现拥护通过查询界面可以根据条件进行车次时刻、车次票价查询。
4-1.功能模块图
4.2其他需求
火车站售票系统数据库中的数据量十分庞大,而且更新速度十分快。
在数据大小方面要求数据的属性要设置合理,假如是数据的属性值越大,则数据本身所占用的容量也就十分的庞大,不但会造成传输的不方便甚至错误,也更加重系统的负担,有可能削弱系统运行速度,使得系统无法达到预期的目的。
另外,在整个系统当中要确保数据在保存与传递过程中的安全,以免发生严重的错误,造成巨大的损失。
4.3说明
售票
正常出售本站所有车次车票,并按要求打印出车票。
远程售票
正常出售远程车站所有车次车票,并按远程车站的要求打印出车票。
废票
在正常售票过程中,可能因操作失误或打印机械故障等原因造成错票而作废车票。
取消废票
当废票时,发现废的票是不应该废的,即为正常票,需要通过取消废票来实现。
远程废票
对所售远程车票作废票处理。
退票
在正常退票时间内办理退票,并根据退票规定收取一定的手续费。
远程退票
对所售远程车票作退票处理。
取消退票
当退票时,发现退的票是不应该退的,即为正常的票,需要通过取消退票来实现。
改签票
由于乘客或车站某种原因需对已出售的车票作更换车次的车票。
改签仅允许改签一次。
远程改签票
对所售远程车票作改签处理。
注销票
删除某些由于调试程序所用的票记录及其影响。
补票
只能在超过售票时限后进行,且在未发车之前,在统计时注意对非微机售票的票的处理<例如:
剪刀票)。
售票查询
通过一定的授权和设定售票员可以查询在设定时间范围内或多少张票以前的出售、作废、改签和退票的情况,并对有权限的人员可有累计票款服务。
票款结算单
售票员每天售完车票后填写每日结算单,以便财务人员查询。
重打车票
在正常售票过程中,可能因打印机械故障等原因造成错票而重新打印车票。
售票类型
车票中所有联都应有的信息为车次、起止站点、票价、发车日期时间,而正联所特有的信息为售票员工号、检票口、是否改签票、车票上应有的信息:
车票固有票号、计算机打印的票号、票号条形码<仅用于自动检票的车站)。
车票类型
1>正常班次车票:
发售的当天或预售正常轮班车次的车票。
2>远程售票:
发售远程车站车次的车票,其打印格式同远程车站。
3>流水班次车票:
发售的流水班次车票。
4>退票和改签票:
退票分为
A、正常退票。
办理标准规定退票时间内的退票。
B、强行退票。
在超过时限后退票,即强行退票。
补票:
补票只能在超过售票时限后进行,且必须在未发车之前。
订票:
设定定票有效期限,在有有效时限保留座位,有效时外释放座位等。
票种的定义
①全价票
②半价票允许设定可用标志,自由定义名称。
③免票只允许设定可用标志。
④优惠票1-3允许设定可用标志,自由定义名称。
⑤折扣票对原票价的基础上进行一定的打折,有严格的权限控制。
5总结与体会
经过一学期的学习,对数据库应用课程设计这门学科有了充分的了解。
这次的课程设计我选择的题目是车站售票管理系统。
通过本次课程设计,巩固了我在课堂上所学的理论知识,更进一步的理解了面向对象编程的基本思想,并且对SQL语言的理解和掌握又有了一定的巩固与提高。
此外学会了建立存储过程和触发器。
通过查阅资料,我还明白了存储过程是编译后放在服务器端的程序,它可以被别的模块调用,且不需要重新编译,这样就大大减轻了客户端的负担,且有效的提高了系统执行的效率。
6参考文献
[1]《数据库系统概论》<第四版)萨师煊,王珊高等教育出版社,2005
[2]高春艳,李俊民.VisualBasic信息系统开发案例精选[M].北京:
机械工业出版社,2005
[3]林卓然.VisualBasic程序设计教程[M].北京:
电子工业出版社,2004
[4]范剑波.数据库技术及应用[M].浙江:
浙江大学出版社,2007
[5]严辉,刘卫国.数据库技术与应用实践教程——SQLSERVER[M].北京:
清华大学出版社,2007
[6]《数据库原理与应用》张俊玲等清华大学出版社,2005