图书管理系统详细设计文档格式.docx
《图书管理系统详细设计文档格式.docx》由会员分享,可在线阅读,更多相关《图书管理系统详细设计文档格式.docx(67页珍藏版)》请在冰豆网上搜索。
![图书管理系统详细设计文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/3/62318880-6696-4519-8e36-cde0a07ae4f9/62318880-6696-4519-8e36-cde0a07ae4f91.gif)
根据《图书管理系统》的概要设计,本系统按照功能角度分解,可以分为客户端子系统和管理端子系统。
按照需求分析文档中的规格要求,使用条形码扫描器进书、借书、还书,使得信息传递准确、流畅。
同时,系统最大限度地实现易安装,易维护性,易操作性,运行稳定,安全可靠。
软件结构
系统由3大模块,6小模块组成:
序号编号名称
01登陆模块
02管理模块
031图书信息查询模块
032学生信息查询模块
021入库管理模块
022学生借书模块
023学生还书模块
024图书注销模块
040基础信息设置
3详细设计概述
由于本系统采用了基于struct体系结构的设计,即采用MVC的三层设计模式,采用面向对象的Java语言以及JSP的脚本语言。
所以,基本采用面向对象的设计方法。
在整个的开发过程中,尽可能采用复用的原则,例如采用标签库,统一数据库的基本操作,统一结果显示等。
本文档的详细设计主要是按照Struct的MVC的三个层次分别编制视图层、控制层和模型层模块的伪代码。
为下一步的编码提供基础。
伪代码(Pseudocode)是一种算法描述语言。
使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言实现。
因此,伪代码必须结构清晰,代码简单,可读性好,并且类似自然语言。
4程序描述
01登陆模块
具体格式见下表:
功能编号
01
功能名称
登陆模块
内容
功能流程图
所属业务
图书馆管理
所属项目
图书馆管理系统
功能流程图如下图所示。
需要说明的问题:
(1)录入项检测使用javascript实现(各项必须非空)
(2)登陆.jsp页面也包含查询按钮,在此的登陆.jsp提交的数据只是用户名和密码。
功能描述
(1)功能类型:
查询数据
(2)功能描述:
提高系统的安全性
(3)前提业务:
无
(4)后继业务:
02(管理模块)
(5)功能约束:
权限约束
(6)约束描述:
(7)操作权限:
图书馆管理员
界面设计
(1)基础信息处理
动作说明:
步骤
名称
描述
登陆
点击登陆按钮提交数据到登陆数据处理.jsp页面
02
重至
点击退重至按钮将当前信息恢复原先状态
03
图书信息查询
点击将页面转至到图书信息查询.jsp页面
04
学生信息查询
点击将页面转至学生信息查询.jsp页面
05
基础信息
点击将显示基础信息
(2)数据要求
数据查询
(2)数据描述:
页面显示录入字段如下:
字段名称
长度
录入方式
是否非空项
数据检验
默认显示
管理员ID
10
文本框
Y
N
管理员密码
15
password
登陆数据处理.jsp的内部逻辑
登陆数据处理:
关键点两点:
1,数据库连接;
2,记录登陆信息及信息处理;
1,数据库连接:
如下:
publicclasslib_system_ConnextendsObject{
publiclib_system_Conn(){
}
privateConnectionconn=null;
privateResultSetrs;
Stringre="
"
;
//设置你的数据库ip
Stringdbip="
127.0.0.1"
//设置你的数据库用户名和密码:
Stringuse="
root"
Stringpass="
//设置您的数据库名
StringdbName="
lib_system"
publicjava.sql.ConnectiongetConn(){
try{
Class.forName("
org.gjt.mm.mysql.Driver"
).newInstance();
Stringurl="
jdbc:
mysql:
//"
+dbip+"
:
3306/"
+dbName+"
?
user="
+use+"
&
password="
+pass+"
useUnicode=true&
characterEncoding=GBK"
;
conn=DriverManager.getConnection(url);
}
catch(Exceptione){
e.printStackTrace();
returnthis.conn;
}
//在Mysql建立lib_system数据库,之后将与数据操作相关数据与该数据库相连;
2,记录登陆信息及信息处理:
当用户点击“登陆”按钮之后,数据将提交到登陆数据处理.jsp页面。
取得帐号密码这两个从页面传入的值,然后跟数据库当中管理员表中的账号和密码比较。
如果正确的话,在JSP的SESSION中存入一个标记属性,表示当前已经有管理员登陆了。
处理完毕后,跳转到管理页面,如果失败,则提示登陆失败,并重新进入到登陆页面。
具体的逻辑如下:
<
%
Stringusername=ParamUtil.getString(request,"
admin_ID"
);
//取得用户名
Stringpassword=ParamUtil.getString(request,"
admin_password"
//取得密码
StringerroMsg="
//错误码
if(username!
=null&
password!
=null)
try
{
SkinUtil.login(request,response,admin_ID,admin_password);
//在JSP的session中存如一个标记属性,表示当前已经有管理员登陆了
Session.setAttribute(“admin_ID”,admin_ID);
response.sendRedirect("
login_process.jsp"
catch(UserNotFoundExceptione)
erroMsg="
错误的用户名和密码"
login_process.jsp?
+response.encodeURL(erroMsg));
else{
out.println("
请填写好你的个人信息!
%>
存储分配
管理员表:
(admin)
序号
字段名
类型
精度
小数位数
默认值
允许空
主键
说明
1
(admin_ID)管理员ID
Int
√
2
(admin_password)管理员密码
Char
3
(admin_quanxian)权限
Nvarchar
02管理模块
具体格式见下表
管理模块
功能流程图如下所示:
在选择相应的业务时,需要在当前的页面显示;
并且在管理页面内,默认显示图书查询页面。
其他
(2)功能概述:
总体归纳图书馆管理功能
登陆模块(01)
(4)后续业务:
021,022,023,024,03
图书馆管理人员
(1)基本信息处理
动作说明如下:
入库管理
点击按钮将页面转至入库管理.jsp页面
学生借书
点击按钮将页面转至学生借书.jsp页面
学生还书
点击按钮将页面转至学生还书.jsp页面
图书注销
点击按钮将页面转至图书注销.jsp页面
图书查询
点击按钮将页面转至图书查询.jsp页面
功能类型:
031图书信息查询模块
具体格式如下:
031
图书信息查询模块
功能流程图如下图:
录入项检测使用javascript来实现(各项非空);
操作权限:
面向所有用户
显示查询结果
没有约束;
(1)基础信息处理
下表是动作说明:
确定
点击按钮提交数据到图书查询数据处理.jsp页面
点击按钮将页面转至学生信息查询.jsp页面
页面显示字段见下表:
请选择查询类型
20
下拉列表
请输入查询内容
200
(3)图书信息查询的输出项
书名
图书类型
作者
译者
ISBN
出版社
价格
书架名称
现存量
简介
模块内部逻辑
1,查询.jsp用于显示界面的内容,给用户显示一个查询接口
2,主函数.jsp用来调度所有的页面,它根据传入的参数来决定包含哪一个jsp页面来显示内容;
在lib_query.jsp页面中,
它根据传入的参数来决定包含哪一个jsp页面来显示内容;
则可以通过<
jsp:
includepage=”<
%=……%>
”/>
利用jsp:
include标签来被动态加载发送到相应页面;
3,处理.jsp用来处理数据查询和显示查询到的结果列表。
在这个页面中,数据要求是以列表的形式显示到输出页面。
由于查询到的结果可能过多,所以采用分页形式显示;
对于分页功能的内部逻辑:
4,显示.jsp用来显示查询到的图书的各项属性。
图书目录文件(Book):
(BookID)图书编号
自动编号
(TXM)条形码
nvarchar
(Title)书名
4
(TSLX)图书类型
50
5
(Author)作者
6
(Translator)译者
7
(ISBN)ISBN
8
(CBS)出版社
30
(SJMC)书架名称
11
(XCL)现存量
Smallint
12
(KCZL)库存总量
13
(RKSJ)入库时间
Datatime
14
(CZY)操作员
(JJ)简介
16
(JCCS)借出次数
17
(SFzhuxiao)是否注销
18
(BookZT)图书状态
借书文件表(JSWJB):
外键
(JYID)借阅编号
(StuID)学生编号
(JYSJ)借阅时间
(DQSJ)到期时间
(XJCS)续借次数
(ZT)状态
navarchar
032学生信息查询模块
032
学生信息查询模块
(8)功能类型:
(9)功能概述:
(10)前提业务:
(11)后继业务:
(12)功能约束:
(13)约束描述:
(14)操作权限:
(4)基础信息处理
点击按钮将页面转至图书信息查询.jsp页面
(5)数据要求
(3)功能类型:
(4)数据描述:
请输入学号
(6)学生信息查询的输出项
学生学号
姓名
性别
生日
证件号码
联系电话
登记日期
有效期至
已借书数
5,Search.jsp用于显示界面的内容,给用户显示一个查询接口
6,Index.jsp用来调度所有的页面,它根据传入的参数来决定包含哪一个jsp页面来显示内容;
在index.jsp页面中,
7,List.jsp用来显示查询到的结果列表。
8,View.jsp用来显示查询到的学生的各项属性。
★★注释:
学生信息查询模块与图书查询模块属于同一类功能。
实现可以完全类似。
学生文件:
字段
XSID
学生编号
Name
Sex
ZJH
25
LXDH
40
DJRQ
datetime
YXQZ
YJSS
smallint
9
RuleID
学生规则ID
int
ZT
是否挂失
借书文件:
借阅编号
图书编号
借阅时间
到期时间
续借次数
操作员
状态
021入库管理
021
入库管理模块
(1)执行数据库操作的时候要验证权限
(2)录入项检验用javascript来实现(选项非空)
添加数据
增加图书目录文件中的图书信息。
1,基础信息处理
动作说明如下表:
保存
点击按钮提交数据到入库数据处理.jsp页面
退出
点击按钮将当前页面关闭
2,数据描述
数据增加。
页面录入字段见下表:
书号
条形码
版次
图书类别
单价
录入时间
默认系统时间,格式:
年月日
只需程序记录
显示在入库界面
录入人
默认系统登陆人员
3,入库数据处理内部逻辑:
图书入库采用表格进行多行添加:
利用javaBean来编写一个BookBean来管理图书。
在BookBean类中增加记录的公共接口来实现入库数据的添加。
具体的类设计如下:
Publicintinsert(Hashtablehash){
intintID=makeID("
Book"
"
BookID"
true);
Vectorvect=newVector();
vect.add("
vect.add(addVector("
String.valueOf(intID),"
NUM"
));
Title"
ds.toString((String)hash.get("
TITLE"
)),"
CHAR"
Author"
AUTHOR"
ISBN"
。
//还有其他选项,同上格式。
returninsertRecord(vect);
该方法有一个参数,是java.util.Hashtable类,在调用该方法前,先用和hashtable的put方法将字段名和该条记录的值存入hashtable中,然后将这个hashtable作为参数传入insert方法中。
在insert方法的最后,调用ParentBean中的insertRecord方法,insertRecord可以根据传入的参数自动的生成增加记录的SQL语句并通过JDBC发送到数据库。
正对ParentBean类:
主要是实现对数据库的各种操作:
如与数据库的连接,对数据库的操作。
图书目录文件:
Nvarc