数据库综合实验报告.docx
《数据库综合实验报告.docx》由会员分享,可在线阅读,更多相关《数据库综合实验报告.docx(36页珍藏版)》请在冰豆网上搜索。
数据库综合实验报告
数据库综合实验报告
实验名称:
图书管理系统
实验环境:
WindowsXP、WindowsServer2008
实验说明:
1.本次实验参与共9人,对各工作细节进行了一一分工,做到了分工明确,工作内容明确。
2.为避免实验内容工作量过大,我们删减了图书馆的部分职能,删减了职能中的部分功能,仅留下了图书馆的基本职能及功能。
3.这次实验设计使我们熟悉了系统设计的整体步骤,对系统设计中的需求分析、概念设计、逻辑设计、物理设计、数据库的实施及调试测试六大步骤有了更深刻的了解。
4.这次实验设计加深了我们对数据库系统概论的相关知识和SQLSERVER相关功能的理解,进一步掌握了相关的SQL语句方面的知识,对建立基本表、视图、索引、存储过程等,都比以前更加的熟练。
5.在我们的实验设计中还存在很多不足,还有待我们去修改去完善,在未来的日子里我们会多加努力的进行练习。
报告内容
一、图书馆管理系统需求分析
1.图书管理系统的开发背景:
为了满足开放式图书馆管理的要求,我们小组对SQL语言原理、数据库技术进行了较深入的学习和应用,主要完成对图书管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构及程序。
系统运行结果证明,本文所设计的图书管理系统可以满足借阅者、图书馆工作人员和高级管理员及学校图书管理几方面的需要。
图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
2.具体软件开发适应对象:
A.所建议开发的软件系统的名称:
图书馆管理系统;
B.用户:
学校图书馆工作人员;
3.系统需求分析:
3.1主要功能
(1)能够进行对图书的综合情况和新书入库的输入、现有图书信息的修改以及删除;
(2)能够实现对读者档案的查询、修改以及编辑管理;
(3)能够进行借阅、还书功能;
3.2系统性能要求:
(1)系统安全、可靠;
(2)功能齐全;
(3)操作方便、界面友好;
(4)易于维护和扩充。
3.3针对管理员需实现的基本功能:
3.3.1查询:
(1)图书信息查询:
管理员可以根据图书编号、图书名称,图书作者、出版社等信息来检索查询图书馆的图书,便于管理。
(2)读者信息查询:
根据相应的读者资料进行所需查询。
如:
‘读者编号’、‘读者姓名’、‘读者性别’。
3.3.2读者信息维护:
修改读者信息:
管理员可以录入、修改、删除读者信息。
3.3.3图书信息的维护:
包括新书的入库,以及现有书籍资料的修改和删除,方便读者的查询。
管理员功能流图:
用户功能流图:
3.4系统功能模块划分:
图书管理系统需要实现的功能主要有四大模块,分别为日常工作管理、基本资料维护管理、查询管理和系统管理。
其中日常工作管理和基本资料维护是整个系统的核心。
3.4.1日常工作管理:
包括借书管理、还书管理。
(1)借书管理:
主要功能是记录借阅证编号和图书编号,进行借书过程。
在数据库中插入一条借书记录,该记录包括事务号、管理员编号、读者编号、图书编号、借书日期、是否续借、应还日期、还书日期。
(2)还书管理:
主要功能是输入事务号、读者编号、图书编号,在管理员-书籍表中找到相应的记录,将该记录的相应数据插入到还书记录中,同时将借书记录删除,并保存在借阅历史记录表中。
3.4.2基本资料维护管理:
包括图书资料维护、读者资料维护
(1)图书资料维护:
包括新书的入库,以及现有书籍资料的修改和删除。
(2)读者资料维护:
包括新读者的资料入库,以及现有读者资料的修改和删除
3.4.3查询管理:
包括图书资料查询、读者资料查询。
(1)图书资料查询:
根据相应的图书信息对所有书籍进行所需查询。
此查询包括:
‘图书编号’、‘图书名称’、‘作者’、‘出版社’。
(2)读者资料查询:
根据相应的读者资料进行所需查询。
此查询包括:
‘读者编号’、‘读者姓名’。
3.4.4系统管理:
包括系统的登录、标准数据管理
(1)系统的登录:
管理员的登录。
(2)标准数据管理:
用于常用数据的系统维护。
3.5数据字典:
(1)数据项:
表3.5.1
数据项名
含义说明
数据类型
长度
与其他数据项的逻辑关系
读者编号
读者相关信息
字符型
11
决定了要借阅的图书
读者姓名
读者相关信息
字符型
10
读者性别
读者相关信息
字符型
2
所在系
读者相关信息
字符型
20
图书编号
图书相关信息
字符型
10
联系读者与管理员
图书名称
图书相关信息
字符型
20
作者
图书相关信息
字符型
10
出版社
图书相关信息
字符型
50
管理员编号
管理员相关信息
字符型
10
管理图书借出和归还
管理员姓名
管理员相关信息
字符型
10
管理员性别
管理员相关信息
字符型
2
借书日期
借书相关信息
日期型
还书日期
借书相关信息
日期型
(2)数据结构:
表3.5.2
数据结构名
含义说明
组成
图书信息表
定义了图书的相关信息
图书编号,图书名称,作者,出版社,出版日期,图书数量
读者信息表
定义了读者有关信息
读者编号,姓名,性别,所在系,是否违章,累计借书
管理员信息表
定义了管理员有关信息
管理员编号,姓名,性别,电话,工资
管理员书籍表
定义了管理员与书籍的有关信息
事务号,管理员编号,图书编号,借书日期,应还日期,是否续借,还书日期
管理员读者表
定义了管理员与学生的有关信息
事务号,管理员编号,读者编号,借还状态
(3)数据流:
表3.5.3
数据流名
来源
去向
读者信息
读者
图书管理员的管理处
图书信息
图书
图书管理员的管理处
借阅信息
借阅图书
图书管理员的管理处
(4)数据存储:
表3.5.4
数据存储名
含义说明
组成
读者信息
存储读者的相关信息
读者编号,姓名,性别,所在系,是否违章,累计借书
图书信息
存储图书的相关信息
图书编号,书名,作者,出版社,出版日期,图书数量
借阅信息
存储借阅图书的有关信息
事务号,管理员编号,读者编号,,图书编号,借书日期,是否续借,应还日期,还书日期
(5)处理过程:
表3.5.5
处理过程名
含义说明
输入
输出
借书过程
查看图书是否被借出
图书信息
借阅信息
还书过程
查看借阅图书的信息
读者信息
图书信息
二、图书馆管理系统概念设计
1.数据流图
1.1还书数据流图:
1.2借书数据流图:
1.3新书入库流程图:
1.4信息查询流程图:
2.E—R图
2.1实体:
读者,图书,图书管理员
2.2局部视图:
(1)读者—借阅—图书
图书
读者
借阅
读者姓名
读者编号
所在系
是否违章违章
累计借书
性别
还书日期
是否续借
图书数量
出版时期
出版社
作者
图书名称
图书编号
m
n
事务号
借书日期
应还日期
图2.1借阅关系E-R图
事务规则:
一个读者可以借阅多本图书(1:
n)
一本图书可以被一个读者借阅(1:
n)
(2)管理员—管理—读者
读者
管理员
管理
读者编号
读者姓名
性别
所在系
是否违章
累计借书
借还状态
事务号
管理员编号
管理员姓名
性别
工资
电话
1
n
1
n
图2.2管理员_读者关系E-R图
事务规则:
一个图书管理员可以管理多个读者信息(1:
n)
一个读者信息只能被一个图书管理员管理(1:
1)
(3)管理员—管理—图书
图书
管理员
管理
图书编号
图书名称
作者
出版社
出版时期
图书数量
借还状态
事务号
管理员编号
管理员姓名
性别
工资
电话
m
n
图2.3管理员_书籍关系E-R图
事务规则:
一本图书可以被多个图书管理员管理(1:
n)
一个图书管理员可以管理多本图书(1:
n)
2.3视图集成
“图书管理系统”的全局ER模式如下图所示。
图书
读者
借阅
读者姓名
读者编号
所在系
是否违章违章
累计借书
性别
还书日期
是否续借
图书数量
出版时期
出版社
作者
图书名称
图书编号
m
n
事务号
借书日期
应还日期
管理员
管理
事务号
借还状态
管理员编号
管理员姓名
性别
工资
电话
管理
事务号
借还状态
n
1
m
n
图2-4系统全局ER图
三、图书馆管理系统逻辑设计:
1.将E-R图转为关系模型结构:
读者(读者编号,读者姓名,性别,所在系,是否违章,累计借书)
图书(图书编号,图书名称,作者,出版社,出版日期,图书数量)
管理员(管理员编号,管理员姓名,性别,工资,电话)
借阅(事务号,读者编号,图书编号,借书日期,是否续期,应还日期,还书日期)
管理(事务号,管理员编号,读者编号,图书编号,借还状态)
2.逻辑设计优化
从理论‘E-R模型’到理论‘关系模型’的整理转换,通过E-R模型到关系模型的转化,可以得到如下关系模式:
2.1借阅关系
属性:
事务号,读者编号,图书编号,借书日期,是否续期,应还日期,还书日期
主键:
事务号,读者编号,图书编号
2.2管理员_书籍关系
属性:
事务号,管理员编号,图书编号,借还状态
主键:
事务号,管理员编号,图书编号
2.3管理员_读者关系
属性:
事务号,管理员编号,读者编号,借还状态
主键:
事务号,管理员编号,读者编号
四、图书馆管理系统物理设计
1.图书信息表(Book)
字段
类型
长度
必填字段
允许空值
备注
Bno
char
10
是
否
图书编号(主键)
Bname
char
50
是
否
图书名称
Bwriter
char
10
是
否
作者
Bpublishing
char
50
是
否
出版社
Bdate
char
10
是
否
出版时间
Bnum
char
20
是
否
图书数量
2.读者信息表(Student)
字段
类型
长度
必填字段
允许空值
备注
Sno
char
11
是
否
读者编号(主键)
Sname
char
10
是
否
读者姓名
Ssex
char
2
是
否
读者性别
Sdept
char
20
是
否
所在系
Sviolation
char
2
是
否
是否违章
Snum
char
10
是
否
累计借书
3.管理员信息表(Mananger)
字段
类型
长度
必填字段
允许空值
备注
Mno
char
10
是
否
管理员编号(主码)
Mname
char
10
是
否
管理员姓名
Msex
char
2
是
否
管理员性别
Mphone
char
12
是
否
管理员电话
Mmoney
char
5
是
否
管理员工资(规定都为整数)
4.管理员-书籍表(MB)
字段
类型
长度
必填字段
允许空值
备注
Wno
char
10
是
否
事务编号(主码)
Mno
char
10
是
否
管理员编号(外码)
Bno
char
10
是
否
图书编号(外码)
Borrowdate
date
是
否
借书日期
Bcontinue
char
2
是
否
是否续借
Fixdate
date
是
否
应还日期
Returndate
date
否
是
还书日期
5.管理员-读者表(MS)
字段
类型
长度
必填字段
允许空值
备注
Wno
char
10
是
否
事务编号(主码)
Mno
char
10
是
否
管理员编号(外码)
Sno
char
11
是
否
读者编号(外码)
borrowreturn
char
10
是
否
借还状态
6.图书信息表(Book表)
图书
编号
书名
作者
出版社
出版
日期
图书
数量
1
数据结构
唐发根
北京航空航天出版社
2004
10
2
Java语言程序设计
耿祥义
清华大学出版社
2004
10
3
信息组织
戴维民
高等教育出版社
2009
10
4
信息存储与检索
李四福
机械工业
2004
10
5
数据库原理
李明
西南交通大学出版社
2011
10
6
信息管理学
司有和
机械工业出版社
2009
10
7
财务管理
吴英
中国电力出版社
2009
10
8
运筹学
编写组
清华大学出版社
2009
10
9
管理信息系统
(美)肯尼斯
机械工业
2007
10
10
工程经济
李南
科学出版社
2009
10
11
C语言
谭浩强
清华大学出版社
2005
10
12
市场营销
吴勇
高等教育出版社
2009
10
13
网络技术
章春梅
电子工业出版社
2011
10
7.读者信息表(Student表)
读者编号
读者姓名
读者
性别
所在系
违章
情况
累计
借书
齐文浩
男
经济管理学院
否
0
郭方圆
男
经济管理学院
否
1
郭鹤巍
女
经济管理学院
否
2
魏旭阳
男
经济管理学院
否
0
王博
女
经济管理学院
否
1
马洪财
男
经济管理学院
否
1
陈美花
女
经济管理学院
否
3
刘芮瑞
男
经济管理学院
否
0
石亚楠
男
经济管理学院
否
1
李慧贤
女
经济管理学院
否
0
杨逴
男
经济管理学院
否
1
朱雪洁
女
经济管理学院
否
0
岳红东
男
经济管理学院
否
0
徐学坤
男
经济管理学院
否
0
张文泼
男
经济管理学院
否
0
熊黎
男
经济管理学院
否
0
柯丹丽
女
经济管理学院
否
0
张才亮
男
经济管理学院
否
0
李亚伟
男
经济管理学院
否
0
杨秀琴
女
经济管理学院
否
0
刘伦
男
经济管理学院
否
2
刘欢
男
经济管理学院
否
0
徐斌
男
经济管理学院
否
0
王磊
男
经济管理学院
否
0
刘洋
男
经济管理学院
否
0
张淇越
男
经济管理学院
否
1
吕新文
男
经济管理学院
否
1
管理员编号
姓名
性别
电话
工资
01
李一
女
800
02
王二
男
800
03
张三
男
850
04
刘四
女
850
05
钱五
男
800
06
郑六
男
1000
07
阮七
男
1000
8.管理员信息表(Manager表)
9.管理员书籍表(MB表)
事务号
管理员编号
图书编号
借书日期
是否续借
应还日期
还书日期
01
1
2011-10-20
是
2011-12-20
2011-12-01
02
1
2011-10-25
否
2011-11-25
2011-11-05
03
2
2011-10-30
是
2011-12-30
2011-12-12
04
5
2011-11-02
否
2011-12-02
2011-11-15
05
7
2011-11-06
是
2012-01-06
2011-11-20
06
8
2011-11-09
是
2012-01-09
2011-11-20
07
9
2011-11-13
是
2012-01-13
2011-11-28
01
10
2011-11-13
否
2011-12-13
2011-11-28
02
5
2011-11-14
否
2011-12-14
2011-11-28
03
6
2011-11-16
否
2011-12-16
2011-11-29
04
8
2011-12-01
是
2012-02-01
05
8
2011-12-01
是
2012-02-01
06
5
2011-12-05
是
2012-02-05
07
5
2011-12-07
是
2012-02-07
10.管理员读者表(MS表)
工作号
管理员编号
读者学号
借还状态
01
已还
02
已还
03
已还
04
已还
05
已还
06
已还
07
已还
01
已还
02
已还
03
已还
04
在借
05
在借
06
在借
07
在借
借书:
2012年01月03日读者编号为的读者借了一本图书编号为01的书,由01号管理员负责,产生了一个新的事务号为
数据库也发生了变化
(1)UpdateStudentsetSnum=Snum+1whereSno=''
(2)UpdateBooksetBnum=Bnum-1whereBno=1
(3)InsertintoMBvalues('01','','2012.01.03','2012-02-03','否','','1')
(4)InsertintoMSvalues('01','','','在借')
还书:
2012年01月10日读者编号为的读者还了一本图书编号为01的书,由01号管理员负责
(1)UpdateStudentsetSnum=Sum-1whereSno=''
(2)UpdateBooksetBnum=Bnum+1whereBno=1
(3)UpdateMBsetReturndate=2012-01-10whereWno=''
(4)UpdateMSsetBorrowReturn='已还'
建立数据库、建立表、插入表数据:
CREATEDATABASELibrary;
CREATETABLEBook(
Bnochar(10)NOTNULL,
Bnamenvarchar(50)NOTNULL,
Bwriterchar(10)NOTNULL,
Bpublishingnvarchar(50)NOTNULL,
Bdatechar(10)NOTNULL,
Bnumnvarchar(50)NOTNULL,
PRIMARYKEY(Bno)
);
CREATETABLEStudent(
Snonvarchar(50)NOTNULL,
Snamechar(10)NOTNULL,
Ssexchar(10)NOTNULL,
Sdeptnvarchar(50)NOTNULL,
Sviolationchar(10)NOTNULL,
Snumchar(10)NOTNULL,
PRIMARYKEY(Sno)
);
CREATETABLEManager(
Mnochar(10)NOTNULL,
Mnamechar(10)NOTNULL,
Msexchar(10)NOTNULL,
Mphonenvarchar(50)NOTNULL,
Mmoneychar(10)NOTNULL,
PRIMARYKEY(Mno)
);
CREATETABLEMB(
Wnonvarchar(10)NOTNULL,
Mnochar(10)NOTNULL,
Bnochar(10)NOTNULL,
BorrowdatedateNOTNULL,
Bcontinuechar(10)NOTNULL,
FixdatedateNOTNULL,
ReturndatedateNULL,
PRIMARYKEY(Wno),
FOREIGNKEY(Mno)REFERENCESManager(Mno),
FOREIGNKEY(Bno)REFERENCESBook(Bno)
);
CREATETABLEMS(
Wnochar(10)NOTNULL,
Mnochar(10)NOTNULL,
Snonvarchar(50)NOTNULL,
Borrowreturnchar(10)NOTNULL,
PRIMARYKEY(Wno),
FOREIGNKEY(Mno)REFERENCESManager(Mno),
FOREIGNKEY(Sno)REFERENCESStudent(Sno)
);
insertintoBook(Bno,Bname,Bwriter,Bpublishing,Bdate,Bnum)values('1','数据结构','唐发根','北京航空航天出版社','2004','10');
insertintoBook(Bno,Bname,Bwriter,Bpublishing,Bdate,Bnum)values('2','Java语言程序设计','耿祥义','清华大学出版社','2004','10');
insertintoBook(Bno,Bname,Bwriter,Bpublishing,Bdate,Bnum)values('3','信息组织','戴维民','高等教育出版社','2009','10');
insertintoBook(Bno,Bname,Bwriter,Bpublishing,Bdate,Bnum)values('4','信息存储与检索','李四福','机械工业','2004','10');
inser