大型数据库课程设计火车站票务管理系统Word下载.docx

上传人:b****6 文档编号:17800434 上传时间:2022-12-10 格式:DOCX 页数:24 大小:469.21KB
下载 相关 举报
大型数据库课程设计火车站票务管理系统Word下载.docx_第1页
第1页 / 共24页
大型数据库课程设计火车站票务管理系统Word下载.docx_第2页
第2页 / 共24页
大型数据库课程设计火车站票务管理系统Word下载.docx_第3页
第3页 / 共24页
大型数据库课程设计火车站票务管理系统Word下载.docx_第4页
第4页 / 共24页
大型数据库课程设计火车站票务管理系统Word下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

大型数据库课程设计火车站票务管理系统Word下载.docx

《大型数据库课程设计火车站票务管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《大型数据库课程设计火车站票务管理系统Word下载.docx(24页珍藏版)》请在冰豆网上搜索。

大型数据库课程设计火车站票务管理系统Word下载.docx

而在所设计的火车站票务管理系统中,主要有三类用户,即旅客用户、业务员用户、、系统管理员。

各类用户在该系统中的需求不同,权限也不同。

因此,为了更明确,更系统的了解用户需求,我们还可以将管理系统再细分为旅客管理系统,业务员管理系统,系统管理员管理系统。

同样,将查询系统也按用户职能进行细分。

这样细分后,看似把系统需求繁杂化了。

其实不然,细分后使各用户需求更加明确了,并且能更好的把握系统需求。

下面从细分后的各个子系统分析子系统的需求:

1)车次管理系统,旅客可以通过该系统查询相关车次的基本信息,火车途经站点、出发时间、车的种类等。

2)车次及价格管理系统,旅客可以按照相关车次及车站查询相对票价及时间。

3)业务员管理系统,该系统中,主要显示业务员的各项基本信息以及对业务员信息的管理。

4)车票销售管理系统,该系统主要是可以自动更新各个车次的剩余票数。

5)退票管理系统,对由于各种原因需要退票的旅客提供退票服务,系统根据具体的情况判定是否可以退票,进行退票。

第2章 面向对象分析和设计

类和对象设计如下:

第3章 逻辑结构设计

局部ER图

1、

车次管理

1n

2、售票员管理业务员

n1

3、车票销售系统

nm

4、车票销售超员管理

1n

总体ER图

m

1

n

mn

3.1 类和对象向关系模式转换

车次信息(车次号、座位数、发时、车种)

业务员信息(员工编号、姓名、性别、年龄)

员工奖励表(员工编号、工作站点、奖励等级)

车站信息(车次号、始发站、途径车站、途径车站、终点站)

车票信息(车票编号、车次号、座位号、价格、发车时间、座位种类)

退票信息(车票编号、车次号、退票日期)

售票信息(员工编号、车次号、车票编号、售票日期)

余票信息(车次号、发车时间、剩余票数)

第4章 数据库物理结构设计

4.1存取方法设计

数据库系统是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的多种应用要求。

对于火车站票务管理系统来说,为了提高某些属性(如:

车票编号、车次号、座位号、座位类型等)的查询速度,可以选择聚簇存取的方法,即把这些属性上具有相同值的元组集中放在连续的物理块上。

这样在查询时就会大大提高查询速度。

因此,该系统中选择聚簇存取方法。

4.2 存储结构设计

火车站票务管理系统是一个大型复杂的计算机网络信息系统,采用基于浏览器/服务器(B/S),客户端/服务器(C/S)混合的应用体系结构来建设教务管理系统。

数据库管理系统采用Microsoft公司推出的SQLServer2000或以上版本,并用SQL进行数据库的建立和数据库中数据的维护和查询。

4.3 物理设计

实现该设计的环境为WindowsXPProfessional+MSSQLServer2005或以上版本。

一:

建立火车站车票管理数据库

createdatabase火车站车票管理数据库

--1、创建管理员表:

createtable管理员

管理员编号char(6)notnullprimarykey,

姓名char(8),

级别char(10)

--2、创建乘客表:

createtable乘客表

身份证号char(18)notnullprimarykey,

车票编号char(5),

--3、建立业务员表:

createtable业务员

员工编号char(6)notnullprimarykey,

性别bit,

年龄int,

--4、创建员工奖励表

createtable员工奖励表

员工编号char(6)notnullreferences业务员(员工编号),

工作站点char(20),

奖励等级char(10),

primarykey(员工编号)

--5、建立车次表:

createtable车次表

车次号char(5)notnullprimarykey,

座位数int,

发车时间char(5)null,

车种char(4)

--6、建立车站表:

Createtable车站表

车次号char(5)notnullreferences车次表(车次号),

始发站char(20)notnull,

途径车站char(20)notnull,

途径车站char(20)null,

终点站char(20)notnull,

