软件设计说明书例子
软件设计说明书实例
2014年4月
目录
1
引言 ................................................................................................................................................ 2 1.1 1.2 1.3 1.4 2
编写目的 ............................................................................................................................... 2 项目背景 ............................................................................................................................... 2 定义 ....................................................................................................................................... 2 参考资料 ............................................................................................................................... 3
总体设计 ........................................................................................................................................ 3 2.1 2.2
需求概述 ............................................................................................................................... 3 软件结构 ............................................................................................................................... 4
3 程序描述 ........................................................................................................................................ 6 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10
01登陆模块 .......................................................................................................................... 6 02管理模块 ........................................................................................ 错误!未定义书签。 031图书信息查询模块 ...................................................................... 错误!未定义书签。 032学生信息查询模块 ...................................................................... 错误!未定义书签。 021入库管理模块 .............................................................................. 错误!未定义书签。 022学生借书模块 .............................................................................. 错误!未定义书签。 023学生还书模块 .............................................................................. 错误!未定义书签。 024图书注销模块 .............................................................................. 错误!未定义书签。 接口设计 ............................................................................................. 错误!未定义书签。 测试要点 ........................................................................................................................ 43
文档名称: 详细设计规格说明书 项目名称: 图书馆管理系统 项目负责人:陈新光
编写 TEST _____年_____月_____日
校对 所有小组成员 _____年_____月_____日 审核 所有小组成员 _____年_____月_____日 批准 XXX _____年_____月_____日 开发单位__________________________________________
组员: TEST1 TEST2 TEST3
引言
编写目的
图书管理系统详细设计是设计的第二个阶段,这个阶段的主要任务是在图书管理系统概要设计书基础上,对概要设计中产生的功能模块进行过程描述,设计功能模块的内部细节,包括算法和详细数据结构,为编写源代码提供必要的说明。
概要设计解决了软件系统总体结构设计的问题,包括整个软件系统的结构、模块划分、模块功能和模块间的联系等。详细设计则要解决如何实现各个模块的内部功能,即模块设计。具体的说,模块设计就是要为已经产生的图书管理各子系统设计详细的算法。但这并不等同于系统实现阶段用具体的语言编码,它只是对实现细节作精确的描述,这样编码阶段就可以将详细设计中对功能实现的描述,直接翻译、转化为用某种程序设计语言书写的程序。
项目背景
根据XX学校希望能够充分利用现代科技来提高图书管理的效率,在原有的办公系统基础上进行扩展,将一些可以用计算机来管理的都进行计算机化,使得图书馆管理人员工作更加方便,工作效率也更加的高。
定义
•Mysql:数据库管理软件 •DBMS:数据库管理系统
•Windows 2000/2003/XP:运行环境 •JSP :软件开发语言 •Myeclipse :开发工具
参考资料
《软件工程导论——第5版》 张海藩编著 清华大学出版社
《实用软件工程》
Leszek A.Maciaszek Bruc Lee Liong著
机械工业出版社
总体设计
需求概述
按照需求分析文档中的规格要求,使用条形码扫描器进书、借书、还书,使得信息传递准确、流畅。同时,系统最大限度地实现易安装,易维护性,易操作性,运行稳定,安全可靠。
软件结构
系统由3大模块,6小模块组成:
序号 编号 名称
01 登陆模块 02 管理模块 031 图书信息查询模块 032 学生信息查询模块 021 入库管理模块 022 学生借书模块 023 学生还书模块 024 图书注销模块 040
基础信息设置
程序描述
01登陆模块
具体格式见下表: 功能编号 所属业务
01
功能名称
登陆模块 所属项目
内容
功能流程图
图书馆管理 图书馆管理 系统
编写人 陈新光 完成时间
2007-11-26
页码 第5页
功能流程图
功能流程图如下图所示。
需要说明的问题:
密码。
录入项检测使用javascript实现(各项必须非空)
登陆.jsp页面也包含查询按钮,在此的登陆.jsp提交的数据只是用户名和
功能描述
功能类型:查询数据
功能描述:提高系统的安全性 前提业务:无
后继业务:02 (管理模块) 功能约束:权限约束
约束描述:
操作权限:图书馆管理员
界面设计
基础信息处理
动作说明:
动作编号 A01
动作名称 登陆
动作描述
点击登陆按钮 提交数据到登陆数据处理.jsp页面
A02 重至 点击退重至按钮 将当前信息恢复原先状态
A03 图书信息查询 点击 将页面转至到图书信息查询.jsp页面
A04 学生信息查询 点击 将页面转至学生信息查询.jsp页面
A05
数据要求
基础信息 点击 将显示基础信息
功能类型:数据查询 数据描述:
页面显示录入字段如下:
字段名称 管理员ID
长度 10
录入方式 文本框 password
是否非空项 数据检验 Y Y
N N
默认显示
管理员密码 15
登陆数据处理.jsp的内部逻辑
登陆数据处理:
关键点两点:1,数据库连接;2,记录登陆信息及信息处理;
数据库连接:
如下:
public class lib_system_Conn extends Object{
public lib_system_Conn(){
}
private Connection conn = null; private ResultSet rs; String re =
String dbip =
String dbName =
public java.sql.Connection getConn(){ try{
Class.forName(
=
//在Mysql建立lib_system数据库,之后将与数据操作相关数据与该数据库相连;
conn= DriverManager.getConnection(url); }
catch(Exception e){ e.printStackTrace(); }
return this.conn ; }
记录登陆信息及信息处理:
当用户点击“登陆”按钮之后,数据将提交到登陆数据处理.jsp页面。 取得帐号密码这两个从页面传入的值,然后跟数据库当中管理员表中的账号和密码比较。如果正确的话,在JSP的SESSION中存入一个标记属性,表示当前已经有管理员登陆了。处理完毕后,跳转到管理页面,如果失败,则提示登陆失败,并重新进入到登陆页面。 具体的逻辑如下:
kk
String username=ParamUtil.getString(request,
String password=ParamUtil.getString(request,
if(username!=null&&password!=null) try {
SkinUtil.login(request,response,admin_ID,admin_password);
//在JSP的session中存如一个标记属性,表示当前已经有管理员登陆了
Session.setAttribute(“admin_ID”,admin_ID);
response.sendRedirect(
catch(UserNotFoundException e) {
erroMsg=
else{ } %>
out.println(
存储分配
管理员表:(admin)
序号
字段名
类型
长度
精度
小数
默认
允许
主键
说明
1
(admin_ID)管理员ID
2
(admin_password)管理员密码
3
(admin_quanxian)权限
Nvarchar 15 Char
15
Int
10
位数
值
空
√
kk
02管理模块
具体格式见下表 功能编号 所属业务
02
功能名称
管理模块 所属项目
内容
功能流程图
图书馆管理 图书馆管理 系统
编写人 陈新光 完成时间
2007-11-26
页码 第8页
功能流程图
功能流程图如下所示:
需要说明的问题:
在选择相应的业务时,需要在当前的页面显示;并且在管理页面内,默认显示图书查询页面。
功能描述
功能类型:其他
功能概述:总体归纳图书馆管理功能 前提业务:登陆模块(01) 后续业务:021,022,023,024,03 功能约束:权限约束 约束描述:
操作权限:图书馆管理人员
界面设计
基本信息处理
动作说明如下:
动作编号 A01
动作名称 入库管理
动作描述
点击按钮 将页面转至入库管理.jsp页面
A02 学生借书 点击按钮 将页面转至学生借书.jsp页面
A03 学生还书 点击按钮 将页面转至学生还书.jsp页面
A04 图书注销 点击按钮 将页面转至图书注销.jsp页面
A05 图书查询 点击按钮 将页面转至图书查询.jsp页面
数据要求
功能类型:其他
031图书信息查询模块
具体格式如下: 功能编号
031
功能名称
图书信息查内容 询模块
所属业务
图书馆管理
所属项目
图书馆管理 系统
编写人
陈新光
完成时间
2007-11-26
页码
第10页 功能流程图
功能流程图
功能流程图如下图:
需要说明的问题:
录入项检测使用javascript来实现(各项非空); 操作权限:面向所有用户
功能描述
功能类型:查询数据 功能概述:显示查询结果 前提业务:无
后继业务:
功能约束:没有约束; 约束描述:
操作权限:面向所有用户
界面设计
基础信息处理 下表是动作说明:
动作编号 A01
动作名称 确定
动作描述
点击按钮 提交数据到图书查询数据处理.jsp页面
A02 学生信息查询 点击按钮 将页面转至学生信息查询.jsp页面
数据要求
功能类型:数据查询 数据描述:
页面显示字段见下表:
字段名称 长度 录入方式 下拉列表
是否非空项 数据检验 Y
N
默认显示
请选择查询20 类型
请输入查询200 内容
书名 图书类型 作者 译者 ISBN 出版社 文本框
Y N
图书信息查询的输出项
价格 书架名称 现存量 简介 书名 图书类型
kk
模块内部逻辑
Search.jsp用于显示界面的内容,给用户显示一个查询接口
Lib_query.jsp用来调度所有的页面,它根据传入的参数来决定包含哪一
个jsp页面来显示内容;
在lib_query.jsp页面中,
它根据传入的参数来决定包含哪一个jsp页面来显示内容;则可以通过”/>,利用jsp:include标签来
kk
被动态加载发送到相应页面;
chuli.jsp 用来处理数据查询和显示查询到的结果列表。
在这个页面中,数据要求是以列表的形式显示到输出页面。 由于查询到的结果可能过多,所以采用分页形式显示; 对于分页功能的内部逻辑:
View.jsp用来显示查询到的图书的各项属性。
存储分配
图书目录文件(Book):
序号 1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 17 18
字段名 (BookID)图书编号 (TXM)条形码 (Title)书名 (TSLX)图书类型 (Author)作者 (Translator)译者 (ISBN)ISBN (CBS)出版社 (SJMC)书架名称 (XCL)现存量 (KCZL)库存总量 (RKSJ)入库时间 (CZY)操作员 (JJ)简介 (JCCS)借出次数
类型 Int
长度 精度 小数位数 默认值 允许空 主键 10
1
√ √ √ √ √ √ √ √ √ √ √ √ √
√
说明 自动编号
nvarchar 20 nvarchar 200 Nvarchar 50 Nvarchar 20 Nvarchar 20 Nvarchar 20 Nvarchar 30 Nvarchar 20 Smallint Smallint Datatime
2 2
Nvarchar 10 Nvarchar 200 Smallint
2
(SFzhuxiao)是否注销 Nvarchar 2 (BookZT)图书状态
nvarchar 50
借书文件表(JSWJB):
序号
字段名
类型
长度
精度
小数位数
默认值
允许空
主键
外键
说明
图书编号
3
(StuID)学生编号
4
(JYSJ)借阅时间
5
(DQSJ)到期时间
6
(XJCS)续借次数
7
(CZY)操作员
8
(ZT)状态
navarchar 50
Nvarchar
10
Smallint
2
Datatime
8
Datatime
8
Int
10
kk
√
√
√
√
√
√
032学生信息查询模块
具体格式如下: 功能编号
032
功能名称
学生信息查内容 询模块
所属业务
图书馆管理
所属项目
图书馆管理 系统
编写人
陈新光
完成时间
2007-11-26
页码
第12页
功能流程图
功能流程图
功能流程图如下图:
需要说明的问题:
录入项检测使用javascript来实现(各项非空);
kk
操作权限:面向所有用户
功能描述
功能类型:查询数据 功能概述:显示查询结果 前提业务:无 后继业务:
功能约束:没有约束; 约束描述:
操作权限:面向所有用户
界面设计
基础信息处理 下表是动作说明:
动作编号 A01
动作名称 确定
动作描述
点击按钮 提交数据到图书查询数据处理.jsp页面
A02 图书信息查询 点击按钮 将页面转至图书信息查询.jsp页面
数据要求
功能类型:数据查询 数据描述:
页面显示字段见下表:
字段名称 长度 录入方式
是否非空项 数据检验 默认显示
学生信息查询的输出项
学生学号 姓名 性别 生日 证件号码 联系电话 登记日期 有效期至 已借书数
kk
模块内部逻辑
Search.jsp用于显示界面的内容,给用户显示一个查询接口
Index.jsp用来调度所有的页面,它根据传入的参数来决定包含哪一个jsp
页面来显示内容;
在index.jsp页面中,
它根据传入的参数来决定包含哪一个jsp页面来显示内容;则可以通过”/>,利用jsp:include标签来被动态加载发送到相应页面;
List.jsp 用来显示查询到的结果列表。
kk
View.jsp用来显示查询到的学生的各项属性。
★★注释:学生信息查询模块与图书查询模块属于同一类功能。实现可以完全类似。
存储分配
学生文件:
序号 字段 字段名 类型 长度 精度 小数位数
默认值 1
允许空
主键 说明
1 XSID 学生编号 Int 10 √ 自动编号
2 3 4 5 6 7 8 9
Name Sex ZJH LXDH DJRQ YXQZ YJSS RuleID
姓名 性别
nvarchar 10 nvarchar 2
√ √ √ √ √ √
证件号码 nvarchar 25 联系电话 nvarchar 40 登记日期 datetime 8 有效期至 datetime 8 已借书数 smallint 2 学生规则ID
int
10
10 ZT 是否挂失 nvarchar 2 √
借书文件:
序号
字段名
类型
长度
精度
小数位数
1
借阅编号
2
图书编号
3
学生编号
4
借阅时间
5
到期时间
6 续借次
Smallint
2
√
Datatime
8
√
Datatime
8
√
Int
10
√
Int
10
√
Int
10
1
√
自动编号
默认值 允许空
主键
外键
说明
数
7 8
操作员 Nvarchar 状态
10
kk
√ √
navarchar 50
021入库管理
具体格式如下: 功能编号
021
功能名称
入库管理模内容 块
所属业务
图书馆管理
所属项目
图书馆管理 系统
编写人
陈新光
完成时间
2007-11-27
页码
第16页
功能流程图
功能流程图
执行数据库操作的时候要验证权限
录入项检验用javascript来实现(选项非空)
功能描述
(54) 功能类型:添加数据
(55) 功能描述:增加图书目录文件中的图书信息。 (56) 前提业务:管理模块 (57) 后继业务:无 (58) 功能约束:权限约束
(59) 约束描述:无
(60) 操作权限:图书馆管理人员
界面设计
(61) 基础信息处理
动作说明如下表: 动作编号 A01
动作名称 保存
动作描述
点击按钮 提交数据到入库数据处理.jsp页面
A02
退出
点击按钮 将当前页面关闭
(62) 数据描述
(63) 功能类型:数据增加。 (64) 数据描述:
页面录入字段见下表:
字段名称 书号 条形码 书名 作者 出版社 版次 图书类别 单价 录入时间
长度 30 20 200 20 30 50 20 8
录入方式 文本框 文本框 文本框 文本框 文本框 文本框 文本框 文本框
是否非空项 数据检验 Y Y Y Y Y Y Y Y
N N N N N N N N
默认显示
显示在入库界面
默认系统时 年 月 日 只需程序记 间,格式:
录
录入人
默认系统登 陆人员
只需程序记 录
显示在入库界面
(65) 入库数据处理内部逻辑:
图书入库采用表格进行多行添加:
利用javaBean来编写一个BookBean来管理图书。
在BookBean类中增加记录的公共接口来实现入库数据的添加。 具体的类设计如下:
Public int insert (Hashtable hash){
int intID = makeID(
Vector vect = new Vector(); vect.add(
vect.add(addVector(
vect.add(addVector(
vect.add(addVector(
。。。。。。。。。。。。。。。。。。。。//还有其他选项,同上格式。
}
该方法有一个参数,是java.util.Hashtable类,在调用该方法前,先用和hashtable的put方法将字段名和该条记录的值存入hashtable中,然后将这个hashtable作为参数传入insert方法中。
在insert方法的最后,调用ParentBean中的insertRecord方return insertRecord(vect);
法,insertRecord可以根据传入的参数自动的生成增加记录的SQL语句并通过JDBC发送到数据库。
正对ParentBean类:主要是实现对数据库的各种操作:如与
数据库的连接,对数据库的操作。
存储分配
图书目录文件:
序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
字段名 类型 长度 精度 小数位数 默认值 允许空 主键 10
1
√ √ √ √ √ √ √ √ √ √ √ √ √ √
√
说明 自动编号
图书编号 Int 条形码 书名
nvarchar 20 nvarchar 200
图书类型 Nvarchar 50 作者 译者 ISBN 出版社 价格
Nvarchar 20 Nvarchar 20 Nvarchar 20 Nvarchar 30 Money
8
书架名称 Nvarchar 20 现存量
Smallint
2 2 8
库存总量 Smallint 入库时间 Datatime 操作员 简介
Nvarchar 10 Nvarchar 200
2
借出次数 Smallint
是否注销 Nvarchar 2 图书状态 nvarchar 50
入库表:
序号 字段名 类型 长度 精度 小数位数
默认值 允许空 主键 外键 说明
1 书号 Nvarchar 30 1 √ 自动编号
2 3 4 5 6
条形码 书名 作者 出版社 版次
Nvarchar Nvarchar Nvarchar Nvarchar Nvarchar
20 200 20 30 50
√ √ √ √ √
7
图书类别
8
存放位置
9 10
单价 入库数量
11 12 13 14 15
金额 经手人 票号 操作员 日期
Money Nvarchar Nvarchar Nvarchar Datatime 注:
8 10 30 10 8
Money Smallint
8 2
Nvarchar
20
Nvarchar
20
√
kk
√
√ √
√ √ √ √ √
022学生借书模块
具体格式如下: 功能编号
022
功能名称
学生借书模内容 块
所属业务
图书馆管理
所属项目
图书馆管理 系统
编写人
陈新光
完成时间
2007-11-27
页码
第21
页 功能流程图
功能流程图
需要说明的问题:
(66) 在进行借书,修改数据信息时,应先查询学生的欠款信息,如欠款超额,
则利用javascript实现信息提示,拒绝借书,如无超额,则接受借书。 (67) 为便于以后的恢复操作,此修改操作只在表中做一个标志,并不是真正
的对其修改;
功能描述
(68) 功能类型:修改数据和查询数据
(69) 功能描述:更新学生借书文件,图书目录文件等中的信息; (70) 前提业务:管理模块 (71) 后继业务:无 (72) 功能约束:权限约束 (73) 约束描述:
(74) 操作权限:图书馆管理人员
界面设计
(75) 基础信息处理
动作说明如下:
动作编号 A01
动作名称 重置
动作描述
点击按钮 将文本框内的所有数据清空
A02
提交
点击按钮 将数据提交到处理学生超额信息页面
A03
取消
将当前页面关闭,并取消借阅
(76) 数据描述
(77) 功能类型:修改数据和查询数据
(78) 界面设计:
(79) 数据字段描述: 字段名称
长度
录入方式 文本框
是否非空项 数据检验 Y
N
默认显示
学生证件号10 码
书籍条形码10 号
文本框
Y N
(80) 图书借阅数据处理内部逻辑
If(strEdit.equals(“1”)){
If(学生超额|学生不存在){
ifSuccess=false;
}else{
If(!bb.IsValid(hash)){
//新增操作
Int intdel[]=bb.addBorrow(hash); If(intdel==null){
ifSuccess=false;
}else{
For(int i=0;i
%>
}
If(intdel[i]!=1)
ifSuccess=false;
}
}
}
If(!ifSuccess){
%>
}else{ }
}
执行的过程如下:
首先要验证学生信息是否存在和学生的欠款是否超额,也就是说学生是否可以借书,图书是否在馆等,在 确定合法之后调用bb.addBorrow(hash)来完成借阅流程。流程其实就是对几个表进行增改的操作。
关于addBorrow(hash)的算法: public int[] addBorrow(Hashtable hash)
%>
{
System.out.println(
int intID = makeID(
String strZJH = ds.toString((String)hash.get(
String strJYSJ = ds.toString((String)hash.get(
String strXSID =
//根据学生证件号取的学生ID
//根据学生ID取得规则ID,然后取得可以借阅天数,
sql=
where
Student.ZJH='
and
Student.RuleID=Rule.RuleID
Hashtable hashReId=(Hashtable)searchOneData(sql); strXSID=ds.toString((String)hashReId.get(
//根据条形码取得图书ID
sql=
Hashtable hashBKID=(Hashtable)searchOneData(sql); strBOOKID = ds.toString((String)hashBKID.get(
//新增操作 createStatement(); clearBatch();
sql=
+
)
+
}
+
addBatch(sql);
sql=
sql=
int result[]=executeBatch(); closeStm(); return result;
而对于取消按钮事件,由于要实现取消借阅,所以需要调用delBorrow(String id)来取消借阅操作;算法如下:
public int[] delBorrow(String id)
{
System.out.println(
sql=
createStatement(); clearBatch();
sql=
sql=
addBatch(sql);
int result[]=executeBatch(); closeStm();
}
return result;
存储分配
借书文件:
序号
字段名
类型
长度
精度
小数位数
默认值 允许空
主键
外键
说明
1 借阅编号
Int 10 1 √ 自动编号
2 图书编号
Int 10 √
3 学生编号
Int 10 √
4 借阅时间
Datatime 8 √
5 到期时间
Datatime 8 √
6 续借次数
Smallint 2 √
7 8
操作员 Nvarchar 状态
10
√ √
navarchar 50
罚款单:
序号
字段名
类型
长度
精度
小数位数
1
借阅编号
2
图书编号
3 学生编
Int
10
√
Int
10
√
Int
10
1
√
自动编号
默认值 允许空
主键
外键
说明
额
5
实收金额
6 7
状态 备注
Nvarchar 1 Nvarchar 200
Smallint
3
kk
√
√ √
学生文件:
序号
字段
字段名
类型
长度
精度
小数位数
1
XSID
学生编号 Int
10
默认值 1
允许空
√
自动编号
2 3 4 5 6 7 8 9
Name Sex ZJH LXDH DJRQ YXQZ YJSS RuleID
姓名 性别
nvarchar 10 nvarchar 2
√ √ √ √ √ √
主键
说明
证件号码 nvarchar 25 联系电话 nvarchar 40 登记日期 datetime 8 有效期至 datetime 8 已借书数 smallint 2 学生规则ID
int
10
10 ZT 是否挂失 nvarchar 2 √
023学生还书
具体格式如下: 功能编号 所属业务
023
功能名称
学生还模块 内容 所属项目
功能流程图
图书馆管理 图书馆管理 系统
编写人 陈新光 完成时间
2007-11-27
页码 第27页
功能流程图
需要说明的问题:
(81) 显示结果可直接在处理结果.jsp中利用javascript来实现显示功能! (82) 处理要包含:对图书状态和借书文件表中信息的修改以及学生的欠款金
额的计算,并更新Publish表。
功能描述
(83) 功能类型:修改数据
(84) 功能概述:完成学生的还书业务并计算学生的欠款信息 (85) 前提业务:管理模块 (86) 后继业务:无 (87) 功能约束:权限约束 (88) 约束描述:
(89) 操作权限:图书馆管理人员
界面设计
(90) 基础信息处理 动作编号 A01
动作名称 重置
动作描述
点击按钮 将文本框内的所有数据清空
A02
提交
点击按钮 将数据提交到处理还书信息页面
(91) 界面描述:
(92) 数据描述 字段名称
长度
录入方式 是否非空项 数据检验 默认显示
对于还书业务的处理,实质上与借书业务的实现基本上相同,只是调用了backBorrow(hash)来实现还书功能; If(strEdit.equals(“1”)){
Int intdel[]=bb.BackBorrow(hash);
If(intdel==null){
ifSuccess=false;
}else{
For(int i=0;i
%>
If(intdel[i]!=1)
ifSuccess=false;
}else{
%>
}
}
针对backBorrow(hash)算法如下: public int[] backBorrow(String TXM) {
System.out.println(
strBOOKID=ds.toString((String)toName(
createStatement(); clearBatch();
sql=
String strNow = ds.getDateTime(); strNow = strNow.substring(0,10);
BOOKID=
}
System.out.println(
sql=
int result[]=executeBatch(); closeStm(); return result;
存储分配
借书文件:
序号
字段名
类型
长度
精度
小数位数
默认值 允许空
主键
外键
说明
1 借阅编号
Int 10 1 √ 自动编号
2 图书编号
Int 10 √
3 学生编号
Int 10 √
4 借阅时间
Datatime 8 √
5 到期时间
Datatime 8 √
6 续借次数
Smallint 2 √
7 8
操作员 Nvarchar 状态
10
√ √
navarchar 50
学生文件:
序号
字段
字段名
类型
长度
精度
小数位数
1
XSID
学生编号 Int
10
默认值 1
允许空
√
自动编号
2 3 4 5 6 7 8 9
Name Sex ZJH LXDH DJRQ YXQZ YJSS RuleID
姓名 性别
nvarchar 10 nvarchar 2
√ √ √ √ √ √
主键
说明
证件号码 nvarchar 25 联系电话 nvarchar 40 登记日期 datetime 8 有效期至 datetime 8 已借书数 smallint 2 学生规则ID
int
10
10 ZT 是否挂失 nvarchar 2 √
图书目录文件:
序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
字段名
类型
长度 精度 小数位数 默认值 允许空 主键 10
1
√ √ √ √ √ √ √ √ √ √ √ √ √ √
√
说明 自动编号
kk
图书编号 Int 条形码 书名
nvarchar 20 nvarchar 200
图书类型 Nvarchar 50 作者 译者 ISBN 出版社 价格
Nvarchar 20 Nvarchar 20 Nvarchar 20 Nvarchar 30 Money
8
书架名称 Nvarchar 20 现存量
Smallint
2 2 8
库存总量 Smallint 入库时间 Datatime 操作员 简介
Nvarchar 10 Nvarchar 200
2
借出次数 Smallint
是否注销 Nvarchar 2 图书状态 nvarchar 50
罚款单;
序号
类型
长度
精度
小数位数
默认值 允许空
主键
外键
说明
字段名
1 借阅编号
Int 10 1 √ 自动编号
2 图书编号
Int 10 √
3 学生编号
Int 10 √
4 应罚金额
Smallint 3 √
5 实收金额
Smallint 3 √
6 7
状态 备注
Nvarchar 1 Nvarchar 200
√ √
024图书注销
具体格式如下: 功能编号
024
功能名称
图书注销模内容 块
所属业务
图书馆管理
所属项目
图书馆管理 系统
编写人
陈新光
完成时间
2007-11-27
页码
第31页 功能流程图
功能流程图
需要说明的问题:
(93) 显示结果可直接在处理结果.jsp中利用javascript来实现显示功能! (94) 在处理图书注销的时候,为了便于以后的恢复操作,此删除操作只在表
中做一标志,并不是真正的删除。
功能描述
(95) 功能描述:删除数据 (96) 功能概述:注销图书 (97) 前提业务:管理模块 (98) 后继业务:无 (99) 约束描述: (100)
操作权限:图书馆管理人员
界面设计
基础信息处理
(101)
动作说明如下:
动作编号 A01
动作名称 重置
动作描述
点击按钮 将文本框内的所有数据清空
A02
提交
点击按钮
将数据提交到处理还书信息页面
(102)
界面描述:
(103) 字段名称
数据描述: 长度
录入方式 是否非空项 数据检验 默认显示
(104)
对于图书注销业务的处理
存储分配
图书目录文件:
序号 1 2 3 4 5 6
字段名 类型 长度 精度 小数位数 默认值 允许空 主键 10
1
√ √ √
√
说明 自动编号
图书编号 Int 条形码 书名
nvarchar 20 nvarchar 200
图书类型 Nvarchar 50 作者 译者
Nvarchar 20 Nvarchar 20
7 8 9 10 11 12 13 14 15 16 17 18
ISBN 出版社 价格
Nvarchar 20 Nvarchar 30 Money
8
√ √ √ √ √ √ √ √ √ √ √
kk
书架名称 Nvarchar 20 现存量
Smallint
2 2 8
库存总量 Smallint 入库时间 Datatime 操作员 简介
Nvarchar 10 Nvarchar 200
2
借出次数 Smallint
是否注销 Nvarchar 2 图书状态 nvarchar 50
025 基础信息设置
接口设计
(105)
用来查询一条数据的私有接口
该方法有一个参数,参数是一个字符串,表示要向数据库发送一条SQL语句,这个SQL只是一个查询语句,方法的返回植是一个Hashtable,在Hashtable中以键值对的方式表示了从数据库中选出了第一行记录。用Hashtable中的get(“FieldName”)方法可以得到改行记录的某一个记录的值。
private Hashtable searchOneData(String sql)
{
Hashtable hash = new Hashtable(); ResultSet rs = selectRecord(sql);
Statement stmt = null; try{
//取得列数和列名
ResultSetMetaData rsmd = rs.getMetaData(); int cols = rsmd.getColumnCount(); if(rs.next()) {
for(int i=1;i
String field= ds.toString(rsmd.getColumnName(i));
String value = ds.toString(rs.getString(i)); }
hash.put(field,value); }
}catch(Exception e){
System.out.println(
}
finally{
if(rs!=null)try{
stmt=rs.getStatement(); rs.close(); }
catch(Exception e){
System.out.println(
if(stmt!=null)
try{
stmt.close(); }catch(Exception e){
System.out.println(
}
}
(106)
return hash;
增加记录的公共接口
该方法有一个参数,是java.util.Hashtable类,在调用该方法前,先用和hashtable的put方法将字段名和该条记录的值存入hashtable中,然后将这个hashtable作为参数传入insert方法中。 在insert方法的最后,调用ParentBean中的insertRecord方法,insertRecord可以根据传入的参数自动的生成增加记录的SQL语句并通过JDBC发送到数据库
Public int insert(Hashtable hash){
Int intID=makeID(“Book”,”BookID”,””,true); Vector vect=new Vector(); Vect.add(“………….”); …………………… }
(107)
删除记录的公共接口
该方法有一个参数id,该参数表示的是book表中的ID字段,ID字段是这个表的主键,用这个主键可以检索到表中的一条唯一的记录,通过这个主键,delete方法可以生成一条SQL语句,删除这一条记录。
public int delete(String id) {
String sql=
Return insertRecord(vect);
sql=
}
查询记录的公共接口
(108)
Public Vector getData(String sqlwhere, int page){ }
(109)
修改记录的接口
String sql=””;
Sql=”select * from Book”; If (!sqlwhere.equals(“”))
Sql+=sqlwhere;
Return getOnePage(sql,page,20);
public int update(Hashtable hash)
Vector vect = new Vector(); vect.add(
{
vect.add(addVector(
));
vect.add(addVector(
vect.add(addVector(
return updateRecord(vect);
}
测试要点
测试范围
测试范围 系统登陆验证 信息检索功能测试
主要内容
验证用户身份,进行权限控制 测试数据库检索代码的健壮性
简要说明 功能性测试 功能性测试
测试方法
功能性测试:黑盒测试