1、而在所设计的火车站票务管理系统中,主要有三类用户,即旅客用户、业务员用户、系统管理员。各类用户在该系统中的需求不同,权限也不同。因此,为了更明确,更系统的了解用户需求,我们还可以将管理系统再细分为旅客管理系统,业务员管理系统,系统管理员管理系统。同样,将查询系统也按用户职能进行细分。这样细分后,看似把系统需求繁杂化了。其实不然,细分后使各用户需求更加明确了,并且能更好的把握系统需求。下面从细分后的各个子系统分析子系统的需求:1) 车次管理系统,旅客可以通过该系统查询相关车次的基本信息,火车途经站点、出发时间、车的种类等。2) 车次及价格管理系统,旅客可以按照相关车次及车站查询相对票价及时间。3
2、)业务员管理系统,该系统中,主要显示业务员的各项基本信息以及对业务员信息的管理。 4)车票销售管理系统,该系统主要是可以自动更新各个车次的剩余票数。 5) 退票管理系统,对由于各种原因需要退票的旅客提供退票服务,系统根据具体的情况判定是否可以退票,进行退票。第2章面向对象分析和设计类和对象设计如下:第3章逻辑结构设计局部ER图1、车次管理 1 n2、售票员管理业务员 n 13、车票销售系统 n m4、车票销售超员管理 1 n总体ER图 m 1 n m n 3.1类和对象向关系模式转换车次信息(车次号、座位数、发时、车种)业务员信息(员工编号、姓名、性别、年龄)员工奖励表(员工编号、工作站点、奖
3、励等级)车站信息(车次号、始发站、途径车站、途径车站、终点站)车票信息(车票编号、车次号、座位号、价格、发车时间、座位种类)退票信息(车票编号、车次号、退票日期)售票信息(员工编号、车次号、车票编号、售票日期)余票信息(车次号、发车时间、剩余票数)第4章数据库物理结构设计4.1存取方法设计数据库系统是多用户共享的系统,对同一个关系要建立多条存储路径才能满足多用户的多种应用要求。对于火车站票务管理系统来说,为了提高某些属性(如:车票编号、车次号、座位号、座位类型等)的查询速度,可以选择聚簇存取的方法,即把这些属性上具有相同值的元组集中放在连续的物理块上。这样在查询时就会大大提高查询速度。因此,该
4、系统中选择聚簇存取方法。4.2存储结构设计火车站票务管理系统是一个大型复杂的计算机网络信息系统,采用基于浏览器/服务器(B/S),客户端/服务器(C/S)混合的应用体系结构来建设教务管理系统。数据库管理系统采用Microsoft 公司推出的SQL Server 2000 或以上版本,并用SQL进行数据库的建立和数据库中数据的维护和查询。4.3物理设计实现该设计的环境为Windows XP Professional + MS SQL Server 2005 或以上版本。一:建立火车站车票管理数据库create database 火车站车票管理数据库-1、创建管理员表:create table 管
5、理员( 管理员编号char(6) not null primary key, 姓名char(8) , 级别char(10)-2、创建乘客表:create table 乘客表 身份证号char(18) not null primary key, 车票编号char(5), )-3、建立业务员表:create table 业务员 员工编号char(6) not null primary key, 性别bit, 年龄int,-4、创建员工奖励表create table 员工奖励表员工编号char(6) not null references 业务员(员工编号),工作站点char(20),奖励等级cha
6、r(10),primary key (员工编号)-5、建立车次表:create table 车次表 车次号char(5) not null primary key, 座位数int, 发车时间char(5) null , 车种 char (4) -6、建立车站表:Create table 车站表车次号char(5) not null references 车次表(车次号),始发站char(20) not null,途径车站char(20) not null,途径车站char(20) null,终点站char(20) not null,primary key (车次号)-7、建立车票表:CREAT
7、E TABLE 车票表 车票编号char(5) not null primary key ,发车时间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 车票表(车票编号),售票日期datetime ,primary key (员工编号,车票编号)-9、建立退票表:create table 退票表 ( 车票编号char
8、(5) not null primary key,退票时间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 unique index 车次表on 车次表(车次号 asc)业务员(员工编号)cre
9、ate unique index 业务员on 业务员(员工编号 asc)车站表(车站号)create unique index 车站表on 车站表(车站号 asc)售票表(车票号)create unique index 售票表on 售票表(车票号 asc)车票表(车票编号,车次号)create unique index 车票表on 车票表(车票编号 asc,车次号 asc)退票表create unique index 退票表on 退票表 (车票号 asc)余票表create unique index 余票表on 余票表(车次号 asc)5.2参照完整性设计5.3Check约束1、业务员表中将性
10、别进行check约束:alter table 业务员add constraint sex check(性别in(1,0)2、车票表中将座位编号进行check约束:alter table 车票表add constraint zum check (座位编号=12000 and 座位编号=2 print退票成功 else不能退票insert into 退票表 values(20116S2132013-11-19 12:) 第6章 数据库视图设计-1、创建业务员表视图create view 业务员表视图with encryptionselect 业务员.员工编号,姓名,工作站点,奖励等级 from 业
11、务员,员工奖励表where 业务员.员工编号=员工奖励表.员工编号with check option-2、创建车次管理视图create view 车次管理视图select 车次表.车次号,座位数,发车时间 ,车种,始发站,终点站from 车次表,车站表where 车次表.车次号=车站表.车次号-、创建车票表视图create view 车票表视图select 车票编号,车次号,发车时间,座位编号,价格,座位种类from 车票表-4、创建车票销售视图create view 创建车票销售视图select 车次管理视图.车次号, 车次管理视图.发车时间 ,车种,始发站,终点站,价格,座位种类,剩余票数
12、from 车次管理视图, 车票表,余票表where 余票表.车次号=车票表.车次号and 车次管理视图.车次号=余票表.车次号-5、创建车票销售视图create view 车票销售视图select 员工编号,售票表.车票编号,价格,售票日期from 车票表,售票表where 售票表.车票编号=车票表.车票编号6、创建售票表视图create view 售票表视图select 员工编号,车票编号,车次号,售票日期from 售票表7、创建退票表视图create view 退票表视图select 车票编号,车次号,退票时间from 退票表-8、创建余票表视图create view 余票表视图selec
13、t 车次号,剩余票数,发车时间from 余票表-9、创建余票情况视图1create view 余票情况视图1select 余票表.车次号,发车时间from 余票表,售票表where 余票表.车次号=售票表.车次号-10、创建余票情况视图2create view 余票情况视图2select 售票表.车次号,发车时间第7章 数据库存储过程设计-1、指定始发站和终点站查询车次号、车种、价格、座位种类、剩余票数等信息create procedure btend 始发站char(20),终点站char(20)set nocount onselect * from 车票销售视图where 始发站=始发站a
14、nd 终点站=终点站-执行存储过程exec btend 郑州北京-2、指定车次查询始发站、终点站、车种、价格、座位种类、剩余票数等信息create procedure 按车次查询车次号char(5)where 车次号=车次号Endexec 按车次查询 T146-3、指定车次指定发车时间的车票销售情况create procedure p_selld t_num_in char(5),d_time_in datetime,sum_ticket char(6) outputselect 车次号,count(*) as sum_ticketfrom 余票情况视图where 余票情况视图.车次号=t_n
15、um_in and 发车时间=d_time_ingroup by 车次号exec p_selld G574, 2013/11/19 15:53:count(*)-4、指定日期各业务员车票的销售收入create procedure rp_selled y_num_in char(6) output,d_time_in datetime,money char(6) outputselect 员工编号,sum(价格) as moneywhere 员工编号=y_num_in and 售票日期=d_time_ingroup by 员工编号exec rp_selled 2013/2/10 0:sum(价格
16、)-5、指定员工编号查询售出票数create procedure 编号查询员工编号char(6) output,售出票数char(6) outputselect 员工编号,count(车票编号) as 售出票数from 售票表where 员工编号=员工编号exec 编号查询count(车票编号)-6、改变指定员工的工作站点create procedure 工作站点变更员工编号char(6),工作站点char(20) update 员工奖励表set 工作站点=工作站点exec 工作站点变更 -7、根据身份证号码查询乘客的车票信息create procedure s_tri1 id char(18
17、)select 身份证号,姓名,乘客表.车票编号,车次管理视图.车次号,车种,始发站,终点站,车票表.发车时间,座位编号,价格,座位种类from 乘客表,车次管理视图,车票表where 车票表.车次号=车次管理视图.车次号and 车票表.车票编号=乘客表.车票编号and 身份证号=idexec s_tri1 411082199210020018第8章 权限设计-1、创建一级管理员的登录名及用户,并给一级管理员授权create login 一级管理员with password=123456,default_database=火车站票务管理数据库create role 一级管理员authoriza
18、tion 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 二级管理员create role 二级管理员create user 二级管理员for login 二级管理员grant insert ,upd
19、ate,delete on 退票表to 二级管理员grant insert ,update,delete on 车站表to 二级管理员-3、创建数据库角色业务员并给业务员授权create role 业务员grant select on 车票表to 业务员grant select on 车次表to 业务员grant insert ,update,delete on 售票表to 业务员grant insert ,update,delete on 退票表to 业务员-4、创建数据库角色乘客并给乘客授权create role 乘客grant select on 车票表to 乘客grant select
20、 on 车次表to 乘客grant select on 车站表to 乘客 总结通过这么多天的数据库课程设计的学习,我受益匪浅,从中学到了许多新知识,这些知识是在课堂中不能学到或者说很难学到的。并且对sql server这一门课程有了更深一步的理解。在做课程设计中,我们可以把课堂上所学的理论知识和实践联系起来,在所要开发的系统中渐渐学会了融会贯通。同样通过对SQL的应用,也使我们熟练和巩固了对SQL的理解。这样我们对开发系统的整个过程也有了一个系统的了解。这次课程设计,我选择的课题是火车站票务管理系统,在火车站票务管理管理系统的开发中采用了完整的数据库设计的全过程,从需求分析到概念结构设计,到逻辑结构设计,再到物理结构
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1