公交信息查询系统.docx
《公交信息查询系统.docx》由会员分享,可在线阅读,更多相关《公交信息查询系统.docx(37页珍藏版)》请在冰豆网上搜索。
公交信息查询系统
1引言1
1.1编写目的1
1.2背景1
1.3任务分配1
1.4定义1
1.5参考资料1
2结构设计2
2.1概念设计2
表格清单6
参考清单6
数据库清单7
Listoftables7
表格司机7
表格售票员8
表格站点9
表格管理员10
表格路线11
表格车次11
表格车辆12
Listofreferences13
参考Ref_6714
参考Ref_7014
参考Ref_7315
参考Ref_14315
参考Ref_14616
Listofdatabases16
数据库Model_216
2.3物理结构设计16
3运用设计17
3.1数据字典设计17
3.2安全保密设计17
4功能实现17
4.1基础数据管理17
4.1.1触发器17
4.1.2存储过程19
1引言
1.1编写目的
南昌市公交信息查询系统数据库设计说明书是专门为程序开发人、数据库设计人员和软件测试人员编写的,其目的是方便数据库设计人员设计数据库、程序设计人员编制应用程序、测试人员测试程序并判断数据的正确性。
该说明书的读者为系统分析人员、程序员、测试人员。
1.2背景
说明:
A.南昌市公交信息查询系统
B任务提出者:
112041
开发者:
112041公交信息查询系统开发小组成员
用户:
所有市民。
1.3任务分配
曾献安:
数据流图、E-R图、文档、触发器。
卢成帆:
查询存储过程、数据流图。
刘延路:
插入存储过程、数据流图。
胡广龙:
删除存储过程、数据流图。
1.4定义
在所有的车辆信息表中都必须有一名司机,售票员可以为空,路线必须与车次相对应,一个车次会有多辆车服务。
1.5参考资料
●国家软件工程开发标准
●天津市公交信息查询系统软件需求分析报告
●天津市公交信息查询系统鉴定材料
●天津市公交信息查询系统
●南昌市公交信息查询系统软件需求说明书
●南昌市公交信息查询系统总体设计说明书
2结构设计
2.1概念设计
南昌市公交信息查询系统数据库涉及的实体有:
车辆、司机、售票员、车次、路线、站点等,它们的关系用下面的E-R图来表示。
数据流图:
0层数据流图
1层数据流图
查询操作数据流图
信息处理数据流图
2.2逻辑结构设计
表格清单
名称
代码
司机
DRIVER
售票员
SELLER
站点
SITE
管理员
MANAGER
路线
ROULT
车次
BUSNUMBER
车辆
BUS
参考清单
名称
代码
父表格
子表格
外键列
父角色
子角色
Ref_67
REF_67
售票员
车辆
售票员编号
Ref_70
REF_70
司机
车辆
司机编号
Ref_73
REF_73
车次
车辆
车次号
Ref_143
REF_143
站点
路线
站点编号
Ref_146
REF_146
车次
路线
车次号
数据库清单
名称
代码
Model_2
MODEL_2
Listoftables
名称
代码
司机
DRIVER
售票员
SELLER
站点
SITE
管理员
MANAGER
路线
ROULT
车次
BUSNUMBER
车辆
BUS
表格司机
表格司机的卡片
名称
司机
代码
DRIVER
表格司机的服务器检验表达式
%RULES%
表格司机的约束名称
CKT_DRIVER
表格司机的进入参考清单
名称
代码
子表格
外键列
父角色
子角色
Ref_70
REF_70
车辆
司机编号
表格司机的列清单
名称
代码
司机编号
DRIVER_ID
姓名
DRIVER_NAME
性别
DRIVER_SEX
工种
TITLE
出生日期
BIRTHDAY
地址
ADDRESS
表格司机的键清单
名称
代码
主要的
Key_1
Key_1
TRUE
表格售票员
表格售票员的卡片
名称
售票员
代码
SELLER
表格售票员的服务器检验表达式
%RULES%
表格售票员的约束名称
CKT_SELLER
表格售票员的进入参考清单
名称
代码
子表格
外键列
父角色
子角色
Ref_67
REF_67
车辆
售票员编号
表格售票员的列清单
名称
代码
售票员编号
SELLER_ID
姓名
SELLER_NAME
性别
SELLER_SEX
工种
TITLE
出生日期
BIRTHDAY
地址
ADDRESS
表格售票员的键清单
名称
代码
主要的
Key_1
Key_1
TRUE
表格站点
表格站点的卡片
名称
站点
代码
SITE
表格站点的服务器检验表达式
%RULES%
表格站点的约束名称
CKT_SITE
表格站点的进入参考清单
名称
代码
子表格
外键列
父角色
子角色
Ref_143
REF_143
路线
站点编号
表格站点的列清单
名称
代码
站点编号
SITE_ID
站点名
SITE_NAME
站点地址
SITE_ADDRESS
站点描述
EXPRESS
表格站点的键清单
名称
代码
主要的
Key_1
Key_1
TRUE
表格管理员
表格管理员的卡片
名称
管理员
代码
MANAGER
表格管理员的服务器检验表达式
%RULES%
表格管理员的约束名称
CKT_MANAGER
表格管理员的列清单
名称
代码
管理员编号
MANAGE_ID
姓名
MANAGE_NAME
性别
MANAGER_SEX
出生日期
BIRTHDAY
地址
ADDRESS
密码
PASSWORD
表格管理员的键清单
名称
代码
主要的
Key_1
Key_1
TRUE
表格路线
表格路线的卡片
名称
路线
代码
ROULT
表格路线的服务器检验表达式
%RULES%
表格路线的约束名称
CKT_ROULT
表格路线的输出参考清单
名称
代码
父表格
外键列
父角色
子角色
Ref_143
REF_143
站点
站点编号
Ref_146
REF_146
车次
车次号
表格路线的列清单
名称
代码
车次号
BUSNUMBER_ID
站点编号
SITE_ID
始发站
BEGINED
终点站
ENDED
表格路线的键清单
名称
代码
主要的
Key_1
Key_1
TRUE
表格车次
表格车次的卡片
名称
车次
代码
BUSNUMBER
表格车次的服务器检验表达式
%RULES%
表格车次的约束名称
CKT_BUSNUMBER
表格车次的进入参考清单
名称
代码
子表格
外键列
父角色
子角色
Ref_73
REF_73
车辆
车次号
Ref_146
REF_146
路线
车次号
表格车次的列清单
名称
代码
车次号
BUSNUMBER_ID
上班时间
WORK
下班时间
UNWORK
表格车次的键清单
名称
代码
主要的
Key_1
Key_1
TRUE
表格车辆
表格车辆的卡片
名称
车辆
代码
BUS
表格车辆的服务器检验表达式
%RULES%
表格车辆的约束名称
CKT_BUS
表格车辆的输出参考清单
名称
代码
父表格
外键列
父角色
子角色
Ref_67
REF_67
售票员
售票员编号
Ref_70
REF_70
司机
司机编号
Ref_73
REF_73
车次
车次号
表格车辆的列清单
名称
代码
车辆编号
BUS_ID
车牌号
BUS_CARD
司机编号
DRIVER_ID
售票员编号
SELLER_ID
车次号
BUSNUMBER_ID
座位数
SEATS
表格车辆的键清单
名称
代码
主要的
Key_1
Key_1
TRUE
Listofreferences
名称
代码
父表格
子表格
外键列
父角色
子角色
Ref_67
REF_67
售票员
车辆
售票员编号
Ref_70
REF_70
司机
车辆
司机编号
Ref_73
REF_73
车次
车辆
车次号
Ref_143
REF_143
站点
路线
站点编号
Ref_146
REF_146
车次
路线
车次号
参考Ref_67
参考Ref_67的卡片
名称
Ref_67
代码
REF_67
子表格
车辆
父表格
售票员
外键列
售票员编号
父角色
子角色
参考Ref_67的连接清单
父表格列
子表格列
售票员编号
售票员编号
参考Ref_70
参考Ref_70的卡片
名称
Ref_70
代码
REF_70
子表格
车辆
父表格
司机
外键列
司机编号
父角色
子角色
参考Ref_70的连接清单
父表格列
子表格列
司机编号
司机编号
参考Ref_73
参考Ref_73的卡片
名称
Ref_73
代码
REF_73
子表格
车辆
父表格
车次
外键列
车次号
父角色
子角色
参考Ref_73的连接清单
父表格列
子表格列
车次号
车次号
参考Ref_143
参考Ref_143的卡片
名称
Ref_143
代码
REF_143
子表格
路线
父表格
站点
外键列
站点编号
父角色
子角色
参考Ref_143的连接清单
父表格列
子表格列
站点编号
站点编号
参考Ref_146
参考Ref_146的卡片
名称
Ref_146
代码
REF_146
子表格
路线
父表格
车次
外键列
车次号
父角色
子角色
参考Ref_146的连接清单
父表格列
子表格列
车次号
车次号
Listofdatabases
名称
代码
Model_2
MODEL_2
数据库Model_2
数据库Model_2的卡片
名称
Model_2
代码
MODEL_2
注释
2.3物理结构设计
a.为了提高速度,公设计一个数据库BUS.DB
b.历史数据的数据表同当前数表结构,只是在每张表名前面加H
c.访问数据库尽量用索引。
3运用设计
3.1数据字典设计
对数据库设计中涉及到的各种项目,如数据项、记录、系、文卷、模式、子模式一般要建立起数据字典,以说明它们的标识符、同义及有关信息,在本节中要说明对此数据字。
共设计的基本考虑。
3.2安全保密设计
说明在数据库的设计中,将如何通过区分不同的访问者、不同的访问类型和不同的数对象,进行分别对侍而获得的数库安全保密的设计考虑。
4功能实现
4.1基础数据管理
4.1.1触发器
1、删除司机信息时
createtriggerdriver_delete
ondriverfordeleteas
begin
declare@driver_idchar(5)
select@driver_id=(selectdriver_idfromdeleted)
updatebus
setdriver_id=null
wheredriver_id=@driver_id
end;
2、删除售票员信息时
createtriggerseller_delete
onsellerfordeleteas
begin
declare@seller_idchar(5)
select@seller_id=(selectseller_idfromdeleted)
updatebus
setseller_id=null
whereseller_id=@seller_id
end;
3、删除车次信息时
createtriggerbusnumber_delete
onbusnumberfordeleteas
begin
declare@busnumber_idchar(5)
select@busnumber_id=(selectbusnumber_idfromdeleted)
updatebus
setbusnumber_id=null
wherebusnumber_id=@busnumber_id
end;
4.1.2存储过程
1、车辆信息查询
createprocedurecx1
@idchar(5)
as
select*
frombus
wherebus_id=@id
2、车次信息查询
createprocedurecx2
@idchar(5)
as
select*
frombusnumber
wherebusnumber_id=@id
3、司机信息查询
createprocedurecx3
@idchar(5)
as
select*
fromdriver
wheredriver_id=@id
4、管理员信息查询
createprocedurecx4
@idchar(5)
as
select*
frommanager
wheremanage_id=@id
5、站点信息查询
createprocedurecx5
@idchar(5)
as
select*
fromsite
wheresite_id=@id
6、售票员信息查询
createprocedurecx6
@idchar(5)
as
select*
fromseller
whereseller_id=@id
7、路线查询
createprocedurecx7
@idchar(5)
as
selectpass_by
fromroult
wherebusnumber_id=@id
8、站站查询
createprocedurecx8
(@name1char(20),
@name2char(20)
)
as
selectpass_by
fromroult
wherepass_bylike@name1andpass_bylike@name2
9、站点查询
createprocedurecx9
@namechar(20)
as
selectpass_by
fromroult
wherepass_bylike@name;
10、添加一条司机信息
createprocedureinsert_DRIVER
(
@DRIVER_IDchar(5),
@DRIVER_NAMEchar(10),
@DRIVER_SEXchar
(2),
@TITLEchar(10),
@BIRTHDAYdatetime,
@ADDRESSchar(30)
)
as
insert
intodriver(DRIVER_ID,DRIVER_NAME,DRIVER_SEX,TITLE,BIRTHDAY,ADDRESS)
values(@DRIVER_ID,@DRIVER_NAME,@DRIVER_SEX,@TITLE,@BIRTHDAY,@ADDRESS)
11、添加一条车辆信息
createprocedureinsert_BUS
(
@BUS_IDchar(5),
@BUS_CARDchar(10),
@DRIVER_IDchar(5),
@SELLER_IDchar(5),
@BUSNUMBER_IDchar(5),
@SEATSint
)
as
insertintobus(BUS_ID,BUS_CARD,DRIVER_ID,SELLER_ID,BUSNUMBER_ID,SEATS)
values(@BUS_ID,@BUS_CARD,@DRIVER_ID,@SELLER_ID,@BUSNUMBER_ID,@SEATS)
12、添加一条车次信息
createprocedureinsert_BUSNUMBER
(
@BUSNUMBER_IDchar(5),
@WORKdatetime,
@UNWORKdatetime
)
as
insertintobusnumber(BUSNUMBER_ID,WORK,UNWORK)
values(@BUSNUMBER_ID,@WORK,@UNWORK)
13、添加一条管理员信息
createprocedureinsert_MANAGER
(
@MANAGE_IDchar(5),
@MANAGE_NAMEchar(10),
@MANAGER_SEXchar
(2),
@BIRTHDAYdatetime,
@ADDRESSchar(30),
@PASSWORDchar(6)
)
as
insert
intomanager(MANAGE_ID,MANAGE_NAME,MANAGER_SEX,BIRTHDAY,ADDRESS,PASSWORD)
values(@MANAGE_ID,@MANAGE_NAME,@MANAGER_SEX,@BIRTHDAY,@ADDRESS,@PASSWORD)
14、添加一条路线信息
createprocedureinsert_ROULT
(@BUSNUMBER_IDchar(5),
@BEGINEDchar(5),
@ENDEDchar(5),
@PASS_BYchar(200)
)
as
insertintoroult(BUSNUMBER_ID,BEGINED,ENDED,PASS_BY)
values(@BUSNUMBER_ID,@BEGINED,@ENDED,@PASS_BY)
15、添加一条售票员信息
createprocedureinsert_SELLER
(
@SELLER_IDchar(5),
@SELLER_NAMEchar(10),
@SELLER_SEXchar
(2),
@TITLEchar(10),
@BIRTHDAYdatetime,
@ADDRESSchar(30)
)
as
insertintoseller(SELLER_ID,SELLER_NAME,SELLER_SEX,TITLE,BIRTHDAY,ADDRESS)
values(@SELLER_ID,@SELLER_NAME,@SELLER_SEX,@TITLE,@BIRTHDAY,@ADDRESS)
16、添加一条站点信息
createprocedureinsert_SITE
(
@SITE_IDchar(5),
@SITE_NAMEchar(20),
@SITE_ADDRESSchar(30),
@EXPRESSchar(100)
)
as
insertintosite(SITE_ID,SITE_NAME,SITE_ADDRESS,EXPRESS)
values(@SITE_ID,@SITE_NAME,@SITE_ADDRESS,@EXPRESS)
17、删除一条车辆信息
createproceduredel_bus
@bus_idchar(5)
asdelete
frombus
wherebus_id=@bus_id
18、删除一条车次信息
createproceduredel_busnumber
@busnumber_idchar(5)
asdelete
frombusnumber
wherebusnumber_id=@busnumber_id
19、删除一条司机信息
createproceduredel_driver
@driver_idchar(5)
asdelete
fromdriver
wheredriver_id=@driver_id
20、删除一条管理员信息
createproceduredel_manger
@manger_idchar(5)
asdelete
frommanger
wheremanger_id=@manger_id
21、删除一条路线信息
createproceduredel_roult
@busnumber_idchar(5)
asdelete
fromroult
wherebusnumber_id=@busnumber_id
22、删除一条售票员信息
createproceduredel_seller
@seller_idchar(5)
asdelete
fromseller
whereseller_id=@seller_id
23、删除一条站点信息
createproceduredel_site
@site_idchar(5)
asdelete
fromsite
wheresite_id=@site_id