图书馆系统模板.docx
《图书馆系统模板.docx》由会员分享,可在线阅读,更多相关《图书馆系统模板.docx(16页珍藏版)》请在冰豆网上搜索。
图书馆系统模板
目录
第1章绪论2
§1.1设计意义及目的2
§1.2研究范围及技术要求2
§1.3指导思想2
§1.4解决的主要问题及研究方法2
第2章需求分析2
§2.1总体需求分析2
§2.1.1查询和统计分析功能2
§2.1.2基本信息的维护功能2
§2.1.3日常功能3
§2.2系统功能图3
第3章总体设计5
§3.1图书借阅流程图:
5
§3.2安全设计5
第4章数据库设计5
§4.1概念结构设计5
§4.2逻辑结构设计6
§4.3物理结构设计7
第5章详细设计8
第6章编码8
结论12
学习体会12
致谢12
参考文献12
第1章绪论
§1.1设计意义及目的
图书管理系统是一种基于集中统一规划的数据库数据管理新模式,其宗旨是提高图
书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学、合理的规划,系统、高效的实施。
§1.2研究范围及技术要求
针对高校图书馆以及城市图书馆进行管理设计,提高工作效率;
系统的数据量一般都比较大,一般都达到几万人甚至十几万人,书籍量一般都达到几百万册甚至上千万册,系统由于只供内网查询,提高了数据访问的安全性,同时对并发控制也降低了要求。
§1.3指导思想
数据库建立的基本规范方法学以及现代的图书馆经营管理理念。
§1.4解决的主要问题及研究方法
满足广大用户对图书的共享需求,提高书籍的流通性,使其更好的服务人民;系统总体采用自顶向下,逐步求精的瀑布式方法设计,局部功能模块采用反复迭代的螺旋式设计方法。
第2章需求分析
§2.1总体需求分析
§2.1.1查询和统计分析功能
1.实现图书馆对在馆图书的按类别,书名,作者,内容,出版社,ISBN,借阅热度等的多功能查询。
2.实现读者对其当前借阅记录和历史借阅记录以及罚款记录,读者基本信息和图书馆在库图书的基本信息的多方位查询功能。
3.实现对当前图书馆在库图书丢失及总体流向的查询。
4.综合统计统计图书馆目前的各种指标。
5.统计、分析各时期的图书流通率、分类流通率、流通变化趋势,并可以图表、表格两种方式显示。
6.统计、分析各时期的图书馆藏量、分类馆藏量、馆藏量变化趋势,并可以图表、表格两种方式显示。
§2.1.2基本信息的维护功能
1.实现对读者信息的维护,包括包括添加读者信息、删除读者信息、修改读者信息。
2.实现图书馆书籍基本信息的维护,包括图书入库和书架设置,图书基本信息的修改以及图书注销并且建立书籍档案,方便图书管理。
3.实现对管理员基本信息的维护,包括管理员的添加,管理员基本信息(如类别等级)的修改和管理员的注销等功能。
§2.1.3日常功能
1.能够按照罚款规则,进行读者借阅超期和遗失图书的相关罚款功能。
2.能够修改读者和管理员密码及其权限,实现人员的有效管理。
3.借书完全通过扫描枪条码识别,自动识别借书证是否有效,根据设定的规则进行管理。
提示读者已借书数、超期图书应缴罚款等参考信息。
根据图书的种类确定借阅期限。
罚款单价根据图书种类确定。
4.还书完全通过条码识别,自动作超期记录。
5.图书预约可以为读者提供方便,可以进行管理及打印到书通知。
6.图书损坏、丢失处理能显示每本书上次损坏的记录以及其它信息5.报表统计:
包括统计图书信息、读者信息、借阅信息等。
7.报表统计:
包括统计图书信息、读者信息、借阅信息和罚款信息等。
§2.2系统功能图
图2-1
第3章总体设计
§3.1图书借阅流程图:
图3-1
§3.2安全设计
一方面,系统通过在登陆界面对不同用户权限的审查,使其只能进入自己权限以内的功能操作界面;另一方面,系统控制有些敏感信息,使其不能被随意修改,如人员编号等;
第4章数据库设计
§4.1概念结构设计
图书管理系统的数据库设计需要结合现代的图书管理理念和现代的数据库设计方法学。
系统主要的参与人有普通读者、管理员以及其他人员;系统主要的实物体有图书、书架、储藏室等;
通过对图书的来源、去向和流通的全程跟踪,及时分析每一步中需要参与的其他人员和实物(即实体),弄清楚各方在每一步中的具体的作用,抽取出各个关系表和事务表,继而完成之后,检查各个关系是否具有完备性和完整性。
设计的最终ER图为:
图4-1
§4.2逻辑结构设计
(1)图书基本信息(书籍编号,馆藏索引,存放位置,书名,类型,作者,出版社,ISBN编号,价格,出版日期,页数,关键字,入库时间,是否允许外接,是否注销,是否借出,借阅次数,备注)
(2)人员信息表(人员编号,证件有效日期,证件截止日期,是否挂失,姓名,性别,类别,所属部门,地址,电话,电子邮件地址,备注)
(3)借阅信息表(读者ID,书编号,借阅日期,是否经过假期标志,续借次数,最后还书截止日期,操作员编号,备注)
(4)图书分类信息表(图书分类号,类别名称,关键字,允许借的最大数目,备注)
(5)人员分类信息表(人员分类号,类别名称,允许借书数量,允许借阅天数,允许续借次数,备注)
(6)用户信息表(人员ID,人员密码,人员类型(权限))
(7)借阅历史记录表(书号,读者ID,借阅日期,还书日期,罚款金额,是否缴纳罚款,操作员编号,备注(罚款原因))
(8)采购表(采购书的种类,采购人员ID,采购日期,采购本书,采购金额,备注)
(9)书架分布表(书架编号,书架位置,书架容量,书架类别)
(10)书籍索引表(索引编号,该种书的现有本书,该种书的关键字,该种书的类别)
(11)专业表(专业编号,专业名称,专业负责人)
(12)班级表(班级编号,班级名称,班级负责人)
§4.3物理结构设计
各个表之间的关系为:
图4-1
说明:
各个表中的主键除了作为外键参照其他表中主键之外,均设为int,且作为标识和索引,日期均为datetime类型,金额及价格均为money类型,其他均为字符串型,大小根据实际设定,有些属性具有默认值。
第5章详细设计
第6章编码
图6-1
借书存储过程实现:
CREATEPROCEDUREdbo.Borrow_BooksS
@bookIDint,
@readerIDint,
@duringHolidaychar(4),
@continueborrowint,
@operatorIDint,
@memochar(50),
@resultchar(80)OUTPUT
AS
declare@numberint
declare@current_borrow_numint
declare@current_bookTyoe_borrow_numint
declare@MAXNUMint
declare@BookTypeMAXNUMint
declare@readerTypeint
declare@readerMAXDaysint
declare@bookTypeint
declare@bookIndexint
SET@number=(
SELECTCOUNT(*)FROMPerson
WHEREPerson.PersonNO=@readerIDANDPerson.IsDead='否'AND
Person.IsLost='否'
)
if(@number!
=1)
begin
SET@result='读者编号不存在或者已注销和挂失!
';
return;
end
SET@number=(
SELECTCOUNT(*)FROMBook
WHEREBook.BookID=@bookIDANDBook.IsDead='否'AND
Book.IsBorrowed='否'ANDBook.IsAllowBorrow='是'
)
if(@number!
=1)
begin
SET@result='该书不存在或已注销或不对外借或已借出!
';
return;
end
SET@current_borrow_num=
(
SELECTCOUNT(*)FROMBorrowInfo
WHEREBorrowInfo.ReaderID=@readerID
)
SET@readerType=
(
SELECTPersontypeFROMPerson
WHEREPerson.PersonNO=@readerID
)
SET@MAXNUM=
(
SELECTBookNumberFROMPersonType
WHEREPersonType.TypeNO=@readerType
)
SET@readerMAXDays=--获取应归还的天数
(
SELECTBookDaysFROMPersonType
WHEREPersonType.TypeNO=@readerType
)
IF(@duringHoliday='是')
SET@readerMAXDays=@readerMAXDays+60;--经过一个假期,天数应加60
if(@current_borrow_num>=@MAXNUM)--借书已达最大值
begin
SET@result='借书已达最大值,不能再借!
';
return;
end
SET@bookType=
(
SELECTBookTypeFROMBook
WHEREBook.BookID=@bookID
)
SET@BookTypeMAXNUM=
(
SELECTBorrowNumberFROMBookType
WHEREBookType.BookTypeNO=@bookType
)
SET@current_bookTyoe_borrow_num=
(
SELECTCOUNT(*)FROMBorrowInfo,Book
WHEREBook.BookID=BorrowInfo.BookID
ANDBook.BookType=@bookType
)
IF(@current_bookTyoe_borrow_num>=@BookTypeMAXNUM)--本类数已超借阅本数限制
begin
SET@result='本类数已超借阅本数限制!
';
return;
end
SET@bookIndex=
(
SELECTBookIndexFROMBook
WHEREBook.BookID=@bookID
)
SET@number=
(
SELECTCOUNT(*)FROMBorrowInfo,Book
WHEREBook.BookID=BorrowInfo.BookID
ANDBook.BookIndex=@bookIndex
)
IF(@number>=1)--已经借过同一本书!
begin
SET@result='已经借过同一本书!
';
return;
end
BEGINTRAN
INSERTINTOBorrowInfo
VALUES(@readerID,@bookID,GETDATE(),
@duringHoliday,@continueborrow,
DATEADD(day,@readerMAXDays,GETDATE()),@operatorID,@memo);
UPDATEBook
SETIsBorrowed='是',BookBorrowTimes=BookBorrowTimes+1
WHEREBookID=@bookID;
COMMITTRAN
SET@result='借书成功!
';
-------------------------------------------------------
结论
本系统数据库设计方面由于调研充分,经历时间较长,设计结果较为满意,在理论上能够向上支持较为完整的事务约束,但由于编码时间较短加之编码时编码人员经验毕竟十分有限,很多功能也只是望洋兴叹,尚未有能力实现,本系统只能提供图书和读者信息的多功能查询和带有很少事务约束的借书、还书功能以及基本信息的维护模块。
像对图书流通率、分类流通率、流通变化趋势的统计分析和图表显示有待实现,还有下一步应该实现更具现实意义的借书、还书处理以及罚款功能。
学习体会
本次课程设计强度之大(每天从早到晚)、任务之重(从设计到实现),都是以前没有过的,所幸,课程设计本身并不难,每一步都是有章可循且每一个人都有能力实现相应的部分。
一个数据库系统的实现,绝对是全体人员共同团结、努力协作的结果。
本次课程设计训练,让我大略“体会”(或者用想象更贴切)了软件开发人员所经历的苦与乐,使我对今后自己从事的工作有了一个基本的体会和感受,也算是提前“打了一个预防针”吧。
同时作为本组组长,我负责各个成员的具体分工。
分工合作实际上已是现代社会最基本的特征,各个组织在各种现代社会活动中,都有自己的明确分工。
一个好的组长,应该能够充分调动各个本组成员的积极性和参与性,使他们都能够充分发挥自己在系统开发中的作用,清楚知道每一个人的强项和不足,“因地制宜”,确定不同的分工。
待基本的分工确定之后,组长应该随时掌握各部分的进展状况,适时给予相应的调整。
同时,组长应把握大局,不断优化和调整系统的结构和布局。
而我显然还做得有待提高。
致谢
赵海霞老师、魏汪洋老师、王志强老师不辞辛苦给予我们上机指导,特此感谢!
Specialthankto;那些在课程设计中给予过我们组帮助的同学们!
参考文献
【1】ThomasM.Connolly,CarolynE.Begg,何玉洁等译.数据库设计教程
北京:
机械出版社,2005,1
【2】王珊,萨师煊.数据库系统概论,北京:
高等教育出版社2006,5