火车票管理系统 数据库课设 集美大学概要.docx
《火车票管理系统 数据库课设 集美大学概要.docx》由会员分享,可在线阅读,更多相关《火车票管理系统 数据库课设 集美大学概要.docx(45页珍藏版)》请在冰豆网上搜索。
火车票管理系统数据库课设集美大学概要
数据库原理课程设计
评语:
学院班级
姓名学号
成绩指导老师
2013年01月10日
目录
第一章引言3
1.1课题研究背景与意义3
1.2本课题研究内容与目标3
1.3开发环境3
1.4体系结构设计3
第二章需求分析4
2.1信息要求4
2.2处理要求.5
2.3数据字典.5
2.4安全性和完整性要求.7
第三章概念结构设计8
3总ER图8
第四章 逻辑结构设计9
4.1关系模型9
4.2数据模型优化15
4.3视图设计17
第五章数据库的实施和维护18
5.1存储过程设计18
5.2触发器设计22
5.3 模块设计30
结论35
参考文献36
第一章引言
1.1课题研究背景与意义
中国的领土面积约960万平方公里,居世界前列。
随着经济的发展,各地人民的沟通交流也与之剧增,领土之大也给人民的出行带来了社会性的难题。
中国铁路四通八达,一直以来中国铁路以安全、稳定、快速和较为便宜的票价,吸引了占世界三分之一的人口乘坐。
随着互联网技术的不断发展,用信息技术改造传统行业,是国家实现铁路现代化战略任务的迫切要求。
铁路信息化是铁路信息化的重要标志,将信息技术运用到铁路生产经营与各项管理决策中,提高市场竞争力和经济效益,所以,开发出火车站售票管理系统就显得尤为重要了。
本系统的主要作用是管理车票信息,还可以实现购票,退票,换票让乘客及时了解售票的情况,及时买票;以保证售票工作能更顺畅的运行;车票信息和乘车向的统计分析,以便火车站能更好的调度车次,以便满足乘客出行要求。
这就要求软件的设计要结合具体实际,从而为车站管理服务,提高运行效率。
为此,我们进行了专门调查,搜集了大量的资料,制定了详尽的需求分析与系统设计。
本系统可以很好地帮助铁路部门提高工作效率,进一步提高工作效益和铁路现代化水平,具有很高的开发价值和使用价值。
1.2本课题研究内容与目标
1.2.1研究内容
本系统主要是实现火车站的售票管理与统计,从而提高售票效率。
使用本系统,可以有效地管理和统计车票的基本信息和各类车站相关信息,包括:
车票基本信息、车站基本信息、车次信息、人员管理等,完成这些信息的增加、删除、修改、查询统计功能。
(1)销售管理(自动生成车票编号、车票信息的增加、查询和统计)
(2)退票管理(车票的退票操作、车票信息的对应修改)
(3)换票管理(顾客车票信息的修改、车票信息的修改)
(4)查询管理(车次查询、时刻表查询、价格查询、售票情况查询)
(5)调度管理(运价修改,车票数量修改)
(6)用户管理(用户权限的分配、登录名与密码的设置)
1.2.2研究目标
(1)分权限管理,满足不同用户的需求。
(2)各类信息及时发布,便于调度车辆,提高效率。
1.3开发环境
操作系统为WindowsxpWindows7。
数据库管理系统为SQLServer2005标准版或企业版。
1.4体系结构设计
本次课程设计的课题为火车售票管理系统,只采用了数据库后台设计。
实现了销售管理,退票管理,换票管理,查询管理,调度管理,用户管理等功能。
表与表之间数据的影响采用触发器控制。
管理员给相应的角色赋相应权限,将用户添加到角色中来,每个用户拥有自己独立的登录名及相应的密码。
使用户拥有一定的查询修改插入功能,在增删改查等操作里使用了存储过程。
第二章需求分析
2.1信息要求
2.2处理要求
2.3数据字典
1、数据项
售票员信息表:
sale
描述
列名
数据类型
备注:
员工编号(登录名)
Sal_no
Varchar(20)
PK
姓名
Sal_name
Varchar(20)
可为空
登陆密码
Sal_pass
Varchar(20)
不可为空
顾客信息表:
customer
描述
列名
数据类型
备注:
身份证号码
Cus_id
Char(18)
PK
姓名
Cus_name
Varchar(20)
不可为空
电话号码
Cus_tel
Char(11)
11或8位数字,可为空
上车日期
Cus_date
datetime
不可为空
上车时间
Cus_h
Int
不可为空
起点站
Cus_sta
Varchar(20)
不可为空
终点站
Cus_end
Varchar(20)
不可为空
坐卧铺
Cus_wz
Char(10)
卧铺或坐铺,不可为空
员工编号
Cus_sno
Varchar(20)
FK
车票信息表:
ticket
描述
列名
数据类型
备注:
编号
Tic_no
Int
PK,从1开始自动增长1
车次编号
Tic_cno
Varchar(20)
FK
发车日期
Tic_date
Datetime
FK
车票数量
Tic_set
Int
可为空
顾客身份证号码
Tic_id
Char(18)
FK,17位数字+1位数字或x
坐卧铺
Tic_wz
Char(10)
可为空
车次信息表:
price
描述
列名
数据类型
备注:
车次编号
Pr_cno
Varchar(20)
PK
起点站
Pr_sta
Varchar(20)
可为空
终点站
Pr_end
Varchar(20)
可为空
票价
Pr_value
Money
可为空
发车日期
Pr_date
Datetime
PK
发车时间
Pr_h1
Int
不可为空
到站时间
Pr_h2
Int
不可为空
卧铺数量
Prw_num
Int
可为空
坐铺数量
Prz_num
Int
可为空
退票信息表:
refund
描述
列名
数据类型
备注:
车票编号
Ref_no
Int
PK
车次编号
Ref_ticno
Varchar(20)
可为空
顾客身份证号码
Ref_id
Char18)
可为空
顾客姓名
Ref_name
Varchar(20)
可为空
票价
Ref_value
Money
可为空
应退款
Ref_money
Money
可为空
数据暂存表:
data
描述
列名
数据类型
备注:
车次编号
Data_cno
Varchar(20)
PK
顾客身份证号码
Data_id
Char18)
可为空
票价
Data_money
Money
可为空
2、数据结构
1.sale,定义了售票员的主要信息
组成:
sale(sal_no,sal_name,sal_pass)
2.customer,购票顾客的主要信息
customer(cus_id,cus_name,cus_tel,cus_date,cus_h,cus_sta,cus_end,cus_wz,cus_sno)
3.ticket,车票的主要信息
ticket(tic_no,tic_id,tic_cno,tic_date,tic_set,tic_wz)
4.price,车次和运价的主要信息
price(pr_cno,pr_date,pr_sta,pr_end,pr_h1,pr_h2,pr_value,prw_num,prz_num)
5.refund,退票的相关信息
refund(ref_no,ref_ticno,ref_id,ref_name,ref_value,ref_money)
6.data,暂存数据的主要信息
data(data_id,data_cno,data_money)
3、数据流
数据流名
说明
数据流来源
数据流去向
添加
添加售票员信息
管理员
Sale
修改
修改车次信息
管理员
Price
添加
添加顾客信息
Sale
Customer
查询
查询基本信息
Sale
火车票信息表
售票
插入顾客信息,售票
Sale
车票信息
添加
添加售出的车票信息
Sale
Ticket
修改
修改已购买的车票信息
Customer
Ticket
退票换票
对已购买车票进行修改退订
Customer
Sale
添加
添加退票信息
Customer
退票信息
4、数据存储
1.sale:
售票员信息表,用来存储各个售票员地基本信息,包括数据对象
sal_no,sal_name,sal_pass
2.customer,顾客信息表。
购票顾客的主要信息,用来存储每个顾客的基本信息,确定其购票信息,包括数据项cus_id,cus_name,cus_tel,cus_date,cus_h,cus_sta,cus_end,cus_wz,cus_sno
3.ticket,车票表。
车票的主要信息,包括数据项tic_no,tic_id,tic_cno,tic_date,tic_set,tic_wz
4.price,车次表。
车次和运价的主要信息,包括数据项pr_cno,pr_date,pr_sta,pr_end,pr_h1,pr_h2,pr_value,prw_num,prz_num)
5.refund,退票表。
退票的相关信息,包括数据项:
ref_no,ref_ticno,ref_id,ref_name,ref_value,ref_money,
6.data,数据暂存表。
暂存数据的主要信息data_id,data_cno,data_money
2.4安全性和完整性要求
该系统具有较为安全的性能,每次用户要求进入系统时,由系统进行核对,通过鉴定后才能提供机器使用权。
用一个用户名来标明用户身份,系统内部记录着所有合法用户的标识,系统鉴别是否是合法用户,鉴定通过之后方能进行下一步核实,即用户输入口令。
对角色进行授权,然后将用户加进角色,使其拥有改角色所拥有的权限。
通过授权管理,使得用户只能对数据库拥有部分操作的功能,防止对数据库的破坏。
通过定义视图,把数据对象限制在一定的范围内,即通过视图机制将保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
该系统整体把握防止了数据库中存在不正确的数据,使得数据具有一定的正确性,相容性和有效性。
该系统对每个表都设置了主键,保证了数据的唯一性,保证了主键的属性不可为空,从而保证了实体完整性。
该系统对于将两个表中的相应元素联系起来了,在对参照表和被参照表进行增删改时,采用了触发器,使得对另外的表也做出了正确的操作,从而保证了参照完整性。
对于个别属性,对其定义了非空,check等约束。
尽量保证用户定义完整性。
第三章概念结构设计
总ER图
第四章逻辑结构设计
4.1关系模型
Customer:
USE[dbs_keshe_gai]
GO
/******对象:
Table[dbo].[Customer]脚本日期:
01/10/201321:
22:
14******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[Customer](
[cus_id][char](18)NOTNULL,
[cus_name][varchar](20)NOTNULL,
[cus_tel][varchar](11)NULL,
[cus_date][datetime]NOTNULL,
[cus_h][int]NOTNULL,
[cus_sta][varchar](20)NOTNULL,
[cus_end][varchar](20)NOTNULL,
[cus_wz][char](10)NOTNULL,
[cus_sno][varchar](20)NULL,
CONSTRAINT[pk_cus_id]PRIMARYKEYCLUSTERED
(
[cus_id]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
GO
ALTERTABLE[dbo].[Customer]WITHCHECKADDCONSTRAINT[fk_cus]FOREIGNKEY([cus_sno])
REFERENCES[dbo].[sale]([sal_no])
GO
ALTERTABLE[dbo].[Customer]CHECKCONSTRAINT[fk_cus]
GO
ALTERTABLE[dbo].[Customer]WITHCHECKADDCONSTRAINT[ck_wz]CHECK(([cus_wz]like'卧铺'OR[cus_wz]like'坐铺'))
GO
ALTERTABLE[dbo].[Customer]CHECKCONSTRAINT[ck_wz]
GO
ALTERTABLE[dbo].[Customer]WITHCHECKADDCONSTRAINT[ckc_tel]CHECK(([cus_tel]like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'OR[cus_tel]like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'OR[cus_tel]ISNULL))
GO
ALTERTABLE[dbo].[Customer]CHECKCONSTRAINT[ckc_tel]
Data:
USE[dbs_keshe_gai]
GO
/******对象:
Table[dbo].[data]脚本日期:
01/10/201321:
24:
27******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[data](
[data_cno][varchar](20)NULL,
[data_id][char](18)NOTNULL,
[data_money][money]NULL,
CONSTRAINT[pk_data]PRIMARYKEYCLUSTERED
(
[data_id]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
GO
ALTERTABLE[dbo].[data]WITHCHECKADDCONSTRAINT[cK_data_id]CHECK(([data_id]like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9,x,X]'))
GO
ALTERTABLE[dbo].[data]CHECKCONSTRAINT[cK_data_id]
Price:
USE[dbs_keshe_gai]
GO
/******对象:
Table[dbo].[price]脚本日期:
01/10/201321:
26:
39******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[price](
[pr_cno][varchar](20)NOTNULL,
[pr_sta][varchar](20)NULL,
[pr_end][varchar](20)NULL,
[pr_value][money]NULL,
[pr_date][datetime]NOTNULL,
[pr_h1][int]NOTNULL,
[pr_h2][int]NOTNULL,
[prw_num][int]NULL,
[prz_num][int]NULL,
CONSTRAINT[pk_price]PRIMARYKEYCLUSTERED
(
[pr_cno]ASC,
[pr_date]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
Refund:
USE[dbs_keshe_gai]
GO
/******对象:
Table[dbo].[refund]脚本日期:
01/10/201321:
27:
04******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[refund](
[ref_no][int]NOTNULL,
[ref_ticno][varchar](20)NULL,
[ref_id][char](18)NULL,
[ref_name][varchar](20)NULL,
[ref_value][money]NULL,
[ref_money][money]NULL,
CONSTRAINT[pk_refund]PRIMARYKEYCLUSTERED
(
[ref_no]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
Sale:
USE[dbs_keshe_gai]
GO
/******对象:
Table[dbo].[sale]脚本日期:
01/10/201321:
27:
21******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[sale](
[sal_no][varchar](20)NOTNULL,
[sal_name][varchar](20)NULL,
[sal_pass][varchar](20)NOTNULL,
CONSTRAINT[pk_sale]PRIMARYKEYCLUSTERED
(
[sal_no]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
Ticket:
USE[dbs_keshe_gai]
GO
/******对象:
Table[dbo].[ticket]脚本日期:
01/10/201321:
27:
48******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[ticket](
[tic_no][int]IDENTITY(1,1)NOTNULL,
[tic_cno][varchar](20)NULL,
[tic_date][datetime]NULL,
[tic_set][int]NULLDEFAULT((0)),
[tic_wz][char](10)NULL,
[tic_id][char](18)NULL,
CONSTRAINT[pk_tic_no]PRIMARYKEYCLUSTERED
(
[tic_no]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
GO
ALTERTABLE[dbo].[ticket]WITHCHECKADDCONSTRAINT[ck_tic]FOREIGNKEY([tic_cno],[tic_date])
REFERENCES[dbo].[price]([pr_cno],[pr_date])
GO
ALTERTABLE[dbo].[ticket]CHECKCONSTRAINT[ck_tic]
GO
ALTERTABLE[dbo].[ticket]WITHCHECKADDCONSTRAINT[ck_tic1]FOREIGNKEY([tic_id])
REFERENCES[dbo].[Customer]([cus_id])
GO
ALTERTABLE[dbo].[ticket]CHECKCONSTRAINT[ck_tic1]
4.2数据模型优化
1.sale(sal_no,sal_id,sal_name,sal_pass)
该关系的函数依赖图:
从函数依赖图可以看出,该关系中不存在部分函数依赖、传递函数依赖,且只