数据库课程设计报告.docx
《数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告.docx(61页珍藏版)》请在冰豆网上搜索。
数据库课程设计报告
数据库课程设计报告
系(院):
计算机科学学院
专业班级:
计科1201
姓名:
黄光为
学号:
201206018
指导教师:
包小军
设计时间:
2015.1.10-2015.1.17
设计地点:
12教机房
二.设计任务………………………………………………………………………………………3
一.设计目的
通过对图书管理系统的系统分析、系统设计、编码和调试等工作的实践,熟悉管理信息系统的开发过程、设计方法及相关编程技术,熟练掌握数据库设计的基本理论及方法。
二.设计任务
要求完成一个具有一定实用价值的图书管理系统,主要任务包括:
在MicrosoftSQLServer2000/2005/2008环境下建立图书管理系统所使用的数据库,利用企业管理器或查询分析器建立各种数据库对象,包括:
数据表、视图、约束、存储过程和触发器等;
掌握JDBC编程技术,对MSSQLServer数据库进行连接和操纵;
掌握使用Java语言开发一个数据库应用系统的基本方法和步骤,熟悉一些基础功能的实现方法,如:
数据维护(插删改等操作),数据查询、浏览和Excel导出,统计与报表,用户登录和权限管理等。
了解C/S或B/S应用程序的多层体系结构及三层架构方案设计思想,了解迭代式开发,熟悉面向对象设计方法及其分析与设计过程,了解UML文档及其开发过程中的作用。
三.需求分析
(1)图书管理系统的基本功能需求包括:
读者管理、图书管理、借阅管理、用户登录与用户管理等;其它功能需求包括:
读者查询与预约借书*、统计与报表*、数据备份*、书架管理*、期刊管理*、期刊借阅*、论文管理*、论文借阅*等。
(*表示留待以后的迭代周期完成,下同)
(2)相关领域概念:
借书证(读者)、图书、借还书记录。
(3)系统外部参与者:
读者、借书证管理员、图书管理员、借阅管理员、系统管理员。
将图书馆工作人员划分为借书证管理、图书管理、借阅管理等三类人员;系统管理员负责数据库和软件系统管理,包括各类管理员用户的创建和授权、数据库备份等工作。
系统分析目标
找出系统用例,书写用例文档,建立领域模型(概念模型)。
[用例]usecase,或译为使用案例、用况。
是指为了完成一个领域目标或任务,提供一个或多个场景来说明其在系统内部与外部(人员或外部系统等)之间的交互过程。
如办理借书证、借书、还书、用户登录等均为用例;而借阅管理不是用例,因为它包括多个任务;读者可否借书也不是用例,因为它不是一个领域任务或业务目标。
参见“参考资料01用例.doc”。
用例是一个事件流,一个事件对应一个系统操作;如借书用例中的“根据借书证号查询读者信息”、“根据借书证号查询超期未归还图书”、“判断读者可否借书”、“判断图书是否在馆”、“确认借书”等均为事件或系统操作。
找出系统用例后,对每个用例的交互操作过程进行描述(即书写用例),通过用例发现领域概念及其属性,并建立领域模型(即概念模型)。
用例与领域模型的建立过程一般是交互进行的,并相互参考、印证和补充完善。
通过用例发现事件或系统操作,可进行下一步的设计和实现工作,是系统设计主要内容。
在面向对象方法的开发过程中,分析与设计没有明显的界限,只是侧重面不同而已。
3.1读者管理
读者管理即借书证管理,包括的业务(即用例)有:
办理借书证、借书证变更、借书证挂失*、解除挂失*、补办借书证*、注销借书证*、批量办理新生借书证*等。
(*表示留待迭代2及以后完成,下同。
完成此类用例文档并实现其功能者,教师可酌情加分)
借书证(读者)可分为2种类别:
教师、学生。
借书证(教师)=借书证号、姓名、性别、所在单位、办证日期、照片等。
借书证(学生)=借书证号、学号、姓名、性别、专业、班级、办证日期、有效期、照片等。
其中,有效期由学生类别决定,本科生4年、专科生3年、硕士生3年等。
相关业务规则:
(1)读者凭借书证借书;
(2)教师最多借书12本,借书期限最长为60天,可续借2次;学生最多借书8本,借书期限最长为30天,可续借1次;(3)处于挂失、注销状态的读者不能借书;(4)未归还图书者不能注销其借书证。
分析:
增加读者类别概念,统一并简化读者信息,采用教师属性项,而学生可在所在单位填写班级,学生特有读者信息可留待以后的开发周期处理。
可得到2个概念:
读者、读者类别。
读者=借书证号、姓名、性别、所在单位、读者类别、办证日期、照片等。
(另可加:
电话、邮箱等)
读者类别=读者类别号、类别名称、可借书本数、可借书天数、可续借次数。
思考:
学生借书证的有效期如何处理?
1.办理借书证
用例名称:
办理借书证
迭代:
1(说明:
第1次迭代期间的用例文档)
参与者:
借书证管理员(或系统管理员)、读者
综述:
用例起始于读者来到借书证管理办公室,管理员给读者办理新借书证。
触发器:
(说明该用例的触发条件)
前置条件:
登录用户具备读者管理权限。
过程描述:
(标题名或为:
基本流程、基本事件流、主要成功场景等)
1.管理员输入:
读者类别、所在单位、姓名。
2.点击“查询”。
3.系统查询读者信息,并显示查询结果。
4.管理员判断该读者是否已办理借书证,若是,则可取消办证过程。
(人工操作)
5.管理员输入读者信息:
读者类别、姓名、性别、所在单位、办证日期、照片等。
(类别、姓名、单位等可预置为过程1中输入值,办证日期可预置为系统日期)
6.确认办证。
后置条件:
创建新的读者对象,并具有新的借书证号;系统记录读者信息。
业务规则:
借书证号应具有唯一性。
待解决问题:
1.打印借书证;
注释:
未考虑校园一卡通做为借书证使用的情况
作者与日期:
2013-7-24日,LSH,版本号1.0
思考:
读者分成教师和学生2个概念时,用例有何不同?
2.变更借书证
变更借书证类别、有效期、所在单位等,以及其它信息;借书证号不可更改。
用例(略要求自己完成)
3.挂失借书证*
用例名称:
挂失借书证
参与者:
借书证管理员、读者
综述:
用例起始于读者来到借书证管理办公室,管理员给读者办理借书证挂失。
前置条件:
登录用户具备读者管理权限,且读者已经存在
过程描述:
1.输入借书证号,或输入读者的类别、单位、姓名。
2.点击“查询”。
3.系统查询并显示读者信息。
4.找到其借书证,且读者状态为有效。
5.确认挂失。
后置条件:
修改读者状态为挂失;系统记录读者信息。
业务规则:
借书证挂失后禁止读者借书。
分析:
修改读者概念,增加属性“借书证状态”;并修改办理借书证用例。
思考:
如果待挂失的读者有未还的书,应该怎么处理?
4.解除挂失*
用例名称:
解除挂失
参与者:
借书证管理员、读者
综述:
用例起始于读者来到借书证管理办公室,管理员给读者办理解除借书证挂失。
前置条件:
登录用户具备读者管理权限,且读者已经存在
过程描述:
1.输入借书证号,或输入读者的类别、单位、姓名。
2.点击“查询”。
3.系统查询并显示读者信息。
4.找到其借书证,且读者状态为挂失。
5.确认解除挂失。
后置条件:
修改读者状态为有效;系统记录读者信息。
5.补办借书证*
补办借书证,办理新借书证(新借书证号,其它信息不变),并将原借书证的借阅记录转移到新证上,原借书证注销。
用例(略)
6.注销借书证*
用例(略)
7.批量办理新生借书证*
从教务管理系统导入新生信息,系统生成借书证信息,管理员核实后办理借书证。
用例(略,思考:
联机在线导入,离线导入?
)
8.读者类型管理
从系统的功能完整性来看,还存在一个隐性的功能需求:
读者类型管理,即读者类型信息的插、删、改、查等数据维护操作。
用例(略要求自己完成)
3.2图书管理
包括业务(用例):
图书编目、新书入库、图书信息维护、图书变卖与销毁处理*等。
图书信息=书号、书名、作者、出版社、出版日期、ISBN、分类号、语言、页数、单价、内容简介、图书封面、图书状态等;(图书状态包括:
在馆、借出、遗失、变卖、销毁)
1.图书编目
新书入库前,图书管理员对图书进行图书编目工作,即根据该馆的现有图书分类目录信息编写新书的分类号,需要时根据图书分类法增加新的图书分类条目。
图书信息=…、分类号、…
图书分类目录=分类号、分类名。
图书分类信息主要用于统计,如中文图书分类条目:
-----------------------------------------------------------
分类号分类名
TP自动化技术、计算机技术
TP3计算技术、计算机技术
TP31计算机软件
TP311程序设计、软件工程
TP312程序语言、算法语言
TP311.13数据库理论与系统
TP311.131数据库理论
新书分类号,如图书“C#高级编程(第7版)”可编为:
TP312/3033.2
用例名称:
图书编目(略)
2.新书入库
用例名称:
新书入库
参与者:
图书管理员
前置条件:
登录用户具备图书管理身份和权限
过程描述:
1.输入或系统生成起始书号(BkNO)。
2.输入:
图书信息(书名、作者、出版社、出版日期、语言、页数、单价、ISBN、分类号、内容简介等)、入库数量(N,N>=1)、入馆日期。
3.确认图书入库。
4.图书馆工作人员对图书进行贴书签(分类号)、印书号(或条形码)、盖图书馆印章。
5.图书上架。
后置条件:
创建N个图书对象,书号分别为BkNO、BkNO+1、…、BkNO+N-1,这N本图书的状态均修改为在馆;系统记录图书信息。
注释:
BkNO+N可作为下一次新书入库的起始书号。
思考:
图书信息划分为2个概念是否更为合理?
馆藏图书目录=书名、作者、出版社、出版日期、ISBN、分类号、语言、页数、单价、内容简介、图书封面、入库数量、入馆日期
图书=书号、分类号、图书状态
3.图书信息维护
图书信息的查、删、改等信息维护操作。
用例名称:
图书信息维护(略自己完成,提示:
先查找,再删改)
4.在馆图书变卖与销毁处理*
长期没有借阅记录且失去保存价值的图书可以进行变卖或销毁处理。
用例名称:
在馆图书销毁和变卖处理(略)
3.3借阅管理
包括业务用例:
借书、续借、还书等。
还书过程涉及超期罚款、遗失图书罚款等业务规则。
罚款规则:
(1)超期罚款规则应罚款金额=超期天数*罚款率,罚款率=0.05元/天,罚款率可能随时间或读者类别而变化;实际罚款金额<=应罚款金额,根据实际情况可以进行减免。
(2)遗失罚款规则遗失图书应罚款金额=3*图书单价;实际罚款金额在(1*图书单价,3*图书单价)之间。
(3)遗失罚款规则优先于超期罚款规则。
借书记录=借书证号、书号、借书操作员、借书日期、应还日期
续借记录=借书证号、书号、续借操作员、续借日期、应还日期,续借次数
还书记录=借书证号、书号、还书操作员、还书日期、应还日期,超期天数、应罚款金额,实际罚款金额
分析:
借书记录、续借记录、还书记录等信息可合并为借阅记录,续借可舍去部分信息。
借阅历史记录应该长期保存在数据库中,以便于统计分析,另外,读者对一本书可能多次借阅,故借阅信息应该增加一个标识项:
借书顺序号。
借阅信息=借书顺序号、借书证号、书号、借书操作员、借书日期、应还日期,续借次数、还书操作员、还书日期,超期天数、应罚款金额,实际罚款金额
1.借书
用例名称:
借书
参与者:
借阅管理员、读者
综述:
用例起始于读者带着图书来到图书借阅大厅,管理员给读者办理借书手续。
前置条件:
登录用户具备借阅管理权限。
过程描述:
(1)管理员输入借书证号,点击“查询读者”。
(2)系统查询读者信息、未归还图书信息(含超期),并进行显示。
(3)系统判断读者可否借书(借书证状态为有效,已借书数量小于可借书数量,不存在超期未归还图书)。
若不可借书,则禁止借书。
(4)管理员输入待借图书的书号,点击“查询图书”。
(5)系统查询,并显示图书信息。
(6)系统判断图书是否在馆,若不在馆,则禁止借书。
(7)管理员点击“借书”。
后置条件:
创建借阅记录对象(借书顺序号由系统自动产生,借书证号和书号为上述输入值,借书操作员=登录用户,借书日期=系统日期,应还日期=系统日期+可借书天数,续借次数=0,还书日期=NULL,还书操作员=NULL),并标记为未归还;修改读者对象的已借书数量+1;修改图书状态为借出;系统记录借阅对象、读者对象、图书对象。
业务规则:
(1)借书证状态为挂失、注销者不能借书;
(2)借书数量不能超过可借书数量;(3)有超期未归还图书者不能借书。
注释:
未归还图书状态可采用还书日期为空(NULL)来标记,或另加属性表示是否还书。
修改读者信息:
增加“已借书数量”;修改用例办理借书证:
后置条件中,已借书数量=0。
练习:
修改用例以满足读者携带多本图书进行借书的要求。
2.续借
用例名称:
续借
参与者:
借阅管理员、读者
前置条件:
登录用户具备借阅管理权限、图书状态为借出
过程描述:
(1)输入待续借图书书号。
(2)系统查询并获取图书对象、未归还状态的借阅记录对象、及其读者对象,并进行显示。
(3)系统判断可否续借(续借次数<可续借次数,读者状态为有效)。
(4)点击“续借”。
后置条件:
修改借阅记录对象(续借次数+1,应还日期+=可借书天数),图书状态为借出,并保存到数据库中。
业务规则:
(1)借书证状态为挂失、注销者不能续借;
(2)续借次数不能超过可续借次数。
注释:
续借前后图书状态应为借出
3.还书
还书用例需要处理超期罚款、遗失图书罚款处理2种情况。
用例名称:
归还图书(略要求自己完成,完成罚款处理者,教师可酌情加分)
3.4用户登录与用户管理
包括用例:
用户登录、密码修改、用户管理*,为本系统的基础和主要功能。
用户包括2类:
读者、管理员。
其中,管理员用户权限是4种角色的组合:
借书证管理、图书管理、借阅管理、系统管理;系统管理员负责所有管理员用户及其权限的管理,借书证管理员负责读者管理(即借书证管理)。
管理员是读者,但读者不一定是管理员;读者与管理员间存在(1对0..1)联系。
读者信息+=密码。
管理员信息=用户号、用户名、密码、管理角色
管理角色设计:
可采用4位二进制,借书证管理(0001)2=1、图书管理(0010)2=2、借阅管理(0100)2=4、系统管理(1000)2=8。
如表示图书管理和借阅管理权限:
2+4=6;判断7是否具备图书管理权限:
7位与2,即(0111)2位与(0010)2=(0010)2,表示有此权限。
分析:
将管理员信息合并到读者中,可简化概念,此时,非管理员的管理角色(0000)2=0。
好处:
简化用户登录用例;坏处:
概念不够清晰,给用户管理带来不便。
第1个迭代周期采用简化概念设计。
另外也可用4个逻辑数据项分别表示4个管理角色。
读者信息+=密码、管理角色。
需修改用例办理借书证(自己完成)。
1.用户登录
用例名称:
用户登录
参与者:
读者或管理员
前置条件:
无
过程描述:
1.输入用户号(即借书证号)、密码;密码采用掩码“*”号显示。
2.点击“登录”。
3.系统根据借书证号获取读者对象。
3a.未获取读者对象时,显示无此用户,转入1;
3b.密码未匹配时,显示密码错误,并清空密码,转入1;
4.进入系统主程序界面。
后置条件:
根据登录用户权限显示或隐藏相应的系统功能(菜单等)。
待解决问题:
1.挂失或注销借书证者不能登录。
注释:
该登录用户(读者)对象应为全局可见
系统功能与用户角色之间的关系参见“表1系统功能与用户角色关系表”。
2.密码修改
用例名称:
修改密码
参与者:
用户
综述:
用户登录后修改自己的登录密码。
..(略)
3.用户管理*
用例名称:
用户管理
参与者:
系统管理员、图书馆工作人员
综述:
系统管理员对图书馆工作人员进行权限管理。
前置条件:
登录用户为系统管理员,图书馆工作人员需先办理借书证
过程描述:
1.输入借书证号,或输入读者的类别、单位、姓名。
2.点击“查询”。
3.系统查询,并显示读者信息。
4.找到借书证后,设置该读者的管理角色。
5.确认完成。
后置条件:
修改读者的管理员角色,系统记录读者信息。
注释:
管理角色有4种:
借书证管理、图书管理、借阅管理、系统管理
3.5读者查询与预约借书*
读者(非管理员用户)的功能需求,包括用例:
未归还图书查询与续借*(含超期、即将到期查询操作)、预约借书*(含在馆图书查询操作)等。
该类读者所使用的功能最好是采用web程序实现,Web程序功能可包括:
读者登录、密码修改、未归还图书查询与续借*、预约借书*等。
用例名称:
未归还图书查询与续借(略,思考:
与续借用例有不同吗?
)
用例名称:
预约借书(略,思考:
对借书用例有何影响?
)
3.6统计与报表*
包括:
馆藏图书统计、借阅情况统计、借阅时段统计等。
馆藏图书统计可按图书类别、入馆时间统计图书数量、金额等,可得图书分布情况;借阅情况统计可按单位(含专业、年级)、图书类别、借阅时间(年、学期、月份)等统计借阅次数和天数,统计结果可作为订购新书的参考依据;借阅时段统计按工作日(星期一、二、、、)和时段(8:
00-8:
30、8:
30-9:
00、、、)统计借还书次数,得借阅工作量,并可依此进行人员安排。
用例(略)
3.7数据备份*
用户备份是对SQLServer数据库进行备份,由系统管理员操作。
3.8系统功能与用户角色
表1系统功能与用户角色关系表
序号
系统功能
借书证管理
图书管理
借阅管理
系统管理
读者
1
读者管理
√
(√)
2
图书管理
√
3
借阅管理
√
4
用户登录
√
√
√
√
√
5
密码修改
√
√
√
√
√
6
用户管理
√
7
读者预约
√
√
√
√
√
8
统计与报表
√
√
√
√
9
数据备份
√
3.9领域模型
领域概念小结
读者=读者号(借书证号)、姓名、性别、所在单位、电话、邮箱地址、办证日期、照片、借书证状态、已借书数量、密码、管理角色。
(借书证状态:
有效、挂失、注销)
读者类别=读者类别号、读者类别名称、可借书数量、可借书天数、可续借次数,罚款率,证件有效期。
图书=书号、书名、作者、出版社、出版日期、ISBN、分类号、语言、页数、单价、内容简介、图书封面、图书状态。
(图书状态包括:
在馆、借出、遗失、销毁、卖出)
借阅信息=借书顺序号、读者号、书号、借书操作员、借书日期、应还日期、续借次数、还书操作员、还书日期,超期天数、应罚款金额、实际罚款金额。
领域模型
图1图书管理系统概念模型(V1)
四.总体设计
1.读者类别表(TB_ReaderType)
序号
字段名
数据类型
说明
1
rdType
SmallInt
读者类别【主键】
2
rdTypeName
Nvarchar(20)
读者类别名称【唯一、非空】
3
CanLendQty
Int
可借书数量
4
CanLendDay
Int
可借书天数
5
CanContinueTimes
Int
可续借的次数
6
PunishRate
Float
罚款率(元/天)
7
DateValid
SmallInt
证书有效期(年)【非空,0表示永久有效】
2.读者信息表(TB_Reader)
序号
字段名
数据类型
说明
1
rdID
Int
读者编号/借书证号【主键】
2
rdName
nvarchar(20)
读者姓名
3
rdSex
nchar
(1)
性别,男/女
4
rdType
SmallInt
读者类别【外键TB_ReaderType】【非空】
5
rdDept
nvarchar(20)
单位代码/单位名称
6
rdPhone
nvarchar(25)
电话号码
7
rdEmail
nvarchar(25)
电子邮箱
8
rdDateReg
datetime
读者登记日期/办证日期
9
rdPhoto
image
读者照片
10
rdStatus
nchar
(2)
证件状态,3个:
有效、挂失、注销
11
rdBorrowQty
Int
已借书数量(缺省值0)
12
rdPwd
nvarchar(20)
读者密码(初值123),可加密存储
13
rdAdminRoles
SmallInt
管理角色,0-读者、1-借书证管理、2-图书管理、4-借阅管理、8-系统管理,可组合
分析提示:
(1)可将管理员另外建表,与读者信息分开单独进行设计。
(2)单位rdDept可以采用名称,若采用代码则需另建一张表:
单位代码与名称对照表,这样便于按单位统计。
(3)管理角色(rdAdminRoles)也可设计为4个bit类型字段。
3.图书信息表(TB_Book)
序号
字段名
数据类型
说明
1
bkID
Int
图书序号【标识列,主键】
2
bkCode
Nvarchar(20)
图书编号或条码号(前文中的书号)
3
bkName
Nvarchar(50)
书名
4
bkAuthor
Nvarchar(30)
作者
5
bkPress
Nvarchar(50)
出版社
6
bkDatePress
datetime
出版日期
7
bkISBN
Nvarchar(15)
ISBN书号
8
bkCatalog
Nvarchar(30)
分类号(如:
TP316-21/123)
9
bkLanguage
SmallInt
语言,0-中文,1-英文,2-日文,3-俄文,
4-德文,5-法文
10
bkPages
Int
页数
11
bkPrice
Money
价格
12
bkDateIn
DateTime
入馆日期
13
bkBrief
Text
内容简介
14
bkCover
image
图书封面照片
15
bkStatus
NChar
(2)
图书状态,在馆、借出、遗失、变卖、销毁
说明:
bkCode为前文中的书号,这里没有设计为关键字,而增加bkID字段作为表关键字,其原因为:
防止新书入库时起始书号输入错误时,因关键字而不易修改。
4.借阅信息表(TB_Borrow)
序号
字段名
数据类型
说明
1
BorrowID
Numeric(12,0)
借书顺序号【主键】
2
rdID
Int
读者序号【外键TB_Reader】
3
bkID
Int
图书序号【外键TB_Book】
4
ldContinueTimes
Int
续借次数(第一次借时,记为0)
5
ldDateOut
DateTime
借书日期
6
ldD