资源描述
软件工程项目报告
----图书管理系统
班 级:
项目经理:
项目组成员:
模块
负责人
需求分析
用例图
代码设计
数据库设计
界面设计
目录
第一章 绪论……………………………………………………………………………………………………………………
1.1 项目背景…………………………………………………………………………………………………………….
1.2 编写目的…………………………………………………………………………………………………………….
第二章 需求分析…………………………………………………………………………………………………………..
2.1 系统功能需求分析…………………………………………………………………………………………….
2.2 主要参与者………………………………………………………………………………………………………..
2.3 用例图………………………………………………………………………………………………………………..
2.4 系统用例一览表…………………………………………………………………………………………………
2.5 用例规约……………………………………………………………………………………………………………
2.7 时序图………………………………………………………………………………………………………………..
第三章 系统设计……………………………………………………………………………………………………………
3.1 系统实体总类图以及介绍…………………………………………………………………………………
3.2 相关数据库的设计……………………………………………………………………………………………
3.2.1 E-R图……………………………………………………………………………………………………………
3.2.2数据库的设计……………………………………………………………………………………………….
3.3 主界面设计………………………………………………………………………………………………………..
3.3.1 登录/注册界面设计……………………………………………………………………………………...
3.3.2 管理员操作页面…………………………………………………………………………………………
3.3.3 读者用户管理界面………………………………………………………………………………………
3.3.4 代码设计………………………………………………………………………………………………………
第四章 结束语......................................................................................................................
第一章 绪论
1.1项目背景
随着时代的发展,计算机技术越来越深入各行各业,为广大的用户提供了更为周到和便捷的服务。目前各行各业广泛使用专用系统,其用户群十分庞大,因此,设计开发好一个系统是十分重要。近年来,随着用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术的广泛应用,向用户提供的服务将越来越丰富,越来越人性化。本系统通过强大的计算机技术给图书管理人员和读者借、还书带来便利。本系统除了图书馆内管理的一般功能除外,还包括网上在线查询图书信息、查询本人的借阅情况。
1.2编写目的
本系统最终将达到减少了人力与管理成本,提高信息准确度,改进管理和服务,建立高效的平台,提高信息处理速度和利用率,系统设计优良,界面设计精美、快捷,人性化设计,后台管理功能好、效率高,更简便、信息化程度更高的图书管理流程。
第二章 需求分析
2.1系统功能需求分析
设计图书馆管理系统。此系统要达到方便读者查找图书,阅读图书,而且也要方便图书馆管理员的管理工作。
管理员:对图书的订购、摆放、添加、删除、查询、统计、修改图书信息。
对读者的信息进行安全管理,所谓安全管理也就是对读者的所有注册信息进行保密管理,也就是只有此管理员可以获取和查看读者的信息(读者本人也可以查看),其他人则无权查看与修改。对读者的借还信息进行管理,即当读者借阅图书时将读者的借阅信息保存,同时将某图书被借阅的信息保存;当读者归还图书时可以及时将归还信息保存,实现消除该读者的借书信息,以方便读者继续借阅书籍。
读者进行借阅书籍时,只需要找到管理员即可获得自己想要阅览的书籍的信息,这样可以减少读者查询书籍的时间,而其余的工作则由管理员们来协调完成,这样提高了图书馆的工作效率,同时也让读者可以获得一个更好的读书方式。
读者除了借阅书籍以外,还可以对自己的注册信息进行修改,但是一旦注册成功,则只能修改个人密码,其他人则无权修改。
2.2主要参与者
1、图书馆管理员:
管理员要为每个读者建立借阅账户,并給读者发放不同类别的借阅卡(借阅卡可提供卡号、读者姓名),账户内存储读者的个人信息和借阅记录信息。持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。
2、借阅者:
借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括照片),供管理员人工核对。然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。
添加读者
2.3用例图
登 录
删除读者
修改图书
修改个人信息
添加图书
查看借阅信息
删除图书
查看图书数目
删除借书信息
系统维护
添加借书信息
查看读者信息
图一 管理员用例图
借阅图书
预约借读图书
注 册
续借图书
归还图书
查看图书数目
查看借阅信息
修改个人信息
图二 读者用例图
2.4 用例描述
用例名称:图书管理员
用例目的:完成登记注册、统计查询、借书、还书等操作;
参与者:数据库管理员
事件流:
第一步:进入管理员登陆界面
讨论区成员:选择相应的操作区
系统:将管理员的增删改查权限显示出来即读者信息,图书信息,统计条件信息,读者情况,图书情况,统计结果;
加工名:录入新读者
加工编号:1.1
简要描述:将新的读者信息登记到读者信息表中
输入数据流:新读者数据,读者类别
输出数据流:有效读者信息
加工逻辑:
输入读者信息
选择读者类别
执行SQL语句,将完整的读者信息写入读者信息表 u
加工名:读者信息修改
加工编号:1.2
简要描述:修改指定的读者信息(卡号、已借书本数不可修改)
输入数据流:待修改的读者信息
输出数据流:修改后的读者信息
加工逻辑:
输入读者编号
执行SQL语句,从读者信息表中找出该读者的详细信息
修改除借书卡号和已借书本数以外的信息
执行SQL语句,将修改后的读者信息写入读者信息表中 u
加工名:读者信息删除
加工编号:1.3
简要描述:将已归还全部图书的指定读者信息从读者信息表中删除
输入数据流:待删除的读者信息,借书状况信息
输出数据流:待删除的读者信息
加工逻辑:
输入读者借书卡号
执行SQL语句,从读者信息表中找出该读者的详细信息
IF 该读者处于借阅状态的书本数>0 THEN
提示“该读者还有未还的图书,暂时不能删除”
ELSE
执行SQL语句,将该读者的信息从读者信息表中删除
ENDIF u
加工名:添加图书;
加工编号:2.1;
简要描述:将新购入的图书登记入库,便于读者随时借阅;
输入数据流:新图书信息,图书类别;
输出数据流:有效图书信息;
加工逻辑:
输入新图书信息
选择相应的图书类别
执行SQL语句,将新书信息写入图书信息表,记录登记人姓名,图书状态设置为“在库” 加工名:修改图书
加工编号:2.2
简要描述:将修改后的图书信息(图书编号和状态不能修改)重新写入图书信息表中;
输入数据流:待修改的信息;
输出数据流:修改的图书信息
加工逻辑:
输入图书编号
执行SQL语句,从图书信息表中查询该图书的详细信息
IF 图书状态为“借阅中” THEN
提示“图书不在库,不能修改”
ELSE
执行SQL语句,将修改后的图书信息写入图书信息表
ENDIF u
加工名:删除图书
加工编号:2.3
简要描述:将报废的或已经遗失的图书从系统中删除
输入数据流:待删除信息,图书状态信息;
输出数据流:删除的图书信息
加工逻辑:
输入图书编号
执行SQL语句,从图书信息表中查询该图书的详细信息
IF 图书状态为“借阅中” THEN
提示“图书处在“借阅中”,暂时不能删除”
ELSE
执行SQL语句,将该图书信息从图书信息表中删除
ENDIF u
加工名:查询图书
加工编号:2.4
简要描述:按设置的条件从图示信息表中查询满足条件的图书信息
输入数据流:图书查询条件,图书信息;
输出数据流:图书查询结果
加工逻辑:
输入查询条件
执行SQL语句,从图书信息表中查询满足条件图书的详细信息 u
加工名:借书管理
加工编号:3.1
简单描述:通过借书卡号和可借的图书编号完成图书借阅,并在相应的表中添加记录
输入数据流:读者信息,图书信息,操作员姓名,预借信息
输出数据流:已借数,借书信息,图书状态
加工逻辑:
执行SQL语句,分别从读者信息表和图书信息表读取指定的读者信息图书信息
IF 读者借书限额已满 THEN
提示“借书限额已满,暂时不能借阅新书”
ENDIF
IF 图书状态为“借阅中” THEN
提示“该书目前不在库,不能借阅”
ENDIF
IF 续借信息为真 THEN
IF 该读者的续借限额未满 THEN
执行SQL语句,将借书信息表中相应记录的限还日期延长
返回借书界面,清空有关文本框
ELSE
提示“续借限额已满,不能再续借”
ENDIF ELSE
执行SQL语句,读者信息表中该读者的已借书数增值
执行SQL语句,图书信息表中该书的状态更改为“借阅中”
执行SQL语句,将图书编号、书名、借书卡号、读者姓名、借书日期、限还 日期、
当前操作员姓名等信息写入借书信息表中
返回借书界面,清空有关文本框
ENDIF u
加工名:还书管理
加工编号:3.3
简单描述:归还读者借阅的图书,同时使读者的当前借书总数减值,使归还的图书
状态为“在 库”,使相应的借书记录状态为“已还”。
输入数据流:预还信息,操作员姓名,罚金金额
输出数据流:已借数,图书状态,借书记录状态,还书信息
加工逻辑:
执行SQL语句,从借书信息表中查询指定的借书记录
IF 过期金额==0 AND 损坏罚金==0 THEN
执行SQL语句,向还书信息表中写入罚金信息为0的含操作员姓名的还书 记录
ELSE
执行SQL语句,向还书信息表中写入罚金信息不为0的含操作员姓名的还 书记录
ENDIF
执行SQL语句,将图书信息表中该图书状态更改为“在库”
执行SQL语句,将读者信息表中当前读者的当前借书总数减值
执行SQL语句,将借书信息表中相应的借书记录状态更改为“已还”
加工名:图书总量统计
加工编号:4.1
简单描述:统计系统中的图书总量或按图书类别统计图书数
输入数据流:总量统计条件,统计项信息
输出数据流:图书总量信息
加工逻辑:
IF 图书类别不为空
THEN
执行SQL语句,统计指定类别的图书数量 ELSE
执行SQL语句,统计所有图书的总量 ENDIF
2.4 系统用例一览表
系统用例汇总
模块
用例名称
用例ID
说明
管理员相关
1.查看图书书目
UC-01
1. 管理用户
2. 管理图书
2.系统维护
UC-02
3.修改个人信息
UC-03
4.添加图书
UC-04
5.删除书目
UC-05
6.修改书目
UC-06
7.查看读者信息
UC-07
8.查看借阅信息
UC-08
9.添加读者
UC-09
10.删除读者
UC-10
11.添加借阅信息
UC-11
12.删除借阅信息
UC-12
读者相关
13.查看借阅信息
UC-13
14.查看图书书目
UC-14
1. 注册登录
2. 借阅图书
3. 修改个人信息
15.预约借读图书
UC-15
16.修改个人信息
UC-16
17.借阅图书
UC-17
18.归还图书
UC-18
19.续借图书
UC-19
20.注册
UC-20
2.5用例规约
添加用户用例规约
用例编号
UC-09
用例名称
添加读者
用例描述
管理员增加读者的过程
参与者
管理员
前置条件
登录
后置条件
无
基本路径
1.参与者提出增加读者的请求
2.系统显示增加读者界面
3.参与者注册
4.管理员分配权限类型
5.系统保存用户数据
非功能需求
补充说明
添加图书用例规约
用例编号
UC-06
用例名称
添加图书
用例描述
管理员增加图书的过程
参与者
管理员
前置条件
登录
后置条件
无
涉众利益
基本路径
1.系统显示增加图书书目界面
2.系统保存用户数据
扩展点
字段列表
业务规则
非功能需求
补充说明
查看借阅信息用例规约
用例编号
UC-08、UC-13
用例名称
查看借阅信息
用例描述
管理员或读者查看借阅信息的过程
参与者
管理员、读者
前置条件
登录
后置条件
无
涉众利益
基本路径
1.用户登录
2.系统显示借阅信息界面
扩展点
字段列表
业务规则
非功能需求
补充说明
查看读者信息用例规约
用例编号
UC-07
用例名称
查看读者信息
用例描述
管理员或读者查看读者信息的过程
参与者
管理员、读者
前置条件
登录
后置条件
无
涉众利益
基本路径
1.用户登录
2.系统显示读者信息界面
扩展点
字段列表
业务规则
非功能需求
补充说明
查看图书书目用例规约
用例编号
UC-01、UC-14
用例名称
查看图书书目
用例描述
管理员或读者查看图书书目的过程
参与者
管理员、读者
前置条件
登录
后置条件
无
涉众利益
基本路径
1.用户登录
2.系统显示图书书目界面
扩展点
字段列表
业务规则
非功能需求
补充说明
添加借阅信息用例规约
用例编号
UC-011
用例名称
添加借阅信息
用例描述
管理员添加借阅信息的过程
参与者
管理员
前置条件
登录
后置条件
无
涉众利益
基本路径
1.管理员登录
2.系统显示借阅信息界面
扩展点
字段列表
业务规则
非功能需求
补充说明
注册用例规约
用例编号
UC-20
用例名称
注册
用例描述
用户注册的过程
参与者
读者
前置条件
无
后置条件
无
涉众利益
基本路径
1.用户匿名进入系统
2.系统注册登录界面
3.注册成功后。系统保存数据信息并自动登录该用户。
扩展点
字段列表
业务规则
非功能需求
补说明
注册用户必须是本人真实信息!
2.6时序图
图1:登陆时序图
图2:注册更新个人信息时序图
图3:添加图书时序图
图4:修改图书时序图
图5:删除图书时序图
图6:系统维护时序图
图7:添加读者时序图
图8:删除读者时序图
图9:查看借阅列表时序图
图10:查看读者信息时序图
图11:查看图书书目时序图
图12:删除借书信息时序图
图13:添加借书信息时序图
图14:修改个人信息时序图
图15:预约借阅图书时序图
图16:归还图书时序图
图17:借阅图书时序图
图18:续借图书时序图
第三章 系统设计
3.1系统实体总类图以及介绍
系统边界类
序号
名称
备注
BO-1
系统主界面
登录、注册、修改个人密码
BO-2
管理员界面
查看图书表、读者表、借还表,添加图书、读者,删除图书、读者,查找图书。
BO-3
读者界面
查看图书列表、借阅列表,借阅图书,归还图书、续借图书,预借图书,查看及修改个人信息等。
BO-4
图书列表界面
显示图书信息,添加、删除、修改、查询图书。
BO-5
读者列表界面
显示读者信息,添加、修改、删除、查询读者。
BO-6
借还列表界面
查看借还信息,续借图书等。
BO-7
修改个人信息界面
修改个人信息
系统实体类
序号
名称
备注
EN-1
图书
EN-2
管理员
唯一管理员
EN-3
读者
系统控制类
序号
名称
备注
CON-1
查看图书信息
图书列表
CON-2
查看读者信息
读者列表
CON-3
查看借还信息
借还列表
CON-4
添加图书信息
图书列表
CON-5
删除图书信息
图书列表
CON-6
修改图书信息
图书列表
CON-7
添加读者信息
读者列表
CON-8
删除读者信息
读者列表
CON-9
修改读者信息
读者列表
CON-10
预订借阅图书
借阅列表
CON-11
归还图书
借阅列表
CON-12
续借图书
借阅列表
CON-13
注册用户
系统主界面
CON-14
修改个人密码
系统主界面
3.2相关数据库的设计
经过对系统的需求分析,我们总结出,该系统数据库设计思路如下(以表格信息表示)。
3.2.1 E-R图
联系方式
姓名
密码
管理员
作者
书名
管理
图书编码
管理
评论
图书
库存量
联系方式
读者
借阅
密码
学号
班级
姓名
出版社
价格
3.2.2数据库的设计
图书信息表
管理员可以对读书进行增、删、改、查等操作,读者可以对读书进行借阅、预定借阅、续借、归还、查询等操作,以下是图书的基本信息。
序号
列名
字段说明
数据类型
长度/位
主键
允许空
1
图书编号
书籍编号
int
8
是
否
2
图书名称
书籍名称
nvarchar
255
否
否
3
作者
书籍作者
nvarchar
255
否
否
4
价格
书籍价格
varchar
6
否
否
5
库存量
书籍册数
Int
8
否
是
6
出版社
书籍的出版社
nvarchar
255
否
否
7
评论
书籍评价
nvarchar
255
否
是
管理员信息表
序号
列名
字段说明
数据类型
长度/位
主键
允许空
1
姓名
管理员姓名
nvarchar
255
是
否
2
密码
管理员密码
Varchar
16
否
否
3
联系方式
管理员电话
Int
16
否
否
读者信息表
读者可以是校内的学生,也可以是校外人士,因此需要的身份验证方式不一样。以下是读者的信息表,以及具体详细。
序号
列名
字段说明
数据类型
长度/位
主键
允许空
1
姓名
读者姓名
nvarchar
255
否
否
2
学号
若是学生,需要学号
Int
16
是
是
3
密码
读者密码
Varchar
16
否
否
4
班级
若是学生,需要班级
nvarchar
255
否
是
5
身份证号
不是学生,需身份证号
Varchar
25
是
是
6
联系方式
读者电话
Int
16
否
是
数据库设计代码:
表的设计:
图书信息表
use library
go
create table bookinfo
(bookNO int not null constraint pk_ISBN primary key,
Bookname nvarchar(255) not null,
bookname varchar(40) not null,
pulishname nvarchar(255) not null,
price varchar(6) not null,
stock int not null,
comment nvarchar(255)
go
读者信息表
use library
go
create table reader
(readerNo int ,
readerName nvarchar(255) not null,
password varchar(16) not null,
class nvarchar(255) ,
ID number varchar(25),
Telephone int
CONSTRAINT readerPK PRIMARY KEY(readerNo)
)
Go
管理员信息表
use library
go
CREATE TABLE Admin
(adminName nvarchar(255) not null,
password varchar(16) not null,
telephone int not null,
CONSTRAINT AdminPK PRIMARY KEY(adminName)
)
Go
存储过程:
图书管理员增加图书的存储过程
描述:
输入:书名,作者,出版社,ISBN号,价格 ,库存
输出:图书编号
过程:向表中插入书名,作者,出版社,ISBN号,价格
create PROCEDURE addbookInfo
@bookNo char(20),
@bookname nvarchar(255),
@author nvarchar(255),
@pulishname nvarchar(255),
@price money varchar(6) ,
@stock int,
@comment nvarchar(255)
as
InsertbookInfo values(@bookNo,@bookName,@author,@pulishname,@price,@stock,@comment )
图书管理员修改图书的存储过程
描述:
输入:图书编号,书名,作者,出版社,图书类别,ISBN号,定价,库存,是否可借
过程:根据图书编号修改表中的书名,作者,出版社,图书类别,ISBN号,定价,库存,是否可借
CREATE PROCEDURE updatebookInfo
@classname nvarchar(255),
@bookName nvarchar(255),
@author nvarchar(255),
@pulishname varchar(255),
@price money varchar(6),
@stock int,
@bookNo output,
as
begin
update bookInfo
set classname=@classname,
bookNo=@bookNo,
bookName=@bookName,
author=@author,
pulishname=@pulishname,
price=@price,
stock=@stock,
where ISBNNo=@ISBNNo
end
图书管理员删除图书的存储过程
描述:
输入:图书编号
过程:根据图书编号删除表中该图书的信息
create proc Deletebook
@bookNo int
as
begin
delete from book
where bookNo=@bookNo
End
图书管理员删除读者信息的存储过程
描述:
输入:读者号
过程:根据输入的读者号删除表中该读者的信息
create proc Deletereader
@readerNo int
as
begin
delete from book
where readerNo=@readerNo
end
3.3主界面设计
3.3.1登陆/注册界面设计
人机界面设计
设计概述
人机界面设计是接口设计的一个重要的组成部分。对于交互式系统来说,人机界面设计和数据设计,体系结构设计及过程设计一样重要。
图书管理系统是基于对话框设计的,用到了三个对话框,分别为登录对话框,书库管理员对话框和借阅人对话框。
在用户登入时验证用户身份,如果是合法用户,则根据数据库中记录的用户权限转到管理员界面或者借阅人界面。
图1 登陆界面
打开登录界面输入用户名和密码,点击登录进入图书管理界面。如果没有请注册账户
图2 注册界面
3.3.2管理员操作界面
选择“图书维护”菜单中的“书的ID”菜单,出现如图所示的输入图书信息界面。
输入信息后,单击“图书查询”按钮
图3 总管理界面
图4 图书管理界面
输书的书名或书的ID点击“图书查询”
图5 借还管理界面
1.借书 选择“图书流通”菜单中的“借书”菜单,。 输入借阅信息后,单击“借书”按钮。
2. 还书 选择“图书流通”菜单中的“还书”菜单, 输入借阅信息后,单击“还书”按钮
3.3.3 读者用户管理界面
图6 读者用户管理用户
图7 修改密码界面
编辑要修改的信息,单击“保存”按钮
图8 读者界面
点击左边的选框可以查询到你要查询的信息
系统响应时间 对于用户的各种操作请求应尽快给出响应,响应时间应控制在1s左右。
出错信息处理 对于用户不符合要求的输入,系统会给出错误提示,并告知其错误原因。
3.4部分代码:
添加图书的代码:
using System.Data.SqlClient;
using System.Data;
public partial class Add : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string constr = "server=.; database=library; trusted_connection=yes";
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand(con);
cmd.Connection = con;
cmd.CommandText = "addbookInfo";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter sp1 = new SqlParameter("@bookname", SqlDbType.NVarChar, 255);
sp1.ParameterName = "@nvarchar";
sp1.Value = bookname.Text;
cmd.Parameters.Add(sp1);
SqlParameter sp2 = new SqlParameter("@author", SqlDbType.NVarChar ,255);
sp2.ParameterName ="@author";
sp2.Value = author.Text;
cmd.Parameters.Add(sp2);
SqlParameter sp3 = new SqlParameter("@pulishnam", SqlDbType.NVarChar, 255);
sp3.ParameterName = "@pulishnam";
sp3.Value = pulishnam.Text;
cmd.Parameters.Add(sp3);
SqlParameter sp4 = new SqlParameter("@price", SqlDbType.VarChar,6);
sp4.ParameterName = "@price";
sp4.Value = FormatString(price.Text);
cmd.Parameters.Add(sp4);
SqlParameter sp5 = new SqlParameter("@stock", SqlDbType.Int);
sp5.ParameterName = "@stock";
sp5.Value = int.Parse(stock.Text);
cmd.Parameters.Add(sp5);
SqlParameter sp7 = new SqlParameter("@comment", SqlDbType.NVarChar,255);
sp7.ParameterName = "@comment";
sp7.Value = System.DateTime.Now.ToString();
cmd.Parameters.Add(sp7);
SqlParameter sp6 = new SqlParameter("@bookNO ", SqlDbType.Int);
sp6.ParameterName = "@bookNO ";
sp6.Direction = ParameterDirection.Output;
cmd.Parameters.Add(sp6);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
int id = int.Parse(sp6.Value.ToString());
if (id > 0)
{
Response.Write("<script>alert('恭喜你,添加成功,感谢您的参与!');parent.location='index.aspx'</script>");
return;
}
else
{
Response.Write("<script>alert('对不起,操作出现错误,请返回!!');parent.location='index.aspx'</script>");
}
}
public string FormatString(string str)
{
str = str.Replace(" ", " ");
str = s
展开阅读全文