图书管理系统--数据库课程设计报告
数据库原理与应用
课程设计报告
之
图书管理系统
计算机与信息工程学院
1
图书管理系统--数据库课程设计报告
目录
设计目的 (3)
需求分析 (3)
数据库概念结构设计 (5)
数据库逻辑结构设计 (7)
数据流图及程序结构框图 (11)
程序原代码及其实现 (14)
视图及存储过程的代码与实现 (26)
总结 (31)
2
图书管理系统--数据库课程设计报告
设计目的
图书馆作为大学中同学们主要利用的场所,必定会是最繁忙的地方。当图书档案由人工看管,登记,修改,增删,查询时,效率低而且容易出错,数据
不安全,并且时间很久之后数据量增加会导致数据检索困难等诸多问题。当图
书馆发展后,过多的数据使图书馆管理问题凸显。
本次课程设计以开发北京工商大学高校图书馆管理系统为主题,充分利用现代
科技来提高图书管理的效率,将一些可以用计算机来管理的日常事务都进行计
算机化,使得图书馆管理人员工作更加方便,工作效率也更高。我们将做好的
数据库系统用于图书馆信息管理、图书借阅、图书登记、用户登记、新增和删
减图书等服务项目,利用这些技术可以提高图书馆工作效率,使图书馆给同学
们提供更好的服务是系统开发的主要目的。图书管理系统是一种基于数据库数
据管理模式,在对图书、读者的管理其实是对图书、读者数据的管理,我们将
图书和读者的数据录入数据库并且储存这些信息,然后利用已知信息的更改来
对图书和读者进行管理
需求分析
基本需求
图书馆管理系统的管理层次可划分为了五个部分:图书信息维护,读者信息管理,图书借阅管理,信息查询,管理员信息管理。能够实现以下功能:
○1进行新书入库的信息录入及现有图书信息增加、修改以及删除;
②能够实现对读者基本信息的查询和编辑管理;
③能够进行读者借阅图书的信息管理功能;
④能够进行借阅信息的查询功能;
3
图书管理系统--数据库课程设计报告
系统功能
系统的功能分析:
图书管理涉及图书信息、读者信息、图书借阅等多种数据管理。从管理的角度可将图书管理系统分为三类:图书信息管理、系统用户管理、读者数据管理。
1、图书信息管理包括新购图书、借还、查询信息等操作;
2、系统用户管理包括系统用户类别和用户数据管理;
3、读者数据管理包括读者类别管理和个人数据的录入、查询、修改和删除。
具体功能如下:
1.对所有用户开放的图书查询
2.查询及编辑借阅者个人部分信息
3.借阅者查看个人借阅情况信息
4.根据借阅情况对数据库进行操作并生成报表
5.根据还书情况对数据库进行操作并生成报表
6.查询及统计各种信息
7.维护图书信息
8.维护工作人员和管理员信息
系统功能模块划分:
图书管理系统需要实现的功能主要有四大模块:分别为日常工作管理、基本资料维护管理、查询管理、和系统管理。其中日常工作管理和基本资料维护是整个系统的核心。
1.日常工作管理:包括借书管理、还书管理、缴纳罚金
(1)借阅管理:主要功能是记录读者号和图书编号,进行借书过程。在数据库中插入一条借书记录,该记录包括读者ID、图书编号、图书ISBN、借阅日期、应还日期等。
(2)还书管理:主要功能是输入借阅读者号、图书编号,在借阅登记表中找到相应的记录,将该记录的相应数据插入到还书记录中,同时将借书记录删除,并保存在借阅历史记录中。(3)缴纳罚金:输入读者ID,显示该读者的姓名、图书编号、罚款金额。如果读者交纳了罚金,则将借阅登记表的允许借阅标志置为“Y”。删除罚款记录表中该读者对应的记录,将这一条记录同时插入到罚款历史记录表中。
2.基本资料维护管理:包括图书资料维护、读者资料维护
(1)图书资料维护:包括新书的入库新书的数据录入以及现有书籍资料的修改和删除。
4
图书管理系统--数据库课程设计报告
(2)读者资料维护:包括新读者的资料入库以及现有读者资料的查询、修改和删除3.查询管理:包括图书资料查询、读者资料查询、借阅历史记录查询、罚款历
史记录查询
(1)图书资料查询:根据相应的图书信息对所有书籍进行所需查询。此查询包括:图书编号、图书ISBN、图书名称、作者、出版社、单价、是否借出等。
(2)读者资料查询:根据相应的读者资料进行所需查询。读者号、读者姓名等相关信息。(3)借阅历史记录查询:根据相应的借阅信息进行所需查询。此查询包括:读者号、图书编号、图书ISBN、图书名称、借阅日期、实际还书日期。
(4)罚款历史记录查询:根据相应的罚款信息进行所需查询。此查询包括:读者编号、图书编号、借阅日期、应还日期、实际还书日期、所罚金额。
4.系统管理:员工管理、权限管理、标准数据管理
(1)员工管理:包括新管理员信息的录入、密码的修改以及已有管理员信息的编辑。(2)权限管理:用于设定不同人员的权限
(3)标准数据管理:用于常用数据的系统维护
安全性和完整性要求
1)安全性要求
系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。
2)完整性要求
系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check 约束或者通过使用触发器和级联更新。
系统要求:
(1)系统安全、可靠;
(2)功能齐全;
(3)操作方便、界面友好;
(4)易于维护和扩充。
减少人力与管理费用;提高信息准确度;改进管理和服务;建立高效的信息传输和服务平台,提高信息处理速度和利用率;系统设计优良,界面设计精美、友好、快捷,人性化设计,后台管理功能强大、效率高;更简便、信息化程度更高的图书管理流程。
数据库概念结构设计
系统开发的总体目标是实现图书馆管理的系统化和自动化,缩短借阅者的等待时间,减
5
图书管理系统--数据库课程设计报告
轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、智能化管理,从而达到提高图书管理效率的目的。
主要任务是对读者信息、管理员信息、图书资料信息、借阅信息、归还图书信息、罚款信息的基本信息的操作及外理。
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键。
任务与目标
(1)选择中层数据流为切入点,通常选择实际系统中的子系统;
(2)设计分E-R图,即各子模块的E-R图;
(3)生成初步E-R图,通过合并方法,做到各子系统实体、属性、联系统一;
(4)生成全局E-R图,通过消除冲突等方面。
阶段结果
(1)根据不同的对象,从第3层数据流程图入手,分别画出各分E-R图(为了简化ER 图,其中各个实体的属性未在ER上标出):
(a)读者与图书之间的关系ER图
(b)读者与管理员之间的关系ER图
6
图书管理系统--数据库课程设计报告
(c)图书与管理员的关系ER图
(2)合并各分E-R图,消除属性冲突、命名冲突、结构冲突等三类冲突,得到初步E-R 图,再消除不必要冗余,得到的基本全局E-R图如下所示:
(3)各E-R图各实体的属性如下所示:
图书:图书编号,ISBN,名称,作者,价格,出版日期,是否可借,所在馆室
读者:读者编号,姓名,性别,院系,年级
管理员:管理员编号,姓名,性别,口令密码,联系电话
读者类别:类别编号,类别名称,允许可借最大图书数,允许最长借阅时间
数据库逻辑结构设计
逻辑设计的任务和目标
以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。
7
图书管理系统--数据库课程设计报告
数据组织
将E-R图转换为关系模型
实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:
一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合
具有相同码的关系模式可合并。
由于读者类别与读者联系方式是1:n(一对多),可以将其之间的联系与n端实体读者、图书合并,管理员与图书之间的管理联系也是1:n(一对多),同样也将其之间的联系与n 端实体合并,而读者与图书之间的借阅和归还联系方式则是n:m(多对多),这样要把它们之间的联系转化为独立的关系模式,读者与管理员之间的罚款联系是n:m(多对多),将其联系也转化成独立的关系模式,具体的基本E-R图向关系模型的转化如下:
读者类别:类别编号,类别名称,允许借阅图书最大数,允许借阅最长时间
图书:图书编号,ISBN,名称,作者,价格,出版日期,是否可借,所在馆室
读者:读者编号,读者类别编号,姓名,性别,院系,年级
管理员:管理员编号,姓名,性别,口令密码,联系电话
借阅信息:图书编号,读者编号,图书名,作者,借阅日期,归还日期,实际归还日期
维护信息:管理员编号,读者编号,图书名称,借阅日期,归还日期,实际归还日期,罚款金额,是否已交罚款状态
图书管理:管理员编号,图书编号
//借阅信息1,借阅历史,罚款信息可建立视图
在SQL中的表示:
图书:Book(BookNo,ISBN, BookName, BookWriter, Publishtime, BookPrice,BookState,BookRNo)
读者:Reader(ReaNo, LBID,ReaName,ReaSex , ReaDep, ReaGrade)
管理员:Manager (MID,MName,MSex,Mpwd ,MTeleph)
读者类别:ReaderTpye(LBID, LBName,LBNum,LBTime) //包括学生和教师
借阅信息:Borrow(BookID,ReaderID,BookName,BookWriter, Outdate,Indate,
Actdate)
维护信息:Fine (BookID,ReaderID,BookName,Outdate,Indate,Actdate,Fine,State) 图书管理:MngBook(MID,BookNo)
8
图书管理系统--数据库课程设计报告
模型优化
关系模式Book,Reader, ReaderType ,Maneger, MngBook不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF,但是借阅关系模式Borrow,维护信息FIne中存在着一些数据冗余,现消除冗余,优化为:
借阅信息:Borrow(BookID,ReaderID, Outdate,Indate,Actdate)
维护信息:Fine (BookID,ReaderID,Fine,State)
在SQL中的表示:
图书:Book(BookNo,ISBN, BookName, BookWriter, Publishtime, BookPrice,BookState,BookRNo)
读者:Reader(ReaNo, LBID,ReaName,ReaSex , ReaDep, ReaGrade)
管理员:Manager (MID,MName,MSex,Mpwd ,MTeleph)
读者类别:ReaderTpye(LBID, LBName,LBNum,LBTime) //包括学生和教师
借阅信息:Borrow(BookID,ReaderID, Outdate,Indate,Actdate)
维护信息:Fine (BookID,ReaderID,Fine,State)
图书管理:MngBook(MID,BookNo)
数据库模式定义
列名数据类型可否为空说明BookNo Char not null 图书编号
BookNo Char not null 图书的索书号BookName Char not null 图书的书名BookWriter Char not null 图书作者
Pulishtime Char not null 图书出版日期BookPrice Char 图书的单价
BookState Char not null 图书是否可借BookRNo Char not null 图书所在馆室号
列名数据类型可否为空说明
ReaNo Char not null 读者编号
ReaName Char not null 读者姓名
ReaSex Char not null 读者性别
9
图书管理系统--数据库课程设计报告
ReaLBID Char not null 读者类别编号ReaDep Char 读者所在学院ReaGrade Char 读者的年级
管理员信息表
列名数据类型可否为空说明
MID Char not null 管理员编号MName Char not null 管理员姓名
MSex Char 管理员性别
Mpsw Char not null 管理员密码MTeleph Char 管理员电话
读者类别信息表
列名数据类型可否为空说明LBID Char not null 读者类别编号LBName Char not null 读者类别名
LBnum Char not null 允许借阅图书最大数LBqx Char not null 借阅证期限
列名数据类型可否为空说明ReaNo Char not null 读者编号
BookNo Char not null 图书编号
Outdate Date not null 借阅时间
Indate Date not null 归还时间
Actdate Date not null 应还时间
维护信息表
列名数据类型可否为空说明BookNo Char not null 图书编号ReaderNo Char not null 读者编号
Fine Date not null 罚款金额
State Date not null 是否还款
列名数据类型可否为空说明
MID Char not null 管理员编号BookNo Char not null 图书编号
10
图书管理系统--数据库课程设计报告
11
数据流图及程序结构框图
图书管理系统业务流程图
数据流图
顶层数据流图:
第2层数据流图:(读者借阅,读者还书,读者查询,管理员查询,管理员修改)
图
2顶层数据流
图书管理系统--数据库课程设计报告
第3层数据流图:(读者借阅)
第3层数据流图:(读者还书)12
图书管理系统--数据库课程设计报告
第3层数据流图:(查询图书信息,查询读者信息,查询借阅历史,查询罚款信息)
第3层数据流图:(管理员添加、删除、修改图书信息)
13
图书管理系统--数据库课程设计报告
14
第3层数据流图:(管理员添加、删除、修改读者信息)
第3层数据流图:(管理员添加、删除、修改系统用户信息)
程序原代码及其实现(含截图) create table ReaderType(
LBID char(20) primary key,
LBName char(20) not null,
LBNum char(20),
LBTime char(20)
)
create table Manager(
MID char(10) primary key,
MName char(20) not null,
MSex
char(2),
图书管理系统--数据库课程设计报告
Mpwd char(8) not null,
MTeleph char(15)
)
Create table Book(
BookNo char(20) primary key,
ISBN char(50),
BookName char(50) ,
BookPrice char(7),
BookWriter char(50) ,
Publishtime Datetime ,
BookState char(10),
BookRNo char(20)
)
create table Reader(
ReaNo char(20) primary key, ReaName char(10) not null,
ReaSex char(2) not null,
LBID char(20) not null,
ReaDep char(20),
ReaGrade char(5),
foreign key(LBID) references ReaderType(LBID) )
Create table Borrow(
BookNo char(20),
ReaNo char(20),
BookName char(50),
Outdate Datetime not null,
Actdate Datetime,
Indate Datetime,
primary key(BookNo,ReaNo),
foreign key(BookNo) references Book(BookNo), foreign key(ReaNo) references Reader(ReaNo) )
create table Fine(
BookNo char(20),
ReaNo char(20),
15