数据库大作业火车订票系统.docx

上传人:b****0 文档编号:12574738 上传时间:2023-04-20 格式:DOCX 页数:15 大小:86.15KB
下载 相关 举报
数据库大作业火车订票系统.docx_第1页
第1页 / 共15页
数据库大作业火车订票系统.docx_第2页
第2页 / 共15页
数据库大作业火车订票系统.docx_第3页
第3页 / 共15页
数据库大作业火车订票系统.docx_第4页
第4页 / 共15页
数据库大作业火车订票系统.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数据库大作业火车订票系统.docx

《数据库大作业火车订票系统.docx》由会员分享,可在线阅读,更多相关《数据库大作业火车订票系统.docx(15页珍藏版)》请在冰豆网上搜索。

数据库大作业火车订票系统.docx

数据库大作业火车订票系统

中国地质大学(北京)

数据库系统概论

火车票网上订票系统

小组成员:

董威、韦飞阳、李建同、刘厚今

学号:

联系方式:

使用数据库管理系统:

SQLserver2012

指导老师:

宋莉

2013年12月28日

1.小组成员及分工

董威:

数据库的实施,即在查询分析器下编写代码建立数据库,创建基本表,建立基本表之间的关系、索引,创建存储过程等工作。

韦飞阳:

主要负责逻辑结构的设计,即确定关系模式。

李建同:

只要负责物理结构的设计,即确定各个基本表之间的关系,确定主外键。

刘厚今:

需求分析模块,主要负责寻找需求,绘制数据流图。

2.需求分析

2.1功能需求

2.1.1查询:

用户、管理员都可以对车次进行查询:

可以按照发车车次进行查询;可以按照出发地、目的地进行查询;可以按照类车类型、座位类型查询。

车次信息包括:

车次ID,车号,出发地,目的地,列车类型,座位类型,票价,票数,车次信息只允许用户查询,不能修改。

2.1.2订票:

用户登陆后,通过订票系统,根据自己你的需求找到自己的车次,输入要预订的票数进行订票。

要求订票记录应包括:

订票记录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)

NOTNULL

始发城市

varchar(10)

NOTNULL

目的城市

varchar(10)

NOTNULL

订单号

char(20)

外键

订票单表

字段

类型

特殊属性

订单号

char(20)

主键

身份证号

char(18)

外键

订票时间

datetime

NOTNULL

付款取票与否

char

(2)

NOTNULL,默认‘是’或“否”

车次号

varchar(10)

LIKE‘[A-Z]%’

车票号

char(20)

外键

票价

int

NOTNULL

员工号

char(20)

外键

车票表

字段

字段

特殊属性

车票号

char(20)

主键

车次号

varchar(10)

外键

始发站

varchar(10)

NOTNULL

发车时间

datetime

NOTNULL

车厢号

int

NOTNULL

座位号

int

NOTNULL

终点站

varchar(10)

NOTNULL

车票种类

char(20)

IN(‘软卧’,‘硬卧’,‘软座’,‘硬座’,‘站票’)

订单号

char(20)

NOTNULL

车次表

字段

类型

特殊属性

车次号

char(20)

主键

始发站

varchar(10)

NOTNULL

终点站

varchar(10)

NOTNULL

途径站

varchar(10)

NOTNULL

操作员表

字段

类型

特殊属性

员工号

char(20)

主键

订票点号

char(20)

NOTNULL

姓名

varchar(10)

NOTNULL

性别

char

(2)

NOTNULL,默认‘男’或‘女’

电话

varchar(12)

NOTNULL

余票信息表

字段

类型

特殊属性

车次号

varchar(10)

主键

车票种类

char(10)

主键

出发站

varchar(10)

NOTNULL

目的站

varchar(10)

NOTNULL

出发时间

datatime

NOTNULL

余票张数

int

NOTNULL

6数据库实施

6.1建立数据库

   createdatabase网上订票数据库

   onprimary

   (

   name=网上订票数据库,

   filename='E:

\数据库\网上订票数据库.mdf',

   size=5MB,

   FILEGROWTH=10%

   )

   logon

   (

   name=网上订票数据库_log,

   filename='E:

\数据库\网上订票数据库_log.ldf',

   size=5MB,

   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,

   姓名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('是','否')),

   车次号varchar(10)check(车次号LIKE'[A-Z]%'),

   车票号char(20)notnull,

   票价intnotnull,

   员工号char(10)references操作员表(员工号))

