数据库大作业火车订票系统文档格式.docx
- 文档编号:19331915
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:13
- 大小:85.65KB
数据库大作业火车订票系统文档格式.docx
《数据库大作业火车订票系统文档格式.docx》由会员分享,可在线阅读,更多相关《数据库大作业火车订票系统文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
用户登陆后,通过订票系统,根据自己你的需求找到自己的车次,输入要预订的票数进行订票。
要求订票记录应包括:
订票记录ID,车次ID,用户ID,订票数量。
2.1.3退票:
用户登录后,通过退票系统,找到自己的订票信息,输入要退的票数进行退票。
2.1.4注册:
想要订票的用户必须先注册然后登陆订票。
用户信息包括:
用户ID,用户名,密码,邮箱。
2.1.5用户登陆:
主要完成用户和管理员的登陆。
用户想订票必须登陆后才能进行订票,如果没有注册的用户应该与注册页面相连接。
2.1.6修改密码:
用户和管理员登陆后可以修改个人信息。
2.1.7添加车次:
管理员登陆后可以添加新的车次。
2.2数据需求
信息输入
信息处理
信息输出
用户输入所需车次
检索系统数据库
符合用户需求的车次及相关信息
用户管理员输入用户名、密码进行登录
成功登陆后的首页
用户输入个人信息进行注册
将输入信息存入系统数据库
操作反馈
用户输入订票数量
检索系统数据库已得到订票记录,添加用户请求的订票记录,更新系统数据库
用户输入退票数量
检索系统数据库已得到订票记录,删除用户请求的订票记录,更新系统数据库
用户管理员输入新密码
更新系统数据库
管理员输入添加车次信息
将新信息存入数据库
2.3性能需求
系统应能及时准确的根据用户权限及所输入的信息作出响应。
由于查询功能对于用户来讲很重要,因为这直接影响了用户的订票决策,所以系统的准确性和及时性很重要。
本系统是针对用户直接开放的,所以应该提供良好的接口。
网上订票的数据是很重要的信息,系统应该保证用户的权限,对于车次的信息不能更改。
同时还应该保证管理人员进行正常的维护、更新等工作,保证数据的一致性。
2.4数据流图
2.4.1顶层数据流图
2.4.21层数据流图
3.概念结构设计
3.1系统结构简述
本系统包括六个实体:
订票人,订票单信息,车票信息,车次信息,操作员,余票信息。
订票人与订票单、订票单与车票信息这两个关系是一对一的联系;
车票信息与车次信息、订票单信息与操作员这两个关系是1对多的联系。
3.2数据处理
输入:
身份证号
输出:
订票单号,订票人身份证号,订单时间,付款取票与否,车次号,车票号,票价,员工号。
车票号,始发站,车次号,发车时间,终点站,车票种类。
车次号
输出:
姓名,身份证号,联系电话,目的城市,始发城市。
3.2.4查询余票数量
乘车区间和车次号
余票数量。
3.3生成E-R图
4逻辑结构设计
4.1关系模式
订票人表(身份证号,姓名,联系电话,始发城市,目的城市,订单号)
操作员表(员工号,订票点号,姓名,性别,电话)
车次信息表(车次号,始发站,终点站,途径站)
订票单表(订单号,身份证号,订单时间,付款取票与否,车次号,车票号,票价,员工号)
车票信息表(车票号,车次号,始发站,发车时间,终点站,车票种类,订单号,
车厢号,座位号)
说明:
车票种类为:
“无座”或“硬座”或“硬卧”或“软卧”
余票信息表(车次号,车票种类,出发站,目的站,出发时间)
5物理结构设计
订票人表
字段
类型
特殊属性
身份证
char(18)
主键,非空
姓名
char(10)
NOTNULL
联系电话
varchar(12)
始发城市
varchar(10)
目的城市
订单号
char(20)
外键
订票单表
主键
订票时间
datetime
付款取票与否
char
(2)
NOTNULL,默认‘是’或“否”
LIKE‘[A-Z]%’
车票号
票价
int
员工号
车票表
始发站
发车时间
车厢号
座位号
终点站
车票种类
IN(‘软卧’,‘硬卧’,‘软座’,‘硬座’,‘站票’)
车次表
途径站
操作员表
订票点号
性别
NOTNULL,默认‘男’或‘女’
电话
余票信息表
出发站
目的站
出发时间
datatime
余票张数
6数据库实施
6.1建立数据库
createdatabase网上订票数据库
onprimary
(
name=网上订票数据库,
filename='
E:
\数据库\网上订票数据库.mdf'
size=5MB,
FILEGROWTH=10%
)
logon
name=网上订票数据库_log,
\数据库\网上订票数据库_log.ldf'
FILEGROWTH=2MB)
6.2建立基本表
创建订票人表:
createtable订票人表
(身份证号char(18)notnullprimarykey,
姓名varchar(10)notnull,
联系电话varchar(12)notnull,
始发城市varchar(10)notnull,
目的城市varchar(10)notnull,
订单号char(20))
创建操作员表:
createtable操作员表
(员工号char(10)primarykey,
订票点varchar(10)notnull,
性别char
(2)check(性别in('
男'
'
女'
)),
电话varchar(12)notnull)
创建车次信息表:
createtable车次信息表
(
车次号varchar(10)check(车次号LIKE'
[A-Z]%'
)primarykey,
始发站varchar(10)notnull,
终点站varchar(10)notnull,
途经站varchar(100))
创建订票单表:
createtable订票单表
(订单号char(20)primarykey,
身份证号char(18)references订票人表(身份证号),
订票时间datetimenotnull,
付款取票与否char
(2)check(付款取票与否in('
是'
否'
),
车票号char(20)notnull,
票价intnotnull,
员工号char(10)references操作员表(员工号))
创建车票信息表:
createtable车票信息表
(车票号char(20)primarykey,
发车时间datetimenotnull,
车票种类char(4)check(车票种类in('
无座'
硬座'
硬卧'
软卧'
订单号char(20)references订票单表(订单号),
车厢号intnotnull,
座位号intnotnull)
创建余票信息表:
createtable余票信息表
(车次号varchar(10)check(车次号LIKE'
)primarykey,
出发站varchar(10)notnull,
目的站varchar(10)notnull,
余票张数intnotnull,
车票种类char(20)primarykey,
出发日期datatime)
6.3建立索引
订票人表:
IFexists(select*fromsysindexeswherename='
pID_index'
)
dropindex订票人表.pID_index
createuniqueindexpID_index
on订票人表(身份证号)
withfillfactor=30
订票单表:
piaoDanNO_index'
dropindex订票单表.piaoDanNO_index
createindexpiaoDanNO_index
on订票单表(订单号)
车票信息表:
piaoNO_index'
dropindex车票信息表表.piaoNO_index
createindexpiaoNO_index
on车票信息表(车票号)
车次信息表:
cheCiNO_index'
dropindex车次信息表.cheCiNO_index
createindexcheCiNO_index
on车次信息表(车次号)
操作员表:
yuanGongNO_index'
dropindex操作员表.yuanGongNO_index
createindexyuanGongNO_index
on操作员表(员工号)
6.4创建视图
createviewallInfo_view
as
select订票人表.姓名,订票人表.身份证号,订票单表.车次号,
车票信息表.车票号,车票信息表.发车时间,车票信息表.始发站,
车票信息表.终点站,订票单表.票价
from订票人表innerjoin订票单表
on订票人表.身份证号=订票单表.身份证号innerjoin车票信息表
on订票单表.车票号=车票信息表.车票号innerjoin车次信息表
on车票信息表.车次号=车次信息表.车次号
6.5创建存储过程
创建存储过程,通过身份证号查询订票人信息:
createprocedurepInfo_proc
@pIDchar(18)
select身份证号,姓名,联系电话,始发城市,目的城市,订单号
from订票人表where身份证号=@pID
创建存储过程,通过身份证号查询订票人订票信息:
createprocedureticket_proc
select姓名,订票单表.订单号,订票人表.身份证号,订票时间,付款取票与否,车次号,车票号,票价,员工号
from订票单表innerjoin订票人表
on订票人表.身份证号=订票单表.身份证号
where订票单表.身份证号=@pID
6.6创建触发器
createtrigger余票更新
on车票信息表
forinsert
as
declare@车次号varchar(10)
select@车次号=车次号frominserted
update余票信息表
set余票张数=余票张数-1
where车次号=@车次号
createtrigger余票更新2
fordelete
select@车次号=车次号fromdeleted
set余票张数=余票张数+1
6.7插入数据
向操作员表中插入数据:
insertinto操作员表
values
(,'
洛阳'
鲁金龙'
)
向车次信息表中插入数据:
insertinto车次信息表
('
K31'
福州'
商丘、开封、郑州'
向订票人表中插入数据:
insertinto订票人表
,'
民权'
'
向订票单表中插入数据:
insertinto订票单表
(,,'
2011-06-2414:
31:
36'
,12.5,)
向车票信息表中插入数据:
insertinto车票信息表
,12,021)
想余票信息表中插入数据:
insertinto车票信息表
values
('
135,2011-06-2413:
24:
00,硬座)
6.8关系图
6.9订购车票
insertinto车票信息表
values
(,'
T90'
南京'
2013-07-0913:
23:
13'
河南'
06'
23'
6.10退票
delete车票信息表
where车次号='
7实验小结
通过这次大作业的设计,我们团队经过了几次的激烈讨论,由组长带领组员,通过对火车订票系统的需求分析,概念结构设计,逻辑结果设计,物理结构设计,建立数据库、基本表,创建存储过程、创建触发器以保证订票时对余票数量的修改,我们对数据库有了进一步的理解,同时也为期末考试进行了一个粗略的复习,对基本概念的理解更加深刻,对本书中的重点,如模式的分解等内容理解加深。
在时间的过程中,发现对SQL语言的掌握还远远不够,这也是在大作业的设计过程中遇到的一个大难题,尤其是在做存储过程和触发器的时候,没有掌握代码的格式和方法,所以花了很长时间来熟悉创建存储过程和触发器的代码上。
在周四上机掩饰的时候由于没有做出触发器所以没有演示订票的过程,课下我们有进行了修改,能够进行订票的操作。
最后感谢老师这一学期的悉心教导,我们收获很多。
谢谢老师~~
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 作业 火车 订票 系统