线路模块:用来管理汽车线路号、出发地、目的地、出发时间、所需时间。
汽车模块:用来管理汽车汽车编号、汽车的种类及相应的票价、最大载客量、剩余座位数。
车票模块:用来管理汽车车票编号、售票情况、查询、打印。
乘客模式:用来管理汽车乘客出发地 、出发地、目的地。
图2 设计思路 3、数据库设计
(1)概念设计
经分析,本系统各实体及其属性的E-R 图如下:
图3 车票信息表
线路
汽车
车票 输入 线路信息
各种查询
输入 输入
管理员
各种报表
票价信汽车信息 输入
线路信输入
汽车信
图4 线路信息表
图 5 汽车基本信息表
图 6 乘客信息表
各实体间关系的e-r 图如下:
汽车 汽车种类
汽车编号 最大载客量
乘客
出发时间
目的地 出发地
图8 创建数据库
(2)表
① CREATE TABLE 汽车基本信息表
( 汽车编号 CHAR(10) PRIMARY KEY,汽车种类 CHAR(10),
最大载客量 INT,
线路号 CHAR(10))
图9 创建汽车基本信息表
② CREATE TABLE 车票信息表
( 车票编号 CHAR(10) PRIMARY KEY,售票情况 CHAR(10),
票价 INT,
线路号 CHAR(10))
图10 创建车票信息表
③ CREATE TABLE线路信息表
(线路号 CHAR(10) PRIMARY KEY,出发地 CHAR(10),
目的地 CHAR(10),
出发时间 CHAR(10),
所需时间 INT)
图11 创建线路信息表
④ CREATE TABLE 乘客信息表
( 汽车编号 CHAR(10) PRIMARY KEY,线路号 CHAR(10),
出发地 CHAR(10),
目的地 CHAR(10),
出发时间 CHAR(10))
图12 创建乘客信息表(3)索引
①CREATE UNIQUE INDEX im_in
ON 汽车基本信息表(汽车编号)
图13 为汽车基本信息表创建索引
② CREATE UNIQUE INDEX ik_il
ON 线路信息表(线路号)
图14 为线路信息表创建索引
③ CREATE UNIQUE INDEX id_ix
ON 车票信息表(车票编号)
图15 为车票信息表创建索引
④ CREATE UNIQUE INDEX ih_ig
ON 乘客信息表(汽车编号)
图16 为乘客信息表创建索引
(4)视图
①CREATE VIEW view_1
AS
select 汽车编号,汽车种类,最大载客量,线路号
from 汽车基本信息表
图17 为汽车基本信息表创建视图
② CREATE VIEW view_2
AS
select 线路号,出发地,目的地,出发时间,所需时间
from 线路信息表
图18 为线路信息表创建视图
③CREATE VIEW view_3
AS
select 车票编号,售票情况,票价,线路号
from 车票信息表
图19 为车票信息表创建视图
④ CREATE VIEW view_4
AS
select 出发时间,出发地,目的地,汽车编号,线路号 from 乘客信息表
图20 为乘客信息表创建视图6、录入数据
INSERT
INTO 车票信息表
VALUES('20110001','拥挤','85','101')
INSERT
INTO 车票信息表
VALUES ('20110002','良好','90','102')
INSERT
INTO 车票信息表
VALUES ('20110003','稀疏','110','103')
INSERT
INTO 车票信息表
VALUES ('20110004','拥挤','109','104')
INSERT
INTO 车票信息表
VALUES ('07:00','南昌市','景德镇','6','106')
INSERT
INTO 乘客信息表
VALUES ('10:23','景德镇','鄱阳县','2','102')
INSERT
INTO 乘客信息表
VALUES('14:30','抚州市','南昌市','5','105') INSERT
INTO 乘客信息表
VALUES('15:28','鄱阳县','南昌市','3','103') 7、设计存储过程和触发器
(1)创建存储过程
create proc proc_zg
as
select 车票编号,票价
from 车票信息表
where 线路号='103'
图21 创建存储过程
(2)创建触发器
① create trigger insert_qi
on 车票信息表
after insert
as
select *
from 车票信息表
insert into 车票信息表(车票编号,票价)
Values(‘20110001’,‘80’)
图22 车票信息表创建触发器
② create trigger insert_che
on 汽车基本信息表
after insert
as
select *
from 汽车基本信息表
insert into 汽车基本信息表(汽车编号,线路号) Values(‘1’,‘101’)
图 23 汽车基本信息表建触发器
③ create trigger insert_xian
on 线路信息表
after insert
as
select *
from 线路信息表
insert into 线路信息表(线路号,所需时间) Values(‘106’,‘5’)
图 24 线路信息表建触发器
④ create trigger insert_cheng
on 乘客信息表
after insert
as
select *
from 乘客信息表
insert into 线路信息表(出发时间,线路号)
Values('10:23’,‘102’)
图25 乘客信息表建触发器
8.课程设计总结
通过这次的课程设计实验,我发现自己对数据库课程的兴趣有了很大提高,而且对课本的知识更加的了解并有了一定的掌握,通过实验我懂得了如何创建索引、视图、存储过程以及触发器。
几天的数据库课程设计很快就结束了,在这短暂的几天的的时间里,发现自己学会了很多课外的东西,特别是和同学们一起讨论分析,以及复习了我们所学过的相关数据库知识,进一步了解了数据库的实践应用过程,增强了课外的动手实践能力。
9.参考文献
[1]宋振会.SQL Server 2000中文版基础教程[M].北京:清华大学出版
社.2005.5。