创建车票信息表:

   createtable车票信息表

   (车票号char(20)primarykey,

   车次号varchar(10)check(车次号LIKE'[A-Z]%'),

   始发站varchar(10)notnull,

   发车时间datetimenotnull,

   终点站varchar(10)notnull,

   车票种类char(4)check(车票种类in('无座','硬座','硬卧','软卧')),

   订单号char(20)references订票单表(订单号),

   车厢号intnotnull,

   座位号intnotnull)

创建余票信息表:

createtable余票信息表

(车次号varchar(10)check(车次号LIKE'[A-Z]%')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

订票单表:

  IFexists(select*fromsysindexeswherename='piaoDanNO_index')

  dropindex订票单表.piaoDanNO_index

  createindexpiaoDanNO_index

  on订票单表(订单号)

车票信息表:

  IFexists(select*fromsysindexeswherename='piaoNO_index')

  dropindex车票信息表表.piaoNO_index

  createindexpiaoNO_index

  on车票信息表(车票号)

车次信息表:

  IFexists(select*fromsysindexeswherename='cheCiNO_index')

  dropindex车次信息表.cheCiNO_index

  createindexcheCiNO_index

  on车次信息表(车次号)

操作员表:

  IFexists(select*fromsysindexeswherename='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)

   as

   select身份证号,姓名,联系电话,始发城市,目的城市,订单号

   from订票人表where身份证号=@pID

创建存储过程,通过身份证号查询订票人订票信息:

   createprocedureticket_proc

   @pIDchar(18)

   as

   select姓名,订票单表.订单号,订票人表.身份证号,订票时间,付款取票与否,车次号,车票号,票价,员工号

   from订票单表innerjoin订票人表

   on订票人表.身份证号=订票单表.身份证号

   where订票单表.身份证号=@pID

6.6创建触发器

createtrigger余票更新

on车票信息表

forinsert

as

declare@车次号varchar(10)

select@车次号=车次号frominserted

update余票信息表

set余票张数=余票张数-1

where车次号=@车次号

createtrigger余票更新2

on车票信息表

fordelete

as

declare@车次号varchar(10)

select@车次号=车次号fromdeleted

update余票信息表

set余票张数=余票张数+1

where车次号=@车次号

6.7插入数据

向操作员表中插入数据:

   insertinto操作员表

   values

   (,'洛阳','鲁金龙','男',)

向车次信息表中插入数据:

   insertinto车次信息表

   values

   ('K31','福州','洛阳','商丘、开封、郑州')

向订票人表中插入数据:

   insertinto订票人表

   values

   (,'鲁金龙',,'民权',

'洛阳',)

向订票单表中插入数据:

   insertinto订票单表

   values

   (,,'2011-06-2414:

31:

36',

'是','K31',,12.5,)

向车票信息表中插入数据:

   insertinto车票信息表

   values

   (,'K31','民权','2011-06-2414:

31:

36','洛阳',

'硬座',,12,021)

想余票信息表中插入数据:

insertinto车票信息表

values

('K31','民权','洛阳',135,2011-06-2413:

24:

00,硬座)

6.8关系图

6.9订购车票

insertinto车票信息表

values

(,'T90','南京','2013-07-0913:

23:

13','河南','硬座',,'06','23')

6.10退票

delete车票信息表

where车次号='T90'

7实验小结

通过这次大作业的设计,我们团队经过了几次的激烈讨论,由组长带领组员,通过对火车订票系统的需求分析,概念结构设计,逻辑结果设计,物理结构设计,建立数据库、基本表,创建存储过程、创建触发器以保证订票时对余票数量的修改,我们对数据库有了进一步的理解,同时也为期末考试进行了一个粗略的复习,对基本概念的理解更加深刻,对本书中的重点,如模式的分解等内容理解加深。

在时间的过程中,发现对SQL语言的掌握还远远不够,这也是在大作业的设计过程中遇到的一个大难题,尤其是在做存储过程和触发器的时候,没有掌握代码的格式和方法,所以花了很长时间来熟悉创建存储过程和触发器的代码上。

在周四上机掩饰的时候由于没有做出触发器所以没有演示订票的过程,课下我们有进行了修改,能够进行订票的操作。

最后感谢老师这一学期的悉心教导,我们收获很多。

谢谢老师~~

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1