车站售票管理系统范文.docx
《车站售票管理系统范文.docx》由会员分享,可在线阅读,更多相关《车站售票管理系统范文.docx(32页珍藏版)》请在冰点文库上搜索。
车站售票管理系统范文
数据库系统原理及应用
课程设计报告
车站售票管理系统数据库系统设计
专业__物联网工程__________
班级___1班_______________
学号_____________
姓名____黄_____________
福建工程学院软件学院
2014年6月19日
第一章绪论
1.1系统概述
火车售票管理系统主要用于车站日常的票务处理。
车售票管理系统在正常运行中需要对使用该系统的主要是火车站售票人员、火车站售票工作的管理人员与系统管理员。
为达到操作过程中的直观、方便、实用、安全等要求,我们组在这个系统中采用模块化程序设计的方法,便于系统功能的组合和修改,以及扩充和维护。
1.2研究的目的和意义
1.2.1研究的目的
铁路票务管理是一件比较负责但又非常重要的事情,它是涉及国家铁路运输的正常工作、国民经济的发展和人民生活水平及质量的大事情。
随着经济的发展,交通运输越来越便捷,为了提高效率,减轻劳动强度,设计开发高效的铁路信息查询系统就显得颇为重要。
1.2.2研究意义
火车售票管理中包含许多内容,有铁路乘客运输的运力问题,有订票管理问题等等。
铁路信息查询系统是企业信息决策和管理的重要的组成部分,是一种典型的信息管理系统,其开发主要包括后台的数据库的建立、维护以及前端的相应应用程序的开发两个方面的内容,数据库的建立和维护主要要求其管理数据的一致性、完整性、安全性等特点,而前台的应用程序开发则要求做到各项功能要完备、操作要简便、易学易用等特点。
1.3开发工具简介
本次课程设计开发软件为SQLServer2008,简介如下:
SQLServer:
SQLServer2008在Microsoft的数据平台上发布,帮助您的组织随时随地管理任何数据。
它可以将结构化、半结构化和非结构化文档的数据(例如图像和音乐)直接存储到数据库中。
SQLServer2008提供一系列丰富的集成服务,可以对数据进行查询、搜索、同步、报告和分析之类的操作。
数据可以存储在各种设备上,从数据中心最大的服务器一直到桌面计算机和移动设备,您可以控制数据而不用管数据存储在哪里。
SQLServer2008的新增功能
可信
SQLServer为您的业务关键型应用程序提供最高级别的安全性、可靠性和伸缩性。
高效率
为了抓住如今风云变幻的商业机会,公司需要能力来快速创建和部署数据驱动的解决方案。
SQLServer2008减少了管理和开发应用程序的时间和成本。
智能
SQLServer2008提供全面的平台,在用户需要的时候提供智能。
第二章数据库设计部分
2.1需求分析
2.1.1需求描述
信息时代已经来临,信息处理的利器——计算机应用于火车站售票的日常管理为火车站售票的现代化带来了从未有过的动力和机遇,为火车站票务管理领域的飞速发展提供了无限潜力。
采用计算机管理信息系统已成为火车站票务管理科学化和现代化的重要标志,给火车站票务带来了明显的经济效益和社会效益。
经分析我认为车站售票管理系统的具体要求为:
(1)售票功能
1.销售车票
任一售票员均可以售权限范围内车次的客票,权限可按班次、车属等属性由管理员设置。
可售全票、半票
2.预订车票
预订票可在任一未停止售票的车次上进行操作,预订数量仅受剩余
位数量限制。
预订的客票售票员不能售出。
预订的客票也可取消预订,取消预订的客票售票员可以售出。
在订票人来取票时,售票员可将预订的客票从电脑上售出
3.退票
退票时由退票员输入客票的编号,计算机将根据退票时的时间,自动确定退票手续费的比例,也可由系统管理员指定手续费比例。
对不合法的客票(如已办理退票手续的客票、超过规定时间的客票、没有售出的客票、已经作废的客票、不属于权限范围内售出的票等),计算机将自动识别,不予退票。
(2)查询功能
1车次查询,可以查询各个班次和票情况。
2时刻表查询:
查询任一时刻的班次和票情况。
3售票情况查询:
查询已售票和剩余票数的情况。
(3)、调度功能
1运价修改:
只有管理员有这一权限,根据各种调整票价。
2车辆修改:
对车辆信息进行调度和增删改功能。
3终点站修改:
对车次终点站的调度和修改。
4车次修改:
对各个车次实施调度和调整
(4)、维护功能
1车票表修改:
管理员针对实际情况对车票表的修改和维护
2预订车票表修改:
管理员根据车票的预定情况对该表进行修改和维护
3退票表修改:
该功能由管理员根据退票情况进行修改
4密码修改:
售票员可以根据个人修改自己的登入密码
(5)、统计功能
1售票统计:
可按车次,售票员对已售出票情况进行统计
2报表打印:
对当天和该月的售票情况及盈利情况做表
2.1.2数据词典
数据元素
数据类型
长度
数据来源
空值情况
汉语
简称
汉语
简称
车辆编号
Tnumber
Int
4
车辆表
Train
主关键字
车型
Ttype
Varchar
8
车辆表
Train
不为空
座位数
Tseat1
smallInt
2
车辆表
Train
可为空
站名
Ssite
Varchar
10
目标站名
Station
主关键字
里程
Smilea
Int
4
目标站名
Station
可为空
车次
Dnum1
Varchar
5
发车时刻表
Depart
主关键字
站名
Dsite
Varchar
10
发车时刻表
Depart
外键
车辆编号
Dnum2
Int
4
发车时刻表
Depart
外键
发车时间
Dtime
Datetime
8
发车时刻表
Depart
不为空
检票口
Dte
smallInt
2
发车时刻表
Depart
不为空
车次
Bnum1
Varchar
5
途径表
Bw
主关系键
站名
Bsite
Varchar
10
途径表
Bw
外键
票号
Tmark
Int
20
车票表
Ticket
主关系键
乘车日期
Tdate
Datetime
4
车票表
Ticket
不为空
车次
Tnum1
Varchar
5
车票表
Ticket
外键
站名
Tsite
Varchar
10
车票表
Ticket
外键
票价
Tprice
Float
8
车票表
Ticket
不为空
全半价
Thprice
Char
2
车票表
Ticket
不为空
座位号
Tseat2
smallInt
2
车票表
Ticket
不为空
工号
TJnum
Char
3
车票表
Ticket
可为空
退票否
Treturn
Char
1
车票表
Ticket
可为空
预定号
Bnum
Int
4
预定表
Book
主关系键
车次
Bnum1
Varchar
5
预定表
Book
外键
站名
Bsite
Varchar
10
预定表
Book
外键
乘车日期
Bdate
Datetime
8
预定表
Book
不为空
顾客名称
Bcustomer
Varchar
20
预定表
Book
不为空
票号
Bpoll
Int
2
预定表
Book
外键
票号
Rmark
Int
4
退票表
Rt
主关系键
退票时间
Rdate
Datetime
8
退票表
Rt
不为空
票价
Rprice
Float
8
退票表
Rt
不为空
工号
CJnum
Char
3
售票员表
Conductor
主关系键
姓名
Cname
Char
8
售票员表
Conductor
不为空
车型
Ftipe
Varchar
8
运价表
FR
主关系键
价格
Fprice
Float
8
运价表
FR
不为空
2.2数据库概念结构设计
2.2.1E-R图
2.2.2系统实体图
图2.1实体车辆及其属性
图2.2实体目标站名及其属性
图2.3实体发车时刻及其属性
图2.4实体途径及其属性
图2.5实体车票及其属性
图2.6实体预订及其属性
图2.7实体退票及其属性
图2.8实体售票员及其属性
图2.9实体运价及其属性
2.2.3实体及其属性定义
在此系统中实体有:
车辆,目标站名,,车票,售票员
联系有:
预订,车次,发车时刻
表2-1车辆表
属性名
数据类型
长度
是否为空
车辆编号
Int
4
主关键字
车型
Varchar
8
外键
座位数
Varchar
2
可为空
表2-2目标站名表
属性名
数据类型
长度
是否为空
站名
Varchar
10
主关键字
里程
Int
4
可为空
表2-3发车时刻表
属性名
数据类型
长度
是否为空
车次
Varchar
5
主关键字
站名
Varchar
10
外键
车辆编号
Int
4
外键
发车时间
Datetime
8
不为空
检票口
SmallInt
2
不为空
表2-4途径表
属性名
数据类型
长度
是否为空
车次
SmallInt
5
主关系键
站名
Varchar
10
外键
表2-5车票表
属性名
数据类型
长度
是否为空
票号
Int
20
主关键字
乘车日期
Datetime
4
不为空
车次
varchar
5
外键
站名
Varchar
10
外键
票价
Float
8
不为空
全半价
Char
2
不为空
座位号
SmallInt
2
不为空
工号
Char
3
外键
退票否
Char
1
可为空
表2-6预定表
属性名
数据类型
长度
是否为空
预定号
Int
4
主关键字
车次
Varchar
4
外键
站名
Varchar
10
外键
乘车日期
Datetime
8
不为空
顾客名称
Varchar
20
不为空
票号
Int
4
外键
表2-7退票表
属性名
数据类型
长度
是否为空
票号
Int
4
主关键字
退票时间
Datetime
8
不为空
票价
Float
8
不为空
表2-8售票员表
属性名
数据类型
长度
是否为空
工号
Char
3
主关键字
姓名
Char
8
不为空
表2-9运价表
属性名
数据类型
长度
是否为空
车型
Varchar
8
主关系键
价格
Float
8
不为空
2.3数据库逻辑结构设计
2.3.1初始关系模式
车辆(车辆编号,车型,座位数)
目标站名(站名,里程)
发车时刻(车次,站名,车辆编号,发车时间,检票口)
途径(车次,站名)
车票(票号,乘车日期,车次,站名,票价,全半价,座位号,工号,退票否)
预订(预定号,车次,站名,乘车日期,顾客名称,票号)
退票(票号,退票时间,票价)
售票员(工号,姓名)
运价(车型,价格)
2.3.2规范化处理
经过对初始关系模式的规范化处理一下关系模式中不存在部分函数依赖和传递函数依赖,已经达到3NF。
(代表主码,代表外码)
车辆(车辆编号,车型,座位数)
目标站名(站名,里程)
发车时刻(车次,站名,车辆编号,发车时间,检票口)
途径(车次,站名)
车票(票号,乘车日期,车次,站名,票价,全半价,座位号,工号,退票否)
预订(预订号,车次,站名,乘车日期,顾客名称,票号)
退票(票号,退票时间,票价)
售票员(工号,姓名)
运价(车型,价格)
2.4数据库物理结构设计
2.4.1基于SQLSever的数据表设计
用SQLSever建表
1)建立车辆表
CREATETABLE车辆表
(
车辆编号INTPRIMARYKEY,
车型VARCHAR(8)NOTNULL,
座位数SMALLINT,
FOREIGNKEY(车型)REFERENCES运价表(车型)
)
图2.10用SQLSever建立车辆表截图
2)建立目标站名表
CREATETABLE目标站名表
(
站名VARCHAR(10)PRIMARYKEY,
里程INT
)
图2.11用SQLSever建立目标站名表截图
3)建立发车时刻表
CREATETABLE发车时刻表
(
车次VARCHAR(5)PRIMARYKEY,
站名VARCHAR(10)NOTNULL,
车辆编号INTNOTNULL,
发车时间DATETIMENOTNULL,
检票口SMALLINTNOTNULL,
FOREIGNKEY(站名)REFERENCES目标站名表(站名),
FOREIGNKEY(车辆编号)REFERENCES车辆表(车辆编号)
)
图2.12用SQLSever建立发车时刻表截图
4)建立途径表
CREATETABLE途径表
(
车次VARCHAR(5)PRIMARYKEY,
站名VARCHAR(10)NOTNULL,
FOREIGNKEY(站名)REFERENCES目标站名表(站名)
)
图2.13用SQLSever建立途径表截图
5)建立车票表
CREATETABLE车票表
(
票号INTPRIMARYKEY,
乘车日期DATETIMENOTNULL,
车次VARCHAR(5)NOTNULL,
站名VARCHAR(10)NOTNULL,
票价FLOAT(8)NOTNULL,
全半价CHAR
(2)NOTNULL,
座位号SMALLINTNOTNULL,
工号CHAR(3),
退票否CHAR
(1),
FOREIGNKEY(车次)REFERENCES途径表(车次),
FOREIGNKEY(工号)REFERENCES售票员表(工号)
)
图2.14用SQLSever建立车票表截图
6)建立预定表
CREATETABLE预定表
(
预定号INTPRIMARYKEY,
车次VARCHAR(5)NOTNULL,
站名VARCHAR(10)NOTNULL,
乘车日期DATETIMENOTNULL,
顾客名称VARCHAR(20)NOTNULL,
票号INTNOTNULL,
FOREIGNKEY(车次)REFERENCES途径表(车次),
FOREIGNKEY(票号)REFERENCES退票表(票号),
FOREIGNKEY(票号)REFERENCES车票表(票号))
图2.15用SQLSever建立预定表截图
7)建立退票表
CREATETABLE退票表
(
票号INTPRIMARYKEY,
退票时间DATETIME,
票价FLOAT(8)NOTNULL
)
图2.16用SQLSever建立退票表截图
8)建立售票员表
CREATETABLE售票员表
(工号CHAR(3)PRIMARYKEY,
姓名CHAR(8)NOTNULL
)
图2.17用SQLSever建立售票员表截图
9)建立运价表
CREATETABLE运价表
(
车型VARCHAR(8)PRIMARYKEY,
价格VARCHAR(8)NOTNULL
)
图2.18用SQLSever建立运价表截图
2.4.2视图
1)查询车票表的基本信息的视图定义如下:
CREATEVIEW车票表_VIEW
ASSELECT*
FROM车票表
WITHCHECKOPTION
2.4.3录入数据
图2-19录入车辆表信息
图2-20录入目标站名表信息
图2-21录入发车时刻表信息
图2-22录入途径表信息
图2-23录入车票表信息
图2-24录入退票表信息
图2-25录入预定表信息
图2-26录入售票员表信息
图2-27录入运价表信息
2.5数据库操作部分
2.5.1数据库插入操作
在售票员表中插入一行数据
INSERT
INTO售票员表(工号,姓名)
VALUES('12','小宏');
图2-28数据库插入
2.5.2数据库修改操作
在售票员表中进行修改操作
UPDATE售票员表
SET姓名='大宏'
WHERE工号='01'
图2-29数据修改
2.5.3数据库删除记录操作
在售票员表中删除记录
DELETE
FROM售票员表
WHERE工号='15'
图2-30数据删除
2.5.4关系图
图2-31系统关系图
2.6测试
系统测试是管理信息系统开发周期中一个十分重要而漫长的阶段。
其重要性体现在它是保证系统质量与可靠性的最后关口,是对整个系统开发过程包括系统分析、系统设计和系统实施的最后审查。
首先打开SQLserver2008,点击连接,在数据库中找到carstation,打开数据库,找到所要测试的六个表,本系统主要实现售票员对车票的查询、添加、修改和删除,因此系统中的数据库技术原理大致相同,只要适当的改动数据定义项就可以实现不同部分的类似功能。
该系统主要有以下特点:
(1)功能齐全车站管理所能用到的功能,从预定、订购、退订车票信息、用户、售票员、车辆等数据管理、查询、浏览、添加、修改,到数据库的备份、恢复,应有尽有。
(2)、准确可靠其中的各项查询、备份恢复数据功能均经过反复测试,基本没有大的错误,运行更加稳定可靠。
(3)、简单易用不需要经过专门的培训学习,只要读一下帮助文件,也可以不读,就能熟练操作。
用户只需要简单地输入数据或进行选择,一点鼠标,一切OK!
第三章总结
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学到的理论知识与实践相结合起来,从理论中得出结论,将结论辅助与理论,才能真正学到知识并写出有用的程序,所以提高自己的实际动手能力和独立思考的能力是十分重要的。
在设计的过程中遇到很多的问题,可以说得是困难重重,由于对以前所学过的知识理解得不够深刻,掌握得不够牢固。
导致自己在程序设计过程中经常出错,致使程序无法运行或无法实现要求的步骤。
还有很多是些小问题,这都是由于我粗心大意而造成的,所以我认识到设计程序一定要仔细,容不得丝毫的马虎和粗心大意。
当然还有其他的问题,尤其是关于文件的操作,是我们最大的问题,不过,经
过老师的讲解和改错之后,也开始懂得设计和运用了。
这次课程设计使我巩固了数据库的知识,通过实践,我学到了很多课本上学不到的知识。
在这次车站售票管理系统的开发过程中,我也遇到了许多的问题,例如:
数据库连接错误,学习写存储过程,数据如何绑定等等,经过认真思考并在老师和同学的帮助下我顺利完成了本次设计。
附录
1、参考资料:
《数据库系统概论》第四版王珊、萨师煊
2、源程序代码:
/*建立数据库DB_12*/
CREATEDATABASEDB_12
/*建立车辆表*/
CREATETABLE车辆表
(
车辆编号INTPRIMARYKEY,
车型VARCHAR(8)NOTNULL,
座位数SMALLINT,
FOREIGNKEY(车型)REFERENCES运价表(车型)
)
/*建立目标站名表*/
CREATETABLE目标站名表
(
站名VARCHAR(10)PRIMARYKEY,
里程INT
)
/*建立发车时刻表*/
CREATETABLE发车时刻表
(
车次VARCHAR(5)PRIMARYKEY,
站名VARCHAR(10)NOTNULL,
车辆编号INTNOTNULL,
发车时间DATETIMENOTNULL,
检票口SMALLINTNOTNULL,
FOREIGNKEY(站名)REFERENCES目标站名表(站名),
FOREIGNKEY(车辆编号)REFERENCES车辆表(车辆编号)
)
/*建立途径表*/
CREATETABLE途径表
(
车次VARCHAR(5)PRIMARYKEY,
站名VARCHAR(10)NOTNULL,
FOREIGNKEY(站名)REFERENCES目标站名表(站名)
)
/*建立车票表*/
CREATETABLE车票表
(
票号INTPRIMARYKEY,
乘车日期DATETIMENOTNULL,
车次VARCHAR(5)NOTNULL,
站名VARCHAR(10)NOTNULL,
票价FLOAT(8)NOTNULL,
全半价CHAR
(2)NOTNULL,
座位号SMALLINTNOTNULL,
工号CHAR(3),
退票否CHAR
(1),
FOREIGNKEY(车次)REFERENCES途径表(车次),
FOREIGNKEY(工号)REFERENCES售票员表(工号)
)
/*建立预定表*/
CREATETABLE预定表
(
预定号INTPRIMARYKEY,
车次VARCHAR(5)NOTNULL,
站名VARCHAR(10)NOTNULL,
乘车日期DATETIMENOTNULL,
顾客名称VARCHAR(20)NOTNULL,
票号INTNOTNULL,
FOREIGNKEY(车次)REFERENCES途径表(车次),
FOREIGNKEY(票号)REFERENCES退票表(票号),
FOREIGNKEY(票号)REFERENCES车票表(票号))
/*建立退票表*/
CREATETABLE退票表
(
票号INTPRIMARYKEY,
退票时间DATETIME,