1、数据库系统原理课程设计课题名称:图书信息管理系统 姓 名: 班 级: 学 号: 指导老师: 01月 02日目录1.绪论31.1 背景介绍31.2 开发背景选择及介绍32.需求分析42.1 系统分析42.2 系统目标42.3总体需求43.概念设计阶段53.1 实体E-R图53.2 数据步骤图84.逻辑结构设计阶段84.1 E-R图转换为关系模型84.2 数据字典95物理结构设计阶段105.1 物理设计阶段目标和任务105.2 数据存放方面106.数据库实施和维护106.1 创建数据库,数据表106.2 创建视图126.3 创建索引136.4 创建触发器136.5 数据表初始化146.6 初始表显
2、示167数据库界面实现197.1系统总功效模块图197.2 系统实现198.心得体会251.绪论1.1 背景介绍伴随社会发展,大家对于知识需求也在不停地增加。书籍作为大家获取并增加知识关键路径,使得图书馆在大家生活中占有了一定位置。不过近几年来,伴随书量不停增加,造成了书库空间极度不足,图书挤压,管理不善。这些全部直接影响了读者对图书馆藏书充足利用。这时图书馆就尤其需要开发一套书刊租借管理系统,经过该系统来提升图书馆管理效率,从而降低管理方面工作流和成本。一个现代化图书馆在正常运行中总是面对大量读者信息,书籍信息和二者相互作用产生借书信息,还书信息。面对图书馆数以万计图书,纷繁复杂读者信息,频
3、繁更替借还书信息,传统直接方法不仅管理出现漏洞,造成损失。所以有一个智能化、系统化、信息化图书管理系统十分关键。充足利用计算机功效实现对读者管理、书籍管理,借阅管理等自动化控制,将会使图书馆工作大大减弱。方便友好图形界面、简便操作、完善数据库管理。将会使得图书馆系统极大程度应用于现代化图书管理中。1.2 开发背景选择及介绍1.2.1 SQL Server 介绍SQL是英文(Structured Query Language)缩写,意思为结构化查询语言。SQL语言关键功效就是同多种数据库建立联络,进行沟通。SQL被作为关系型数据库管理系统标准语言。SQL语句能够用来实施多种多样操作,比如更新数据
4、库中数据,从数据库中提取数据等。现在,绝大多数流行关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等全部采取了SQL语言标准。SQL语言有以下多个优点:1. 非过程化语言SQL是一个非过程化语言,因为它一次处理一个统计,对数据提供自动导航。SQL允许用户在高层数据结构上工作,而不对单个统计进行操作,可操作统计集,全部SQL 语句接收集合作为输入,返回集合作为输出。SQL集合特征许可一条SQL语句结果作为另一条SQL语句输入。SQL不要求用户指定对数据存放方法, 这种特征使用户更易集中精力于要得到结果;全部SQL语句使用查询优化器,
5、它是RDBMS一部分,由它决定对指定数据存取最快速度手段,查询优化器知道存在什么索引,在哪儿使用索引适宜,而用户则从不需要知道表是否有索引、有什么类型索引。2. 统一语言 SQL可用于全部用户DB活动模型,包含系统管理员、数据库管理员、 应用程序员、决议支持系统人员及很多其它类型终端用户。基础SQL 命令只需极少时间就能学会,最高级命令在几天内便可掌握。3. 全部关系数据库公共语言 因为全部关键关系数据库管理系统全部支持SQL语言,用户可将使用SQL技能从一个RDBMS(关系数据库管理系统)转到另一个,全部用SQL编写程序全部是能够移植。 1.2.2 java介绍java是一个能够撰写跨平台应
6、用软件面向对象程序设计语言,是由Sun Microsystems企业于1995年5月推出Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)总称。Java 技术含有卓越通用性、高效性、平台移植性和安全性,广泛应4用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大开发者专业社群。在全球云计算和移动互联网产业环境下,Java更含有了显著优势和宽广前景。2.需求分析2.1 系统分析书刊租借系统(以高校图书管理系统为例)是经典信息管理系统,其开发关键包含后台数据库建立和维护和前端应用程序开发两个方面。对于前者要求建立起数据一致性和完整
7、性强、数据安全性好数据库。而对于后者则要求应用程序功效完备,易使用等特点。 在数据库应用系统开发之前,对开发数据库基础概念,数据库结构、开发数据库应用程序步骤、开发体系及方法全部应该有相当清楚了解和认识。数据库应用系统开发目标是建立一个满足用户长久需求产品。开发关键过程为:了解用户需求,然后,把它们转变为有效数据库设计。把设计转变为实际数据库,而且这些数据库带有功效完备、高效能应用。2.2 系统目标1. 用户方便进行图书查询,图书浏览和图书分类浏览,进行图书借阅并了解自己借书情况和个人情况。2. 用户在借书超期情况下得到来自管理员提醒。3. 管理员能够方便进行图书管理,用户管理,管理员管理。图
8、书管理包含图书信息和图书分类添加,修改,删除。用户管理包含用户信息添加,删除,修改和锁定(限制用户正常使用功效,使其无法登陆)。管理员管理包含管理员信息添加,删除,修改等。4. 用户和管理员能够修改自己密码,修改前需先核实自己原始密码。5. 未注册用户读者也能够浏览全部图书信息和分类信息,不过无法借阅。6. 考虑程序实施操作时可能出现情况,比如删除图书分类时该分类下存在图书,程序自动跳转该分类图书查看。删除某个用户,假如存在借书统计则不许可删除,跳转到该用户借书统计。等候管理员确定该用户所借图书已经全部归还以后才许可删除该用户信息。2.3总体需求书刊租借系统(以高校图书馆为例)是一项复杂系统工
9、程,要从实际出发,对实际情况进行客观分析,深入了解需求。系统利用java和数据库结合技术建立数据库管理系统,采取交互式图形用户界面(GUI)来实现。需求调查是为了研究系统设计开发路径和方法。同时它也是进行概要设计和具体设计基础,是进行内部维护和测试依据。具体分析以下:添加操作:在实施操作时首先全部要先检验是否已经输入和数据库中是否已经存在输入数据,假如存在会报错,程序返回上个页面,不实施添加操作。删除操作:考虑到了字段在不一样表中可能会同时存在情况,比如:删除图书分类时候该分类下有书或删除用户时该用户有借书统计,这么情况下程序会给出提醒并跳转到该分类下全部图书查看或是该用户全部借书查看。直到这
10、种关联取消掉以后才许可进行 删除这么危险操作。查询操作:考虑到了模糊查询实现, SQL语句中用“like”,还有组合查询,经过对用户输入情况判定来确定SQL语句最终形式,比如用户查询时并未输入图书名字,就是名字匹配任意字符,那么程序给数据库SQL语句就会是name like %。组合查询实现也是程序判定用户所做选择或输入,在SQL语句中实现。超期统计:假定借书超期限制是三十天,借书统计中全部数据借书时间假如不在目前服务器时间减去三十天和目前服务器时间之间,那么这条借书统计就属于超期统计了。由用户借书统计中用户编号到用户表中查找该用户。发送消息:往消息表中添加数据,该数据包含用户名,用户超期图书
11、,超期时间,罚金等相关警告信息。当用户正常登陆主页后,程序自动检验消息表中是否存在该用户统计,假如有要给出提醒,不过没有强制用户必需查看。数据库备份和还原操作:程序只要告诉SQL 服务器实施备份和还原SQL语句就能够实现,在还原时程序还在使用系统数据库,此时实施还原操作会因为没有排它使用权出现错误,所以应告诉SQL 服务器使用另外一个数据库,程序中用是:use master。还原操作时用FSO组件首先检验备份数据库文件是否存在,假如不存在则给出提醒回到上个页面。全部条件全部许可后则实施还原操作,假如数据库数据比较多,备份和还原时间全部可能会比较长。3.概念设计阶段3.1 实体E-R图书刊租借系
12、统有书籍类别实体,书籍实体,读者实体,还书统计实体,借书统计实体,罚款金额实体等。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图(略去实体属性)书籍种类还书统计信息登
13、记归还书籍借阅借书统计读者罚款罚款信息3.2 数据步骤图图书馆管理员还书统计借书统计图书归还处理检验读者身份检验图书是否可借填写借阅库,修改图书库借阅库图书库借阅库图书库填写归还统计修改图书统计有效可借填写借阅统计借阅信息修改4.逻辑结构设计阶段4.1 E-R图转换为关系模型 书籍种类(种类编号,种类名称)书籍(书籍编号,书籍名称,书籍种类,作者,出版社,出版时间,单价,是否可借)读者(借书证号,姓名,性别,读者类别,注册日期)借书统计(姓名,书籍编号,书籍名称,借书证号,借阅时间,应还时间)还书统计(姓名,书籍编号,书籍名称,借书证号,借阅时间,归还时间)罚款信息(书籍编号,书籍名称,借书证
14、号,姓名,超期时间,罚款金额)4.2 数据字典 表4-2-1 书籍种类信息表表中列名数据类型及长度可否为空种类编号intNot null种类名称Varchar(30)Not null表4-2-2 书籍信息表表中列名数据种类及长度可否为空书籍编号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 读者种类信息表表中列名数据种类及
15、长度可否为空借书证号IntNot null姓名Varchar(10)Nou null性别Char(2)null读者类别Varchar(20)Null注册日期DatetimeNot null表4-2-4 借书统计信息表表中列名数据种类及长度可否为空姓名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书籍编号V
16、archar(20)Not null书籍名称Varchar(30)Not null借书证号IntNot null借阅时间DatetimeNot null归还时间datetimeNot null表4-2-6 罚款信息表表中列名数据种类及长度可否为空书籍编号Varchar(20)Not null借书证号IntNot null姓名Varchar(10)Not null书籍名称Varchar(30)Not null超期时间IntNot null罚款金额MoneyNot null5物理结构设计阶段5.1 物理设计阶段目标和任务数据库物理设计就是为逻辑数据模型选择一个最适宜应用要求物理结构过程,在这个阶段
17、中要完成两大任务:1) 确定数据库物理结构,在关系数据库中关键是存取方法和存放结构;2) 对物理结构进行评价,评价关键是时间和空间效率。5.2 数据存放方面为数据库中各基础表建立索引以下:1) 因为基础表readers_table,books_table主码借书证号,书籍编号常常在查询条件和连接操作连接条件中出现,且它们值唯一,在两个属性上建立唯一性索引;2) 借阅信息基础表borrow_record_table一属性借书证号,书籍编号,常常在查询条件中出现,考虑在其之上建立聚簇索引;3) 还书信息基础表return_record_table一属性借书证号,书籍编号,常常在查询条件中出现,考虑
18、在其之上建立聚簇索引;6.数据库实施和维护6.1 创建数据库,数据表6.1.1 创建libarysystem数据库create database libarysystemon primary(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_s
19、tytle_table表create table books_stytle_table(种类编号 int primary key,种类名称 varchar(30) not null)6.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(书籍编号
20、varchar(20) primary key,书籍名称 varchar(30) not null,作者 char(30) not null,出版社 varchar(30) null,出版日期 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
21、 not null,借阅时间 Datetime not null,应还时间 Datetime not null,foreign key(书籍编号) references books_table(书籍编号),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 n
22、ull,借阅时间 Datetime not null,foreign key(书籍编号) references books_table(书籍编号),foreign key(借书证号) references 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
23、not null,foreign key(书籍编号) references books_table(书籍编号),foreign key(借书证号) references readers_table(借书证号)6.2 创建视图6.2.1 用于查询图书基础信息视图定义以下: create view Bookview (借阅证号, 书籍编号, 作者, 出版社, 借阅情况)asSelect 借阅证号, 书籍编号, 作者, 出版社, 借阅情况from books_table6.2.2 用于读者基础信息查询视图定义以下:create view Readerview (姓名,j借书证号,注册日期)assel
24、ect 姓名,借书证号,注册日期from readers_table6.2.3 用于显示目前借阅基础信息视图定义以下:create view Borrowview (借书证号,书籍名称,作者,借阅日期,应还日期)asselect borrow_record_table.借书证号, borrow_record_table.书籍名称,作者,借阅日期,应还日期from borrow_record_table,books_tablewhere borrow.record_table.书籍编号=books_table. 书籍编号6.2.4用于借阅历史信息查询视图定义以下:create view Hist
25、oryview (借书证号,书籍名称,借阅日期,归还日期)asselect 借书证号,书籍名称,借阅日期,归还日期from return_record_table6.2.5用于查询罚款信息视图定义以下:create view Fineview (姓名,书籍名称,超期时间,罚款金额)asselect 姓名,书籍名称,超期时间,罚款金额from reader_fee_table6.3 创建索引create unique index readersindex on readers_table(借书证号)create unique index booksindex on books_table(书籍编
26、号)create unique index index1 on borrow_record_table(借书证号,书籍编号)create unique index index2 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 deleteddele
27、te borrow_record_tablewhere 借书证号=zhao6.4.2当在borrow_record_table表中增加一条借阅统计时,使该图书状态由“可借”变为“不可借”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表初始化Ins
28、ert into books_stytle_table values(1,人文艺术类)Insert into books_stytle_table values(2,自然科学类)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_tabl
29、e values(7,语言技能类)6.5.2 books_table表初始化Insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(A1001,中国大历史,人文艺术类,黄仁宇,人民文学出版社,-02-01,32,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(A1002,中国近现代史纲要,人文艺术类,高等教育出版社,-04-01,32,可借insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,
30、出版日期,单价,借阅情况)values(B1001,计算机操作系统,自然科学类,汤小丹,梁红兵等,西安电子大学出版社,-04-12,32,不可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(B1002,计算机网络,自然科学类,谢希仁,电子工业出版社,-04-01,32,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(B1003,计算机网络,自然科学类,谢希仁,电子工业出版社,-04-01,32,不可借)insert i
31、nto books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(C1001,线性代数,工程技术类,高等教育出版社,-07-01,12.00,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(C1002,计算方法,工程技术类,李信真,车刚明等,西北工业大学出版社,-09-01,12.00,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(D1001,百年孤独,文学类,马尔
32、克斯著,闫瑞译,北京燕山出版社,-02-14,49.00,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(D1002,分成两半伯爵,文学类,卡尔维诺著,吴正仪译,译林出版社,-06-14,20.00,不可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(E1001,现代世界经济和政治,政治经济类,李景治,中国人民大学出版社,-06-16,16.00,可借)insert into books_table(书籍编号,书籍名称
33、,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(E1002,经济学原理,政治经济类,高鸿业,中国人民大学出版社,-06-01,16.00,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(F1001,马克思主义基础原理概论,社会科学类,高等教育出版社,-06-01,17.00,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(F1002,思想道德修养和法律基础,社会科学类,高等教育出版社,-09-01,
34、15.50,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(G1001,大学英语,语言技能类,郑树棠,外语教学和研究出版社,-04-01,15.50,可借)insert into books_table(书籍编号,书籍名称,书籍种类,作者,出版社,出版日期,单价,借阅情况)values(G1002,大学英语,语言技能类,郑树棠,外语教学和研究出版社,-04-01,15.50,可借)6.5.3 readers_table表初始化insert into readers_table(借书证号,姓名,性别,读者类
35、别,注册日期)values(31100,王鑫,男,学生,-01-01)insert into readers_table(借书证号,姓名,性别,读者类别,注册日期)values(31102,王永胜,男,学生,-01-01)insert into readers_table(借书证号,姓名,性别,读者类别,注册日期)values(31101,张倩,女,学生,-06-01)insert into readers_table(借书证号,姓名,性别,读者类别,注册日期)values(31103,程辉,男,老师,-07-01)insert into readers_table(借书证号,姓名,性别,读者
36、类别,注册日期)values(31104,肖萌,男,职员,-07-15)6.5.4 borrow_record_table表初始化insert into borrow_record_table(姓名,书籍编号,书籍名称,借书证号,借阅时间,应还时间)values(王鑫,B1001,计算机操作系统,31100,-12-13,-01-03)insert into borrow_record_table(姓名,书籍编号,书籍名称,借书证号,借阅时间,应还时间)values(王永胜,D1002,分成两半伯爵,31102,-11-13,-12-13)6.5.5 return_record_table表i
37、nsert into return_record_table(姓名,书籍编号,书籍名称,借书证号,借阅时间,归还时间)values(王鑫,C1001,线性代数,31100,-12-13,-12-23)insert into return_record_table(姓名,书籍编号,书籍名称,借书证号,借阅时间,归还时间)values(王永胜,E1002,经济学原理,31102,-01-13,-01-23)6.5.6 reader_fee_table表Insert into reader_fee_table(书籍编号,书籍名称,借书证号,姓名,超期时间,罚款金额)values(B1002,计算机网
38、络,31102,王永胜,3,0.3)Insert into reader_fee_table(书籍编号,书籍名称,借书证号,姓名,超期时间,罚款金额)values(A1002,中国大历史,31101,王永胜,5,0.5)6.6 初始表显示6.6.1 查询readers_table表6.6.2 查询readers_table表6.6.3 查询borrow_record_table表6.6.4 查询return_record_table表6.6.5 查询readers_fee_table表6.7 数据库关系图7数据库界面实现7.1系统总功效模块图退出还书登记借书登记欠费查询借阅查询馆藏查询书刊租借
39、信息管理系统 7.2 系统实现7.2.1 系统主界面图 1 7.2.2 馆藏查询模块l 进入系统主界面后,点击“馆藏查询”按钮,进入“查询系统”界面,以下图:图 2 l 在文本框中输入你需要查询书籍名称,当我们什么也不输入时,会有提醒框出现,以下图: 图 3 l 在文本框中输入你需要查询书籍名称,比如我们输入计算机网络,点击“检索”按钮,会得到以下结果图 4查询结果显示,图书馆有两本计算机网络,一本已借出l 当图书馆没有我们查询图书时,查询结果以下图:图 57.2.3 借阅登记模块l 进入系统主界面后,点击“借书登记”按钮,进入“借书登记”界面,以下图:图 6 l 在文本框中输入你需要借阅书籍
40、名称和你借书证号,比如我们输入计算机网络书籍编号“B1003”和“31100”(王鑫借书证号),点击“确定”按钮,会得到以下结果:图 7l 此时说明你已借书成功,我们来验证一下,如8.2.2,优异入“馆藏查询”模块,在“查询系统”中,图 2,在文本框中输入计算机网络,结果以下:图 8现在能够看到图书馆里两本计算机网络“借阅情况”全部变为“不可借”7.2.3 借阅查询模块l 进入系统主界面后,点击“借阅查询”按钮,进入“借阅查询”界面,以下图:图 9l 在文本框中输入你名字,比如我们输入“王鑫”,她刚才借了计算机网络这本书,结果以下:图 107.2.3 还书登记模块l 进入系统主界面后,点击“还书登记”按钮,进入“还书系统”界面,以下图:图 11l 此时输入你要归还书籍名称和你借书证号,比如我们输入计算机网络书籍编号“B1003”和王鑫借书证号“31100”,得到以下结果:图 12l 我们对上述结果进行验证,进入“馆藏查询”模块和“借阅查询”模块,在“查询系统”和“借阅查询”分别输入计算机网络和“王鑫”,操作如上,得到结果以下:图 13图 14由上述结果可知,当还书成功后,计算机网络借阅情况又变回“可借”,而王鑫对计算机网络借阅信息已被删除7.2.4 欠费查询模块l 进入系统主界面后,点