primarykey(车次号)

--7、建立车票表:

CREATETABLE车票表

车票编号char(5)notnullprimarykey,

发车时间datetimenotnull,

座位编号char(5)notnull,

价格floatnotnull,

座位种类char(4)

--8、建立售票表:

createtable售票表

员工编号char(6)notnullreferences业务员(员工编号),

车票编号char(5)notnullreferences车票表(车票编号),

售票日期datetime,

primarykey(员工编号,车票编号)

--9、建立退票表:

createtable退票表

车票编号char(5)notnullprimarykey,

退票时间datetimenull,

foreignkey(车票编号)references车票表(车票编号)

--10、建立余票表:

createtable余票表

车次号char(5)notnullprimarykey,

剩余票数intnotnull,

发车时间datetime,

foreignkey(车次号)references车次表(车次号)

第5章 数据库完整性设计

5.1 主键及唯一性索引

表名

主键

建立唯一性索引

车次表

(车次号)

createuniqueindex车次表

on车次表(车次号asc)

业务员

(员工编号)

createuniqueindex业务员

on业务员(员工编号asc)

车站表

(车站号)

createuniqueindex车站表

on车站表(车站号asc)

售票表

(车票号)

createuniqueindex售票表

on售票表(车票号asc)

车票表

(车票编号,车次号)

createuniqueindex车票表

on车票表(车票编号asc,车次号asc)

退票表

createuniqueindex退票表

on退票表(车票号asc)

余票表

createuniqueindex余票表

on余票表(车次号asc)

5.2参照完整性设计

5.3 Check约束

1、业务员表中将性别进行check约束:

altertable业务员

addconstraintsexcheck(性别in('

1'

'

0'

))

2、车票表中将座位编号进行check约束:

altertable车票表

addconstraintzumcheck(座位编号>

=12000and座位编号<

=15000)

3、车次表中车种进行check约束:

altertable车次表

