《大型数据库课程设计 火车站票务管理系统.docx》由会员分享,可在线阅读,更多相关《大型数据库课程设计 火车站票务管理系统.docx(28页珍藏版)》请在三一办公上搜索。
1、大型数据库课程设计设计报告题目:火车站票务管理系统后台数据库学 号:gggg学生姓名:ddd指导教师:fgg提交时间:2013-11-23目录第1章 需求分析11.1需求调查错误!未定义书签。1.2系统功能分析11.3面对用户需求分析2第2章 面向对象分析和设计错误!未定义书签。类和对象设计如下:3第3章 逻辑结构设计53.1类和对象向关系模式转换8第4章 数据库物理结构设计84.1 存取方法设计84.2存储结构设计84.3 物理设计8第5章 数据库完整性设计85.1 主键及唯一性索引115.2 参照完整性设计115.3 Check约束125.4 Default约束125.5 触发器设计12第
2、6章数据库视图设计12第7章数据库存储过程设计14第8章权限设计16总结19参考文献:21教务管理系统后台数据库第1章需求分析通过对火车站客运量、旅客和业务员的调查,该火车站票务管理系统有如 下需求:1)系统管理:实现系统管理人员对系统的管理,包括添加删除用户,更改密 码,数据备份,数据还原,注销等功能。2)票务管理:实现对火车运行站点及时间的管理、对业务员的管理、对余票 的更新及退票的管理。3)基本信息:实现显示火车及业务员的基本信息。4)售票:在有剩余座位的情况下自动更新剩余的座位数,控制不超员。5)查询:包括实现车次查询,业务员查询。可以查询火车的车种、编号、车厢数等;查询售票员工作的车
3、站名,及其年龄、性别等;6)服务器配置:对它进行配置可以使得在其他电脑上也照常使用。这样不必 每次都到数据库中去更改。7)帮助系统:帮助系统为用户指明方向。1.2系统功能分析火午站票务管理系统1、车次管理:用于对火车基本信息的录入、查询、修改、维护、删除等常 用功能。2、车次及价格管理(含到各站的价格):可以按照车次或始发站、终点站 两种方式进行查询,只需要输入关键信息即可查到所需的车次的有关信息, 包括车的类型、所剩票的类型、数量、票价等。3、实现业务员管理:用于对业务员基本信息的录入、查询、修改、维护、 删除等常用功能,并提供工作地点变动、奖惩登记等功能。4、实现车票销售管理:车票销售时不
4、能超员,并自动修改剩余的座位数(用 触发器实现);5、创建存储过程统计指定车次指定发车时间的车票销售情况;6、创建存储过程统计指定日期各业务员车票的销售收入;7、实现退票管理:由于一些原因,可能造成客户要求退票,系统根据具体 的情况判定是否可以退票,进行退票。退票时自动修改相应车次的剩余座位数。1.3面对用户需求分析在火车站票务管理系统中,最主要的功能就是进行一系列的查询和各类数 据的管理。因此,可以将火车站票务管理系统分为管理系统(有数据变化)和 查询系统两个子系统。而在所设计的火车站票务管理系统中,主要有三类用户, 即旅客用户、业务员用户、系统管理员。各类用户在该系统中的需求不同, 权限也
5、不同。因此,为了更明确,更系统的了解用户需求,我们还可以将管理 系统再细分为旅客管理系统,业务员管理系统,系统管理员管理系统。同样, 将查询系统也按用户职能进行细分。这样细分后,看似把系统需求繁杂化了。 其实不然,细分后使各用户需求更加明确了,并且能更好的把握系统需求。下面从细分后的各个子系统分析子系统的需求:1) 车次管理系统,旅客可以通过该系统查询相关车次的基本信息,火车途经 站点、出发时间、车的种类等。2) 车次及价格管理系统,旅客可以按照相关车次及车站查询相对票价及时间。3) 业务员管理系统,该系统中,主要显示业务员的各项基本信息以及对业务 员信息的管理。4) 车票销售管理系统,该系统
6、主要是可以自动更新各个车次的剩余票数。5) 退票管理系统,对由于各种原因需要退票的旅客提供退票服务,系统根据 具体的情况判定是否可以退票,进行退票。退票时自动修改相应车次的剩余座位 数。第2章面向对象分析和设计类和对象设计如下:管理员信息乘客信息管理员编号;char(&)身份证号;chailB)姓名:char(S )姓名:diar (包级别:char(lO)车票编号:添加0添加0修改0修改0删除0删除0查询。查询0车次信息业务员车次号:击叮员工编号:char座位数:血姓名! char祐)发牛日寸间:char(3)工作站点:char (20)里程;Loa.1性别;bit车种:char(6)年龄,
7、mt添加0查询()修改0添加0删除0修改。查询0删除。第3章 逻辑结构设计局部ER图1、车次管理2、售票员管理业务员3、车票销售系统4、车票销售超员管理总体ER图3.1类和对象向关系模式转换车次信息(车次号、座位数、发时、车种)业务员信息(员工编号、姓名、性别、年龄)员工奖励表(员工编号、工作站点、奖励等级)车站信息(车次号、始发站、途径车站、途径车站、终点站)车票信息(车票编号、车次号、座位号、价格、发车时间、座位种类)退票信息(车票编号、车次号、退票日期)售票信息(员工编号、车次号、车票编号、售票日期)余票信息(车次号、发车时间、剩余票数)第4章 数据库物理结构设计4.1存取方法设计数据库
8、系统是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的 多种应用要求。对于火车站票务管理系统来说,为了提高某些属性(如:车票编号、车次号、 座位号、座位类型等)的查询速度,可以选择聚簇存取的方法,即把这些属性上具有相同值 的元组集中放在连续的物理块上。这样在查询时就会大大提高查询速度。因此,该系统中选 择聚簇存取方法。4.2存储结构设计火车站票务管理系统是一个大型复杂的计算机网络信息系统,采用基于浏览器/服务器 (B/S),客户端/服务器(C/S)混合的应用体系结构来建设教务管理系统。数据库管理系统 采用Microsoft公司推出的SQL Server 2000或以上版本,并用
9、SQL进行数据库的 建立和数据库中数据的维护和查询。4.3物理设计实现该设计的环境为Windows XP Professional + MS SQL Server 2005或以上版本。一:建立火车站车票管理数据库create database火车站车票管理数据库-1、创建管理员表:create table 管理员(管理员编号char(6) not null primary key,姓名 char(8),级别 char(10)-2、创建乘客表:create table 乘客表(身份证号char(18) not null primary key,姓名 char(8),车票编号char(5),)-3
10、、建立业务员表:create table 业务员(员工编号char(6) not null primary key,姓名 char(8),性别bit, 年龄i nt,)-4、创建员工奖励表create table员工奖励表(员工编号char(6) not null references业务员(员工编号),工作站点char(20),奖励等级char(10),primary key (员 工编号)-5、建立车次表:create table 车次表(车次号char(5) not null primary key,座位数int,发车时间char(5) null,车种 char (4)-6、建立车站表:
11、Create table 车站表(车次号char(5) not null references车次表(车次号),始发站char(20) not null,途径车站char(20) not null,途径车站char(20) not null,途径车站 char(20) null,途径车站 char(20) null,途径车站 char(20) null,终点站char(20) not null,primary key (车次号)-7、建立车票表:CREATETABLE 车票表(车票编号char(5) not null primary key ,车次号char(5) not null refer
12、ences车次表(车次号),发车时间 datetime not null,座位编号char(5) not null,价格float not null,座位种类char(4)-8、建立售票表:create table 售票表(员工编号char(6) not null references业务员(员工编号),车票编号char(5) not null references车票表(车票编号), 车次号char(5) not null references车次表(车次号),售票日期datetime,primary key (员工编号,车票编号)-9、建立退票表:create table 退票表(车票编号
13、char(5) not null primary key,车次号char(5) not null references车次表(车次号),退票时间 datetime null,foreign key (车票编号)references车票表(车票编号)-10、建立余票表:create table 余票表(车次号char(5) not null primary key,剩余票数int not null,发车时间datetime,foreign key (车次号)references 车次表(车次号)第5章数据库完整性设计5.1主键及唯一性索引表名主键建立唯一性索引车次表(车次号)create uni
14、que index 车次表 on车次表(车次号asc)业务员(员工编号)create unique index 业务员 on业务员(员工编号asc)车站表(车站号)create unique index 车站表 on 车站表(车站号 asc)/te ib 售票表(车票号)create unique index 售票表 on售票表(车票号asc)车票表(车票编号,车次号)create unique index 车票表on车票表(车票编号asc,车次号asc)退票表(车票号)create unique index 退票表 on退票表(车票号asc)余票表(车次号)create unique ind
15、ex 余票表 on余票表(车次号asc)5.2参照完整性设计5.3 Check 约束1、业务员表中将性别进行check约束:alter table 业务员add constraint sex check(性别 in(1,0)2、车票表中将座位编号进行check约束:alter table 车票表add constraint zum check (座位编号=12000 and 座位编号 =15000)3、车次表中车种进行check约束:alter table 车次表add constraint ccz check (车种 in(普快,快车,特快,动车,高铁)5.4 Default 约束1、售票表
16、中售票日期默认值设为:2013-11-19 00:00。default(2013-11-19 00:00)2、业务员表中将员工性别族默认值设为:女。default(女)3、员工奖励表中将奖励等级默认值设为:null。default(null)5.5触发器设计-1、车票销售时不能超员,并自动修改剩余的座位数create trigger tri_ticket on 售票表after insertasbegindeclare p_num char5),seat_sum int t_num char(5select p_num=车票编号 t_num =车次号from insertedselect se
17、at_sum=剩余票数from余票表update余票表set剩余票数=剩余票数-1where车次号二t_ numendgo-触发检验:insert into 售票表values(111011,20136,1234,12:00)-2、业务员售出车票后,自动更新员工售票情况表和员工奖励表create trigger业务员售票触发器on售票表after insertasbegindeclare 员工编号 char(5)select 员工编号=员工编号from insertedupdate员工售票情况set售出票数=售出票数+1 where员工编号=员工编号 update员工奖励表set奖励等级二一等
18、奖励where员工编号=员工编号 endg。-触发检验:insert into 售票表values(111002,20106,S223,2013/11/19 12:00:00)-3、退票时自动修改相应车次的剩余座位数create trigger tp_ticket on 退票表after insertasbegindeclare p_num char 5),seat_sum int t_num char(5select p_num=车票编号 t_num 二车次号from insertedselect seat_sum=剩余票数from余票表update余票表set剩余票数=剩余票数+1wher
19、e车次号二t_ numend-触发检验:insert into 退票表values(20136,1234,2013-11-13 12:00)-4、退票时,根据退票时间判断是否允许退票create trigger t_p on 退票表instead of insertasbegindeclare p_num char 5),t_time datetime f_num datetimeselect p_num=车票编号 t_time 退票时间from insertedselect f_num 发车时间from 车票表where车票编号 p_numif f_num t_time =2print退票成
20、功elseprint不能退票end-触发检验:insert into 退票表 values(20116,S213,2013-11-19 12:00)第6章数据库视图设计-1、创建业务员表视图create view 业务员 表视图 with encryptionasselect业务员.员工编号,姓名,工作站点,奖励等级from业务员,员工奖励表where业务员.员工编号=员工奖励表.员工编号with check option-2、创建车次管理视图create view车次管理视图asselect车次表.车次号,座位数,发车时间,车种,始发站,终点站from车次表,车站表where车次表.车次号=
21、车站表.车次号-、创建车票表视图create view车票表视图asselect车票编号,车次号,发车时间,座位编号,价格,座位种类from车票表-4、创建车票销售视图create view创建车票销售视图asselect车次管理视图.车次号,车次管理视图.发车时间,车种,始发站,终点站,价格,座位种类,剩余票数from车次管理视图,车票表,余票表where余票表.车次号=车票表.车次号and车次管理视图.车次号二余票表.车次号-5、创建车票销售视图create view车票销售视图asselect员工编号,售票表.车票编号,价格,售票日期from车票表,售票表where售票表.车票编号=车票
22、表.车票编号-6、创建售票表视图create view售票表视图asselect员工编号,车票编号,车次号,售票日期from售票表-7、创建退票表视图create view退票表视图asselect车票编号,车次号,退票时间from退票表-8、创建余票表视图create view余票表视图asselect车次号,剩余票数,发车时间from余票表-9、创建余票情况视图1create view余票情况视图1asselect余票表.车次号,发车时间from余票表,售票表where余票表.车次号=售票表.车次号-10、创建余票情况视图2create view余票情况视图2asselect售票表.车次号
23、,发车时间from余票表,售票表where余票表.车次号=售票表.车次号第7章数据库存储过程设计-1、指定始发站和终点站查询车次号、车种、价格、座位种类、剩余票数等信 息create procedure btend 始发站char(20),终点站char(20)asbeginset nocount onselect *from车票销售视图where始发站=始发站and终点站二终点站end-执行存储过程exec btend 郑州,,北京-2、指定车次查询始发站、终点站、车种、价格、座位种类、剩余票数等信息 create procedure按车次查询车次号char(5)asbeginset noc
24、ount onselect *from车票销售视图where车次号二车次号Endexec 按车次查询T146-3、指定车次指定发车时间的车票销售情况create procedure p_selld t_num_in char(5),d_time_in datetime, sum_ticket char(6) outputasselect 车次号,count(*) as sum_ticketfrom余票情况视图where余票情况视图.车次号=t_num_in and发车时间=d_time_ingroup by车次号g。-执行存储过程exec p_selld G574, 2013/11/19 15
25、:53:00,count(*)-4、指定日期各业务员车票的销售收入create procedure rp_selled y_num_in char(6 output d_time_in datetime,money char(6) output asselect 员工编号,sum(价格)asmoneyfrom车票销售视图where 员工编号 y_num_in and 售票日期=d_time_ingroup by员工编号 go-执行存储过程exec rp_selled 111002,2013/2/10 0:00:00,sum(价格)-5、指定员工编号查询售出票数create procedure
26、编号查询 员工编号char(6) output,售出票数char(6) outputasselect员工编号,count(车票编号)as售出票数from售票表where员工编号=员工编号group by员工编号g。exec编号查询111002,count(车票编号)-6、改变指定员工的工作站点create procedure工作站点变更员工编号char(6),X作站点char(20)asupdate员工奖励表set工作站点二工作站点where员工编号=员工编号go exec工作站点变更111002,北京-7、根据身份证号码查询乘客的车票信息create procedure s_tri1 id
27、chan 18asselect身份证号,姓名,乘客表.车票编号,车次管理视图.车次号,车种,始发站,终点站,车票表.发车时间,座位编号,价格,座位种类from乘客表,车次管理视图,车票表where车票表.车次号=车次管理视图.车次号and车票表.车票编号=乘客表.车票编号and身份证号=idgo-执行存储过程exec s_tri1 4110018第8章权限设计-1、创建一级管理员的登录名及用户,并给一级管理员授权create login 一级管理员with password=123456,default_database火车站票务管理数据库create role 一级管理员authorizat
28、ion dbocreate user 一级管理员for login 一级管理员with default_schema=dbogrant insert ,update,delete on 退票表to 一级管理员grant insert ,update,delete on 车次表to 一级管理员grant insert ,update,delete on 车站表to 一级管理员-2、创建二级管理员的登录名及用户,并给二级管理员授权create login 二级管理员with password=123456,default_database火车站票务管理数据库create role 二级管理员aut
29、horization dbocreate user二级管理员for login二级管理员with default_schema=dbogrant insert ,update,delete on 退票表to 二级管理员grant insert ,update,delete on 车站表to 二级管理员-3、创建数据库角色业务员并给业务员授权create role 业务员authorization dbogrant select on 车票表to 业务员grant select on 车次表to 业务员grant insert ,update,delete on 售票表to 业务员grant i
30、nsert ,update,delete on 退票表to 业务员-4、创建数据库角色乘客并给乘客授权create role 乘客authorization dbogrant select on 车票表to 乘客grant select on 车次表to 乘客grant select on 车站表to 乘客总结通过这么多天的数据库课程设计的学习,我受益匪浅,从中学到了许多新知识,这些知 识是在课堂中不能学到或者说很难学到的。并且对sql server这一门课程有了更深一步的 理解。在做课程设计中,我们可以把课堂上所学的理论知识和实践联系起来,在所要开发的 系统中渐渐学会了融会贯通。同样通过对S
31、QL的应用,也使我们熟练和巩固了对SQL的理解。这样我们对开发系统的整个过程也有了一个系统的了解。这次课程设计,我选择的课题是火车站票务管理系统,在火车站票务管理管理系统 的开发中采用了完整的数据库设计的全过程,从需求分析到概念结构设计,到逻辑结构设计, 再到物理结构设计,最后到数据库的实施和维护,每一步都认真的分析和实施。在这次课程设计中我明白了理论和实践要想充分地结合,需要非常扎实的基本功。这就 说明学好基础知识是理论付诸实践的前提。在设计火车站票务管理系统中我学到了很多,希 望在以后能充分利用所学的理论知识去实践,在实践中又要努力去巩固理论知识。只有这样, 才能把一门课程甚至一门学科学精
32、、学透。在数据库课程设计过程中,我觉得最重要的是,我们应该先认真设计好所需要的结构, 以免中间很小的改动却造成不必要的麻烦。参考文献:1. 王珊,萨师煊.数据库系统概论M.高等教育出版社,20052. 郑阿奇等.SQLServer实用教程(第3版)M,电子工业出版社,20093. 赵乃真等.信息系统设计与应用.清华大学出版社,2005大型数据库课程设计报告评分标准选题及功 能设计选题合理,功能简单(D)有一定的工作量和实用价值(C)功能设计丰富,有一定的难度系数(B)功能设计合理全面,能体现数据库的存储和整理数据的功能(A)数据表和 数据量具备基本的数据表,数据量较少,但能够实现系统基本需要(
33、D)具备基本的数据表,数据量适中,实现了 定的数据完整性(C)有多个数据表,数据量适中,有完善的数据完整性:B)有多个数据表,数据量充足,具有较强的数据安全性和数据完整性(A)数据库对 象具备基本的数据表,有主外键约束(D)创建了若干种的数据库对象,并加以利用(C)在实际应用中合理利用了各类数据库对象(B)具有身份验证、数据备份等较复杂的数据管理功能(A)功能实现利用存储过程实现了各种查询功能(D)除查询功能,还实现了各种数据操作功能(C)在上一条基础上,还实现了数据统计汇总功能(B)合理利用函数、存储过程、触发器实现各种数据查询、操作、管理功能(A)设计报告完成设计报告,阐述了系统功能,结构较完整(D)开题报告反映设计思路,结构完整,格式较规范(C)报告内容完整,图表使用准确,格式清晰,功能描述详尽(B)报告内容完整,图表使用准确,描述详细,代码阐述 清楚,反映系统执行流程(A)教师签字:总评成绩: