1、数据库课程设计图书管理系统方案数据库系统原理课程设计课题名称:图书信息管理系统 姓 名: 班 级: 学 号: 指导老师: 2014年 01月 02日1.绪论1.1 背景介绍随着社会的发展,人们对于知识的需求也在不断地增长。书籍作为人们获取并增长知识的主要途径,使得图书馆在人们生活中占有了一定位置。但是近几年来,随着书量的不断增长,造成了书库空间极度不足,图书挤压,管理不善。这些都直接影响了读者对图书馆藏书的充分利用。这时图书馆就特别需要开发一套书刊租借管理系统,通过该系统来提高图书馆的管理效率,从而减少管理方面的工作流和成本。一个现代化的图书馆在正常运营中总是面对大量的读者信息,书籍信息以及两
2、者相互作用产生的借书信息,还书信息。面对图书馆数以万计的图书,纷繁复杂的读者信息,频繁更替的借还书信息,传统的直接方法不但管理出现漏洞,造成损失。因此有一个智能化、系统化、信息化的图书管理系统十分重要的。充分利用计算机的功能实现对读者管理、书籍管理,借阅管理等自动化控制,将会使图书馆的工作大大减弱。方便友好的图形界面、简便的操作、完善的数据库管理。将会使得图书馆系统极大限度的应用于现代化图书管理中。1.2 开发背景的选用及介绍1.2.1 SQL Server 2005的简介SQL是英文(Structured Query Language)的缩写,意思为结构化查询语言。SQL语言的主要功能就是同
3、各种数据库建立联系,进行沟通。SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。SQL语言有以下几个优点:1. 非过程化语言SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果
4、作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法, 这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。2. 统一的语言 SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握。3. 所有关系数据库的公共语言 由于所有主要的关系数据库管理系统都支持SQL语言,用户
5、可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。 1.2.2 java简介java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应3用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。2.
6、需求分析2.1 系统分析书刊租借系统(以高校的图书管理系统为例)是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。 在数据库应用系统开发之前,对开发数据库的基本概念,数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。2.
7、2 系统目标1. 用户方便进行图书查询,图书浏览和图书分类浏览,进行图书借阅并了解自己的借书情况和个人情况。2. 用户在借书超期的情况下得到来自管理员的提醒。3. 管理员可以方便进行图书管理,用户管理,管理员管理。图书管理包括图书信息以及图书分类的添加,修改,删除。用户管理包括用户信息的添加,删除,修改和锁定(限制用户的正常使用功能,使其无法登陆)。管理员管理包括管理员信息的添加,删除,修改等。4. 用户和管理员可以修改自己的密码,修改前需先核实自己的原始密码。5. 未注册用户读者也可以浏览所有的图书信息和分类信息,但是无法借阅。6. 考虑程序执行操作时可能出现的情况,比如删除图书分类时该分类
8、下存在图书,程序自动跳转该分类图书查看。删除某个用户,如果存在借书记录则不允许删除,跳转到该用户的借书记录。等待管理员确认该用户所借图书已经全部归还之后才允许删除该用户信息。2.3总体需求书刊租借系统(以高校图书馆为例)是一项复杂系统工程,要从实际出发,对实际情况进行客观的分析,深入了解需求。系统利用java与数据库结合的技术建立数据库管理系统,采用交互式的图形用户界面(GUI)来实现。需求调查是为了研究系统设计的开发途径和方法。同时它也是进行概要设计和详细设计的基础,是进行内部维护和测试的依据。具体分析如下:添加操作:在执行操作时首先都要先检查是否已经输入以及数据库中是否已经存在输入的数据,
9、如果存在会报错,程序返回上个页面,不执行添加操作。删除操作:考虑到了字段在不同表中可能会同时存在的情况,比如:删除图书分类时候该分类下有书或者删除用户时该用户有借书记录,这样的情况下程序会给出提醒并跳转到该分类下的所有图书查看或者是该用户的全部借书查看。直到这种关联取消掉之后才允许进行 删除这样的危险操作。查询操作:考虑到了模糊查询的实现, SQL语句中用“like”,还有组合查询,通过对用户输入情况的判断来确定SQL语句的最终形式,比如用户查询时并未输入图书名字,就是名字匹配任意字符,那么程序给数据库的SQL语句就会是name like %。组合查询的实现也是程序判断用户所做的选择或者输入,
10、在SQL语句中实现的。超期统计:假定借书超期的限制是三十天,借书记录中的所有数据的借书时间如果不在当前服务器时间减去三十天和当前服务器时间之间,那么这条借书记录就属于超期记录了。由用户借书记录中的用户编号到用户表中查找该用户。发送消息:往消息表中添加数据,该数据包含用户名,用户超期的图书,超期时间,罚金等相关警告信息。当用户正常登陆主页后,程序自动检查消息表中是否存在该用户的记录,如果有要给出提示,但是没有强制用户必须查看。数据库备份和还原操作:程序只要告诉SQL 服务器执行备份和还原SQL语句就可以实现,在还原时程序还在使用系统数据库,此时执行还原操作会因为没有排它使用权出现错误,所以应告诉
11、SQL 服务器使用另外的一个数据库,程序中用的是:use master。还原操作时用FSO组件首先检查备份数据库文件是否存在,如果不存在则给出提示回到上个页面。所有条件都允许后则执行还原操作,如果数据库数据比较多,备份和还原的时间都可能会比较长。3.概念设计阶段3.1 实体E-R图书刊租借系统有书籍类别实体,书籍实体,读者实体,还书记录实体,借书记录实体,罚款金额实体等。31.1 书籍种类实体E-R图3.1.2 书籍实体E-R图3.1.3 读者实体E-R图3.1.4 借书记录实体E-R图 3.1.4 还书记录实体E-R图3.1.4 还书记录实体E-R图3.1.5 总的E-R图(略去实体属性)3
12、.2 数据流程图4.逻辑结构设计阶段4.1 E-R图转换为关系模型 书籍种类(种类编号,种类名称)书籍(书籍编号,书籍名称,书籍种类,作者,出版社,出版时间,单价,是否可借)读者(借书证号,姓名,性别,读者类别,注册日期)借书记录(姓名,书籍编号,书籍名称,借书证号,借阅时间,应还时间)还书记录(姓名,书籍编号,书籍名称,借书证号,借阅时间,归还时间)罚款信息(书籍编号,书籍名称,借书证号,姓名,超期时间,罚款金额)4.2 数据字典 表4-2-1 书籍种类信息表表中列名数据类型及长度可否为空种类编号intNot null种类名称Varchar(30)Not null表4-2-2 书籍信息表表中
13、列名数据种类及长度可否为空书籍编号Varchar(20)Not null书籍名称Varchar(30)Not null书籍种类Varchar(30)Not null作者Char(30)Not null出版社Varchar(30)Null出版日期DatetimeNull单价MoneyNot null是否可借Varchar(20)Not null表4-2-3 读者种类信息表表中列名数据种类及长度可否为空借书证号IntNot null姓名Varchar(10)Nou null性别Char(2)null读者类别Varchar(20)Null注册日期DatetimeNot null表4-2-4 借书记录
14、信息表表中列名数据种类及长度可否为空姓名Varchar(10)Not null书籍编号Varchar(20)Not null书籍名称Varchar(30)Not null借书证号IntNot null借阅时间DatetimeNot null应还时间datetimeNot null表4-2-5 还书记录信息表表中列名数据种类及长度可否为空姓名Varchar(10)Not null书籍编号Varchar(20)Not null书籍名称Varchar(30)Not null借书证号IntNot null借阅时间DatetimeNot null归还时间datetimeNot null表4-2-6 罚款
15、信息表表中列名数据种类及长度可否为空书籍编号Varchar(20)Not null借书证号IntNot null姓名Varchar(10)Not null书籍名称Varchar(30)Not null超期时间IntNot null罚款金额MoneyNot null5物理结构设计阶段5.1 物理设计阶段的目标和任务数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:1) 确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;2) 对物理结构进行评价,评价的重点是时间和空间效率。5.2 数据存储方面为数据库中各基本表建立的索引如下:1) 由
16、于基本表readers_table,books_table的主码借书证号,书籍编号经常在查询条件和连接操作的连接条件中出现,且它们的值唯一,在两个属性上建立唯一性索引;2) 借阅信息基本表borrow_record_table的一属性借书证号,书籍编号,经常在查询条件中出现,考虑在其之上建立聚簇索引;3) 还书信息基本表return_record_table的一属性借书证号,书籍编号,经常在查询条件中出现,考虑在其之上建立聚簇索引;6.数据库实施与维护6.1 创建数据库,数据表6.1.1 创建libarysystem数据库create database libarysystemon prima
17、ry(name=libarysystem_data,size=10,maxsize=50,filename=D:booklibarysystem_mdf,filegrowth=10%)log on(name=libarysystem_log,size=10MB,maxsize=50MB,filename=D:booklibarysystem_ldf,filegrowth=10MB)6.1.2 创建books_stytle_table表create table books_stytle_table(种类编号 int primary key,种类名称 varchar(30) not null)6.
18、1.3 创建readers_table表Create table readers_table(借书证号 int primary key,姓名 varchar(10) not null,性别 char(2) default男,读者类别 varchar(20) null,注册日期 Datetime not null)6.1.4 创建books_table表Create table books_table(书籍编号 varchar(20) primary key,书籍名称 varchar(30) not null,作者 char(30) not null,出版社 varchar(30) null,出
19、版日期 Datetime null,单价 Money not null,借阅情况 varchar(20) not null)6.1.5 创建borrow_record_table表create table borrow_record_table(姓名 varchar(10) not null,书籍编号 varchar(20) not null,书籍名称 varchar(30) not null,借书证号 int not null,借阅时间 Datetime not null,应还时间 Datetime not null,foreign key(书籍编号) references books_ta
20、ble(书籍编号),foreign key(借书证号) references readers_table(借书证号)6.1.6 创建return_record_table表Create table return_record_table(姓名 varchar(10) not null书籍编号 varchar(20) not null,书籍名称 varchar(30) not null借书证号 int not null,借阅时间 Datetime not null,foreign key(书籍编号) references books_table(书籍编号),foreign key(借书证号) r
21、eferences readers_table(借书证号)6.1.7 创建reader_fee_table表Create table reader_fee_table(书籍编号 varchar(20) not null,借书证号 int not null,姓名 varchar(10) not null,书籍名称 varchar(30) not null,超期时间 int not null,罚款金额 Money not null,foreign key(书籍编号) references books_table(书籍编号),foreign key(借书证号) references readers_
22、table(借书证号)6.2 创建视图6.2.1 用于查询图书基本信息的视图定义如下: create view Bookview (借阅证号, 书籍编号, 作者, 出版社, 借阅情况)asSelect 借阅证号, 书籍编号, 作者, 出版社, 借阅情况from books_table6.2.2 用于读者基本信息查询的视图定义如下:create view Readerview (姓名,j借书证号,注册日期)asselect 姓名,借书证号,注册日期from readers_table6.2.3 用于显示当前借阅基本信息的视图定义如下:create view Borrowview (借书证号,书籍
23、名称,作者,借阅日期,应还日期)asselect borrow_record_table.借书证号, borrow_record_table.书籍名称,作者,借阅日期,应还日期from borrow_record_table,books_tablewhere borrow.record_table.书籍编号=books_table. 书籍编号 6.2.4用于借阅历史信息查询的视图定义如下:create view Historyview (借书证号,书籍名称,借阅日期,归还日期)asselect 借书证号,书籍名称,借阅日期,归还日期from return_record_table 6.2.5用
24、于查询罚款信息的视图定义如下:create view Fineview (姓名,书籍名称,超期时间,罚款金额)asselect 姓名,书籍名称,超期时间,罚款金额from reader_fee_table6.3 创建索引create unique index readersindex on readers_table(借书证号)create unique index booksindex on books_table(书籍编号)create unique index index1 on borrow_record_table(借书证号,书籍编号)create unique index inde
25、x2 on return_record_table(借书证号,书籍编号)6.4 创建触发器6.4.1 当删除readers_table表中某一读者基本信息时,触发borrow_record_table表,删除相应的记录create trigger Reader_deleteon readers_tablefor deleteas declare zhao int;select zhao=借书证号from deleteddelete borrow_record_tablewhere 借书证号=zhao6.4.2当在borrow_record_table表中增加一条借阅记录时,使该图书的状态由“可
26、借”变为“不可借”create trigger Borrow_insert1on borrow_record_tablefor insertas declare BookID char(20);select BookID=书籍编号from insertedupdate books_tableset 借阅情况=不可借where 书籍编号=BookID6.5 数据表的初始化6.5.1 books_stytle_table表的初始化Insert into books_stytle_table values(1,人文艺术类)Insert into books_stytle_table values(2
27、,自然科学类)Insert into books_stytle_table values(3,工程技术类)insert into books_stytle_table values(4,文学类)insert into books_stytle_table values(5,政治经济类)insert into books_stytle_table values(6,社会科学类)insert into books_stytle_table values(7,语言技能类)6.5.2 books_table表的初始化Insert into books_table(书籍编号,书籍名称,书籍种类,作者,出
28、版社,出版日期,单价,借阅情况)values(A1001,中国大历史,人文艺术类,黄仁宇,人民文学出版社,2007-02-01,32,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(A1002,中国近现代史纲要,人文艺术类,高等教育出版社,2006-04-01,32,可借insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(B1001,计算机操作系统,自然科学类,汤小丹,梁红兵等,西安电子大学出版社,2001-04-12,32,
29、不可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(B1002,计算机网络,自然科学类,谢希仁,电子工业出版社,2003-04-01,32,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(B1003,计算机网络,自然科学类,谢希仁,电子工业出版社,2003-04-01,32,不可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(C1001,线性代数,工程技术类,高等教育出版社,2004-07-01,12.00,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(C1002,计算方法,工程技术类,李信真
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1