addconstraintcczcheck(车种in('

普快'

快车'

特快'

动车'

高铁'

5.4 Default约束

1、售票表中售票日期默认值设为:

2013-11-1900:

00。

default('

00'

2、业务员表中将员工性别族默认值设为:

女。

女'

3、员工奖励表中将奖励等级默认值设为:

null。

null'

5.5触发器设计

--1、车票销售时不能超员,并自动修改剩余的座位数 

createtriggertri_ticketon售票表

afterinsert

as

begin

declare@p_numchar(5),@seat_sumint,@t_numchar(5)

select@p_num=车票编号,@t_num=车次号frominserted

select@seat_sum=剩余票数from余票表

update余票表

set剩余票数=剩余票数-1

where车次号=@t_num

end

go 

--触发检验:

insertinto售票表

values('

111011'

20136'

1234'

12:

--2、业务员售出车票后,自动更新员工售票情况表和员工奖励表

createtrigger业务员售票触发器on售票表afterinsert

as

begin

declare@员工编号char(5)

select@员工编号='

员工编号'

frominserted

update员工售票情况set售出票数=售出票数+1where员工编号=@员工编号

update员工奖励表set奖励等级='

一等奖励'

where员工编号=@员工编号

end

go

111002'

20106'

S223'

2013/11/1912:

00:

--3、退票时自动修改相应车次的剩余座位数

createtriggertp_ticketon退票表

set剩余票数=剩余票数+1

insertinto退票表

2013-11-1312:

--4、退票时,根据退票时间判断是否允许退票

createtriggert_pon退票表

insteadofinsert

as

begin

declare@p_numchar(5),@t_timedatetime,@f_numdatetime

select@p_num=车票编号,@t_time=退票时间frominserted

select@f_num=发车时间from车票表where车票编号=@p_num

if@f_num-@t_time>

=2

print'

退票成功'

else

不能退票'

insertinto退票表values('

20116'

S213'

2013-11-1912:

第6章数据库视图设计

--1、创建业务员表视图

createview业务员表视图withencryption

select业务员.员工编号,姓名,工作站点,奖励等级

from业务员,员工奖励表

where业务员.员工编号=员工奖励表.员工编号

withcheckoption

--2、创建车次管理视图

createview车次管理视图

select车次表.车次号,座位数,发车时间,车种,始发站,终点站

from车次表,车站表

where车次表.车次号=车站表.车次号

-- 

、创建车票表视图

createview车票表视图

select车票编号,车次号,发车时间,座位编号,价格,座位种类

from车票表

--4、创建车票销售视图

createview创建车票销售视图

select车次管理视图.车次号,车次管理视图.发车时间,车种,始发站,终点站,价格,座位种类,剩余票数

from车次管理视图,车票表,余票表

where余票表.车次号=车票表.车次号and车次管理视图.车次号=余票表.车次号

--5、创建车票销售视图

createview车票销售视图

select员工编号,售票表.车票编号,价格,售票日期

from车票表,售票表

where售票表.车票编号=车票表.车票编号

6、创建售票表视图

createview售票表视图

select员工编号,车票编号,车次号,售票日期

from售票表 

7、创建退票表视图

createview退票表视图

select车票编号,车次号,退票时间

from退票表

--8、创建余票表视图

createview余票表视图

select车次号,剩余票数,发车时间

from余票表

--9、创建余票情况视图1

createview余票情况视图1

select余票表.车次号,发车时间

from余票表,售票表

where余票表.车次号=售票表.车次号

--10、创建余票情况视图2

createview余票情况视图2

select售票表.车次号,发车时间

第7章数据库存储过程设计

--1、指定始发站和终点站查询车次号、车种、价格、座位种类、剩余票数等信息

createprocedurebtend@始发站char(20),@终点站char(20)

setnocounton

select*

from车票销售视图

where始发站=@始发站and终点站=@终点站

--执行存储过程

execbtend'

郑州'

北京'

--2、指定车次查询始发站、终点站、车种、价格、座位种类、剩余票数等信息

createprocedure按车次查询@车次号char(5)

where车次号=@车次号

End

exec按车次查询'

T146'

--3、指定车次指定发车时间的车票销售情况 

createprocedurep_selld@t_num_inchar(5),@d_time_indatetime,@sum_ticketchar(6)output

select车次号,count(*)as'

@sum_ticket'

from余票情况视图

where余票情况视图.车次号=@t_num_inand发车时间=@d_time_in

groupby车次号

execp_selld'

G574'

'

2013/11/1915:

53:

count(*)'

--4、指定日期各业务员车票的销售收入

createprocedurerp_selled@y_num_inchar(6)output,@d_time_indatetime,@moneychar(6)output

select员工编号,sum(价格)as'

@money'

where员工编号=@y_num_inand售票日期=@d_time_in

groupby员工编号

execrp_selled'

2013/2/100:

sum(价格)'

--5、指定员工编号查询售出票数

createprocedure编号查询@员工编号char(6)output,@售出票数char(6)output

select员工编号,count(车票编号)as'

@售出票数'

from售票表

where员工编号=@员工编号

exec编号查询'

count(车票编号)'

--6、改变指定员工的工作站点

createprocedure工作站点变更@员工编号char(6),@工作站点char(20)

update员工奖励表

set工作站点=@工作站点

exec工作站点变更'

--7、根据身份证号码查询乘客的车票信息

createprocedures_tri1@idchar(18)

select身份证号,姓名,乘客表.车票编号,车次管理视图.车次号,车种,始发站,终点站,车票表.发车时间,座位编号,价格,座位种类

from乘客表,车次管理视图,车票表

where车票表.车次号=车次管理视图.车次号and车票表.车票编号=乘客表.车票编号and身份证号=@id

execs_tri1'

411082199210020018'

第8章权限设计

--1、创建一级管理员的登录名及用户,并给一级管理员授权

createlogin一级管理员

withpassword='

123456'

default_database=火车站票务管理数据库

createrole一级管理员

authorizationdbo

createuser一级管理员

forlogin一级管理员

withdefault_schema=dbo

grantinsert,update,deleteon退票表to一级管理员

grantinsert,update,deleteon车次表to一级管理员

grantinsert,update,deleteon车站表to一级管理员

--2、创建二级管理员的登录名及用户,并给二级管理员授权

createlogin二级管理员

createrole二级管理员

createuser二级管理员

forlogin二级管理员

grantinsert,update,deleteon退票表to二级管理员

grantinsert,update,deleteon车站表to二级管理员

--3、创建数据库角色业务员并给业务员授权

createrole业务员

grantselecton车票表to业务员

grantselecton车次表to业务员

grantinsert,update,deleteon售票表to业务员

grantinsert,update,deleteon退票表to业务员

--4、创建数据库角色乘客并给乘客授权

createrole乘客

grantselecton车票表to乘客

grantselecton车次表to乘客

grantselecton车站表to乘客

总结

通过这么多天的数据库课程设计的学习,我受益匪浅,从中学到了许多新知识,这些知识是在课堂中不能学到或者说很难学到的。

并且对sqlserver这一门课程有了更深一步的理解。

在做课程设计中,我们可以把课堂上所学的理论知识和实践联系起来,在所要开发的系统中渐渐学会了融会贯通。

同样通过对SQL的应用,也使我们熟练和巩固了对SQL的理解。

这样我们对开发系统的整个过程也有了一个系统的了解。

这次课程设计,我选择的课题是《火车站票务管理系统》,在火车站票务管理管理系统的开发中采用了完整的数据库设计的全过程,从需求分析到概念结构设计,到逻辑结构设计,再到物理结构

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

当前位置:首页 > 高中教育 > 高考

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

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