火车站票务管理系统_第1页
火车站票务管理系统_第2页
火车站票务管理系统_第3页
火车站票务管理系统_第4页
火车站票务管理系统_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大型数据库课程设计设计报告题目:火车站票务管理系统后台数据库 目录TOC\o"1-2"\u第1章需求分析 21.1需求调查 21.2系统功能分析 21.3面对用户需求分析 3第2章面向对象分析和设计 4类和对象设计如下: 4第3章逻辑结构设计 63.1类和对象向关系模式转换 9第4章数据库物理结构设计 94.1 存取方法设计 94.2存储结构设计 94.3物理设计 9第5章数据库完整性设计 95.1主键及唯一性索引 125.2 参照完整性设计 125.3Check约束 135.4Default约束 135.5 触发器设计 13第6章数据库视图设计 13第7章数据库存储过程设计 15第8章权限设计 17总结 19参考文献: 20PAGEPAGE3PAGEPAGE31第1章需求分析通过对火车站客运量、旅客和业务员的调查,该火车站票务管理系统有如下需求:系统管理:实现系统管理人员对系统的管理,包括添加删除用户,更改密码,数据备份,数据还原,注销等功能。票务管理:实现对火车运行站点及时间的管理、对业务员的管理、对余票的更新及退票的管理。基本信息:实现显示火车及业务员的基本信息。售票:在有剩余座位的情况下自动更新剩余的座位数,控制不超员。查询:包括实现车次查询,业务员查询。可以查询火车的车种、编号、车厢数等;查询售票员工作的车站名,及其年龄、性别等;服务器配置:对它进行配置可以使得在其他电脑上也照常使用。这样不必每次都到数据库中去更改。帮助系统:帮助系统为用户指明方向。1.2系统功能分析1、车次管理:用于对火车基本信息的录入、查询、修改、维护、删除等常用功能。2、车次及价格管理(含到各站的价格):可以按照车次或始发站、终点站两种方式进行查询,只需要输入关键信息即可查到所需的车次的有关信息,包括车的类型、所剩票的类型、数量、票价等。3、实现业务员管理:用于对业务员基本信息的录入、查询、修改、维护、删除等常用功能,并提供工作地点变动、奖惩登记等功能。4、实现车票销售管理:车票销售时不能超员,并自动修改剩余的座位数(用触发器实现);5、创建存储过程统计指定车次指定发车时间的车票销售情况;6、创建存储过程统计指定日期各业务员车票的销售收入;7、实现退票管理:由于一些原因,可能造成客户要求退票,系统根据具体的情况判定是否可以退票,进行退票。退票时自动修改相应车次的剩余座位数。1.3面对用户需求分析在火车站票务管理系统中,最主要的功能就是进行一系列的查询和各类数据的管理。因此,可以将火车站票务管理系统分为管理系统(有数据变化)和查询系统两个子系统。而在所设计的火车站票务管理系统中,主要有三类用户,即旅客用户、业务员用户、、系统管理员。各类用户在该系统中的需求不同,权限也不同。因此,为了更明确,更系统的了解用户需求,我们还可以将管理系统再细分为旅客管理系统,业务员管理系统,系统管理员管理系统。同样,将查询系统也按用户职能进行细分。这样细分后,看似把系统需求繁杂化了。其实不然,细分后使各用户需求更加明确了,并且能更好的把握系统需求。下面从细分后的各个子系统分析子系统的需求:火车站票务管理系统火车站票务管理系统车次管理子系统车次及价格管理子系统业务员管理车次管理子系统车次及价格管理子系统业务员管理子系统车票销售管理子系统退票管理子系统1)车次管理系统,旅客可以通过该系统查询相关车次的基本信息,火车途经站点、出发时间、车的种类等。2)车次及价格管理系统,旅客可以按照相关车次及车站查询相对票价及时间。3)业务员管理系统,该系统中,主要显示业务员的各项基本信息以及对业务员信息的管理。4)车票销售管理系统,该系统主要是可以自动更新各个车次的剩余票数。5)退票管理系统,对由于各种原因需要退票的旅客提供退票服务,系统根据具体的情况判定是否可以退票,进行退票。退票时自动修改相应车次的剩余座位数。面向对象分析和设计类和对象设计如下:第3章逻辑结构设计局部ER图车次管理终点站终点站车次号终点站终点站车次号开车时间到达时间开车时间到达时间始发站始发站终点站终点站车站经过火车 车站经过火车始发站 1 n始发站途径车站途径车站座位数发车时间相对距离座位数发车时间相对距离2、售票员管理业务员始发站工作姓名业务员车站始发站工作姓名业务员车站性别性别员工编号 n 1员工编号年龄年龄途径车站号途径车站号终点站终点站车票销售系统售票日期售票日期座位种类座位种类票价车票退票售票业务员性别年龄员工编号姓名票价车票退票售票业务员性别年龄员工编号姓名车次号车次号 n m座位号座位号发车时间发车时间 n m退票日期车票编号退票日期车票编号4、车票销售超员管理车票编号号车票编号号车次号车次号座位剩余数终点站座位剩余数终点站座位种类座位种类票价票价发车时间对应发车时间对应座位号号车票火车 1 n座位号号车票火车车次号车次号发车时间发车时间始发站时座位数始发站时座位数车种座位号车厢号号车种座位号车厢号号总体ER图车种车次号车种车次号到达时间开车时间到达时间开车时间始发站始发站终点站终点站终点站车站经过火车 m终点站车站经过火车始发站 1始发站途径车站名座位数 1途径车站名座位数发车时间发车时间相对距离 1相对距离车厢号车厢号对应工作对应工作座位剩余数座位剩余数座位号n座位号售票日期 n售票日期票价车票编号票价车票编号员工编号员工编号售票售票姓名车次号号n姓名车次号号车票业务员 m n车票业务员座位号退票 座位号退票性别m性别n座位种类年龄发时 座位种类年龄发时退票日期退票日期3.1类和对象向关系模式转换车次信息(车次号、座位数、发时、车种)业务员信息(员工编号、姓名、性别、年龄)员工奖励表(员工编号、工作站点、奖励等级)车站信息(车次号、始发站、途径车站、途径车站、终点站)车票信息(车票编号、车次号、座位号、价格、发车时间、座位种类)退票信息(车票编号、车次号、退票日期)售票信息(员工编号、车次号、车票编号、售票日期)余票信息(车次号、发车时间、剩余票数)第4章数据库物理结构设计存取方法设计数据库系统是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的多种应用要求。对于火车站票务管理系统来说,为了提高某些属性(如:车票编号、车次号、座位号、座位类型等)的查询速度,可以选择聚簇存取的方法,即把这些属性上具有相同值的元组集中放在连续的物理块上。这样在查询时就会大大提高查询速度。因此,该系统中选择聚簇存取方法。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(8),车票编号char(5),)--3、建立业务员表:createtable业务员(员工编号char(6)notnullprimarykey,姓名char(8),性别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)notnull,途径车站char(20)null,途径车站char(20)null,途径车站char(20)null,终点站char(20)notnull,primarykey(车次号))--7、建立车票表:CREATETABLE车票表(车票编号char(5)notnullprimarykey,车次号char(5)notnullreferences车次表(车次号),发车时间datetimenotnull,座位编号char(5)notnull,价格floatnotnull,座位种类char(4))--8、建立售票表:createtable售票表(员工编号char(6)notnullreferences业务员(员工编号),车票编号char(5)notnullreferences车票表(车票编号),车次号char(5)notnullreferences车次表(车次号),售票日期datetime,primarykey(员工编号,车票编号))--9、建立退票表:createtable退票表(车票编号char(5)notnullprimarykey,车次号char(5)notnullreferences车次表(车次号),退票时间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.3Check约束业务员表中将性别进行check约束:altertable业务员addconstraintsexcheck(性别in('1','0'))车票表中将座位编号进行check约束:altertable车票表addconstraintzumcheck(座位编号>=12000and座位编号<=15000)车次表中车种进行check约束:altertable车次表addconstraintcczcheck(车种in('普快','快车','特快','动车','高铁'))5.4Default约束1、售票表中售票日期默认值设为:2013-11-1900:00。default('2013-11-1900:00')2、业务员表中将员工性别族默认值设为:女。default('女')3、员工奖励表中将奖励等级默认值设为:null。default('null')触发器设计--1、车票销售时不能超员,并自动修改剩余的座位数

createtriggertri_ticketon售票表afterinsertasbegindeclare@p_numchar(5),@seat_sumint,@t_numchar(5)select@p_num=车票编号,@t_num=车次号frominsertedselect@seat_sum=剩余票数from余票表update余票表set剩余票数=剩余票数-1where车次号=@t_numendgo

--触发检验:

insertinto售票表values('111011','20136','1234','12:00')--2、业务员售出车票后,自动更新员工售票情况表和员工奖励表createtrigger业务员售票触发器on售票表afterinsertasbegindeclare@员工编号char(5)select@员工编号='员工编号'frominsertedupdate员工售票情况set售出票数=售出票数+1where员工编号=@员工编号update员工奖励表set奖励等级='一等奖励'where员工编号=@员工编号endgo--触发检验:insertinto售票表values('111002','20106','S223','2013/11/1912:00:00')--3、退票时自动修改相应车次的剩余座位数createtriggertp_ticketon退票表afterinsertasbegindeclare@p_numchar(5),@seat_sumint,@t_numchar(5)select@p_num=车票编号,@t_num=车次号frominsertedselect@seat_sum=剩余票数from余票表update余票表set剩余票数=剩余票数+1where车次号=@t_numend--触发检验:insertinto退票表values('20136','1234','2013-11-1312:00')--4、退票时,根据退票时间判断是否允许退票createtriggert_pon退票表insteadofinsertasbegin 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 print'不能退票'end--触发检验:

insertinto退票表values('20116','S213','2013-11-1912:00')第6章数据库视图设计--1、创建业务员表视图createview业务员表视图withencryptionasselect业务员.员工编号,姓名,工作站点,奖励等级 from业务员,员工奖励表where业务员.员工编号=员工奖励表.员工编号withcheckoption--2、创建车次管理视图createview车次管理视图asselect车次表.车次号,座位数,发车时间,车种,始发站,终点站from车次表,车站表where车次表.车次号=车站表.车次号--

、创建车票表视图createview车票表视图asselect车票编号,车次号,发车时间,座位编号,价格,座位种类from车票表--4、创建车票销售视图createview创建车票销售视图asselect车次管理视图.车次号,车次管理视图.发车时间,车种,始发站,终点站,价格,座位种类,剩余票数from车次管理视图,车票表,余票表where余票表.车次号=车票表.车次号and车次管理视图.车次号=余票表.车次号--5、创建车票销售视图createview车票销售视图asselect员工编号,售票表.车票编号,价格,售票日期from车票表,售票表where售票表.车票编号=车票表.车票编号--

6、创建售票表视图createview售票表视图asselect员工编号,车票编号,车次号,售票日期from售票表

--

7、创建退票表视图createview退票表视图asselect车票编号,车次号,退票时间from退票表--8、创建余票表视图createview余票表视图asselect车次号,剩余票数,发车时间from余票表--9、创建余票情况视图1createview余票情况视图1asselect余票表.车次号,发车时间from余票表,售票表where余票表.车次号=售票表.车次号--10、创建余票情况视图2createview余票情况视图2asselect售票表.车次号,发车时间from余票表,售票表where余票表.车次号=售票表.车次号数据库存储过程设计--1、指定始发站和终点站查询车次号、车种、价格、座位种类、剩余票数等信息createprocedurebtend@始发站char(20),@终点站char(20)asbeginsetnocountonselect*from车票销售视图where始发站=@始发站and终点站=@终点站end--执行存储过程execbtend'郑州','北京'--2、指定车次查询始发站、终点站、车种、价格、座位种类、剩余票数等信息createprocedure按车次查询@车次号char(5)asbeginsetnocountonselect*from车票销售视图where车次号=@车次号Endexec按车次查询'T146'--3、指定车次指定发车时间的车票销售情况

createprocedurep_selld@t_num_inchar(5),@d_time_indatetime,@sum_ticketchar(6)outputasselect车次号,count(*)as'@sum_ticket'from余票情况视图where余票情况视图.车次号=@t_num_inand发车时间=@d_time_ingroupby车次号go--执行存储过程execp_selld'G574','2013/11/1915:53:00','count(*)'--4、指定日期各业务员车票的销售收入

createprocedurerp_selled@y_num_inchar(6)output,@d_time_indatetime,@moneychar(6)outputasselect员工编号,sum(价格)as'@money'from车票销售视图where员工编号=@y_num_inand售票日期=@d_time_ingroupby员工编号go--执行存储过程execrp_selled'111002','2013/2/100:00:00','sum(价格)'--5、指定员工编号查询售出票数createprocedure编号查询@员工编号char(6)output,@售出票数char(6)outputasselect员工编号,count(车票编号)as'@售出票数'from售票表where员工编号=@员工编号groupby员工编号goexec编号查询'111002','count(车票编号)'--6、改变指定员工的工作站点createprocedure工作站点变更@员工编号char(6),@工作站点char(20)asupdate员工奖励表set工作站点=@工作站点where员工编号=@员工编号goexec工作站点变更'111002','北京'--7、根据身份证号码查询乘客的车票信息createprocedures_tri1@idchar(18)asselect身份证号,姓名,乘客表.车票编号,车次管理视图.车次号,车种,始发站,终点站,车票表.发车时间,座位编号,价格,座位种类from乘客表,车次管理视图,车票表where车票表.车次号=车次管理视图.车次号and车票表.车票编号=乘客表.车票编号and身份证号=@idgo--执行存储过程execs_tri1权限设计--1、创建一级管理员的登录名及用户,并给一级管理员授权createlogin一级管理员withpassword='123456',default_database=火车站票务管理数据库createrole一级管理员authorizationdbocreateuser一级管理员forlogin一级管理员withdefault_schema=dbograntinsert,update,deleteon退票表to一级管理员grantinsert,update,deleteon车次表to一级管理员grantinsert,update,deleteon车站表to一级管理员--2、创建二级管理员的登录名及用户,并给二级管理员授权createlogin二级管理员withpassword='123456',default_database=火车站票务管理数据库createrole二级管理员authorizationdbocreateuser二级管理员forlogin二级管理员withdefault_schema=dbograntinsert,update,deleteon退票表to二级管理员grantinsert,update,deleteon车站表to二级管理员--3、创建数据库角色业务员并给业务员授权createrole业务员authorizationdbograntselecton车票表to业务员grantselecton车次表to业务员grantinsert,update,deleteon售票表to业务员grantinsert,update,deleteon退票表to业务员--4、创建数据库角色乘客并给乘客授权createrole乘客authorizationdbograntselecton车票表to乘客grantselecton车次表to乘客grantselecton车站表to乘客总结通过这么多天的数据库课程设计的学习,我受益匪浅,从中学到了许多新知识,这些知识是在课堂中不能学到或者说很难学到的。并且对sqlserver这一门课程有了更深一步的理解。在做课程设计中,我们可以把课堂上所学的理论知识和实践联系起来,在所要开发的系统中渐渐学会了融会贯通。同样通过对SQL的应用,也使我们熟练和巩固了对SQL的理解。这样我们对开发系统的整个过程也有了一个系统的了解。这次课程设计,我选择的课题是《火车站票务管理系统》,在火车站票务管理管理系统的开发中采用了完整的数据库设计的全过程,从需求分析到概念结构设计,到逻辑结构设计,再到物理结构设计,最后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论