文档详情

图书管理系统详细设计说明书

优***
实名认证
店铺
DOC
1.16MB
约55页
文档ID:40493128
图书管理系统详细设计说明书_第1页
1/55

i / 55图书管理系统图书管理系统详细设计说明书详细设计说明书20092009 年年 3 3 月月目录目录1引言引言.21.1编写目的 .21.2项目背景 .21.3定义 .21.4参考资料 .22总体设计总体设计.22.1需求概述 .22.2软件结构 .23程序描述程序描述.23.101 登陆模块 .23.202 管理模块 .23.3031 图书信息查询模块 .23.4032 学生信息查询模块 .23.5021 入库管理模块 .23.6022 学生借书模块 .23.7023 学生还书模块 .23.8024 图书注销模块 .23.9接口设计 .23.10测试要点.2文档名称: 详细设计规格说明书项目名称: 图书馆管理系统项目负责人:陈新光 编写 TEST _年_月_日 校对 所有小组成员 _年_月_日 审核 所有小组成员 _年_月_日 批准 XXX _年_月_日 开发单位_组员: TEST1 TEST2 TEST31引言1.1 编写目的图书管理系统详细设计是设计的第二个阶段,这个阶段的主要任务是在图书管理系统概要设计书基础上,对概要设计中产生的功能模块进行过程描述,设计功能模块的内部细节,包括算法和详细数据结构,为编写源代码提供必要的说明。

概要设计解决了软件系统总体结构设计的问题,包括整个软件系统的结构、模块划分、模块功能和模块间的联系等详细设计则要解决如何实现各个模块的内部功能,即模块设计具体的说,模块设计就是要为已经产生的图书管理各子系统设计详细的算法但这并不等同于系统实现阶段用具体的语言编码,它只是对实现细节作精确的描述,这样编码阶段就可以将详细设计中对功能实现的描述,直接翻译、转化为用某种程序设计语言书写的程序1.2 项目背景根据 XX 学校希望能够充分利用现代科技来提高图书管理的效率,在原有的办公系统基础上进行扩展,将一些可以用计算机来管理的都进行计算机化,使得图书馆管理人员工作更加方便,工作效率也更加的高1.3 定义Mysql:数据库管理软件DBMS:数据库管理系统Windows 2000/2003/XP:运行环境JSP :软件开发语言Myeclipse :开发工具1.4 参考资料软件工程导论第 5 版 张海藩编著 清华大学出版社 实用软件工程Leszek A.Maciaszek Bruc Lee Liong 著机械工业出版社2总体设计2.1 需求概述按照需求分析文档中的规格要求,使用条形码扫描器进书、借书、还书,使得信息传递准确、流畅。

同时,系统最大限度地实现易安装,易维护性,易操作性,运行稳定,安全可靠2.2 软件结构图书馆管理系统基础信息设置查询子系统管理子系统图书馆信息系统参数设置管理员设置书架设置图书词库设置新书购入学生借书学生还书图书注销学生信息查询图书信息查询系统登陆系统由系统由 3 3 大模块,大模块,6 6 小模块组成:小模块组成:序号序号编号编号名称名称1,01 登陆模块2,02 管理模块3,031图书信息查询模块4,032学生信息查询模块5,021入库管理模块6,022学生借书模块7,023学生还书模块8,024图书注销模块9,040基础信息设置程序描述2.3 01 登陆模块具体格式见下表:功能编号功能编号0101功能名称功能名称登陆模块登陆模块内容内容功能流程图功能流程图所属业务所属业务图书馆管理所属项目图书馆管理系统编写人编写人陈新光完成时间2007-11-26页码第 5 页2.3.1 功能流程图功能流程图如下图所示登陆.jsp录入项检验(非空)提交所填内容失败登陆数据处理.jsp成功是否成功执行数据库操作管理.jsp成功失败需要说明的问题:(1) 录入项检测使用 javascript 实现(各项必须非空)(2) 登陆.jsp 页面也包含查询按钮,在此的登陆.jsp 提交的数据只是用户名和密码。

2.3.2 功能描述(1) 功能类型:查询数据(2) 功能描述:提高系统的安全性(3) 前提业务:无(4) 后继业务:02 (管理模块)(5) 功能约束:权限约束(6) 约束描述:(7) 操作权限:图书馆管理员2.3.3 界面设计(1) 基础信息处理 动作说明:动作编号动作编号动作名称动作名称动作描述动作描述A01A01登陆点击登陆按钮 提交数据到登陆数据处理.jsp 页面A02A02重至点击退重至按钮 将当前信息恢复原先状态A03A03图书信息查询点击 将页面转至到图书信息查询.jsp 页面A04A04学生信息查询点击 将页面转至学生信息查询.jsp 页面A05A05基础信息点击 将显示基础信息(2) 数据要求(1) 功能类型:数据查询(2) 数据描述:页面显示录入字段如下:字段名称字段名称长度长度录入方式录入方式是否非空项是否非空项数据检验数据检验默认显示默认显示管理员管理员 IDID10文本框YN管理员密码管理员密码15passwordYN2.3.4 登陆数据处理.jsp 的内部逻辑登陆数据处理:关键点两点:1,数据库连接;2,记录登陆信息及信息处理;1, 数据库连接: 如下:publicpublic classclass lib_system_Conn extendsextends Objectpublicpublic lib_system_Conn() privateprivate Connection conn = nullnull; privateprivate ResultSet rs; String re = ; /设置你的数据库ip String dbip = 127.0.0.1; /设置你的数据库用户名和密码: String use = root; String pass = 860409; /设置您的数据库名 String dbName = lib_system; publicpublic java.sql.Connection getConn() trytry Class.forName(org.gjt.mm.mysql.Driver).newInstance(); String url =jdbc:mysql:/+dbip+:3306/+dbName+?user=+use+&password=+pass+&useUnicode=true&characterEncoding=GBK ; conn= DriverManager.getConnection(url); catchcatch(Exception e) e.printStackTrace(); returnreturn thisthis.conn ; /在Mysql建立lib_system数据库,之后将与数据操作相关数据与该数据库相连;2, 记录登陆信息及信息处理:当用户点击“登陆”按钮之后,数据将提交到登陆数据处理.jsp 页面。

取得帐号密码这两个从页面传入的值,然后跟数据库当中管理员表中的账号和密码比较如果正确的话,在 JSP 的 SESSION 中存入一个标记属性,表示当前已经有管理员登陆了处理完毕后,跳转到管理页面,如果失败,则提示登陆失败,并重新进入到登陆页面具体的逻辑如下:2.3.5 存储分配管理员表:(admin)序号序号字段名字段名类型类型长度长度精度精度小数小数位数位数默认默认值值允许允许空空主键主键说明说明1 1(admin_ID)管理员IDInt102 2(admin_password)管理员密码Char153 3(admin_quanxian)权限Nvarchar152.4 02 管理模块具体格式见下表功能编号功能编号0202功能名称功能名称管理模块管理模块内容内容功能流程图功能流程图所属业务所属业务图书馆管理所属项目图书馆管理系统编写人编写人陈新光完成时间2007-11-26页码第 8 页2.4.1 功能流程图功能流程图如下所示:管理.jsp查询.jsp入库管理.jsp图书注销.jsp学生还书.jsp学生借书.jsp需要说明的问题:在选择相应的业务时,需要在当前的页面显示;并且在管理页面内,默认显示图书查询页面。

2.4.2 功能描述(1) 功能类型:其他(2) 功能概述:总体归纳图书馆管理功能(3) 前提业务:登陆模块(01)(4) 后续业务:021,022,023,024,03(5) 功能约束:权限约束(6) 约束描述:(7) 操作权限:图书馆管理人员2.4.3 界面设计(1) 基本信息处理动作说明如下:动作编号动作编号动作名称动作名称动作描述动作描述A01A01入库管理点击按钮 将页面转至入库管理.jsp 页面A02A02学生借书点击按钮 将页面转至学生借书.jsp 页面A03A03学生还书点击按钮 将页面转至学生还书.jsp 页面A04A04图书注销点击按钮 将页面转至图书注销.jsp 页面A05A05图书查询点击按钮 将页面转至图书查询.jsp 页面(2) 数据要求功能类型:其他2.5 031 图书信息查询模块具体格式如下:功能编号功能编号031031功能名称功能名称图书信息查图书信息查询模块询模块内容内容功能流程图功能流程图所属业务所属业务图书馆管理所属项目图书馆管理系统编写人编写人陈新光完成时间2007-11-26页码第 10 页2.5.1 功能流程图功能流程图如下图:图书查询.jsp录入项检验(非空)提交所填内容失败图书查询数据处理.jsp成功是否成功执行数据库操作查询结果.jsp成功失败需要说明的问题:录入项检测使用 javascript 来实现(各项非空) ;操作权限:面向所有用户2.5.2 功能描述(1) 功能类型:查询数据(2) 功能概述:显示查询结果(3) 前提业务:无(4) 后继业务:(5) 功能约束:没有约束;(6) 约束描述:(7) 操作权限:面向所有用户2.5.3 界面设计(1) 基础信息处理下表是动作说明:动作编号动作编号动作名称动作名称动作描述动作描述A01A01确定点击按钮 提交数据到图书查询数据处理.jsp 页面A02A02学生信息查询点击按钮 将页面转至学生信息查询.jsp 页面(2) 数据要求(1) 功能类型:数据查询(2) 数据描述:页面显示字段见下表:字段名称字段名称长度长度录入方式录入方式是否非空项是否非空项数据检验数据检验默认显示默认显示请选择查询请选择查询类型类型20下拉列表YN请输入查询请输入查询内容内容200文本框YN(3) 图书信息查询的输出项书名图书类型作者译者ISBN出版社价格书架名称现存量简介书名图书类型2.5.4 模块内部逻辑Search.jspLib_query.jspChuli.jspView.jsp1, Search.jsp 用于显示界面的内容,给用户显示一个查询接口2, Lib_query.jsp 用来调度所有的页面,它根据传入的参数来决定包含哪一个 jsp 页面来显示内容;在 lib_query.jsp 页面中,它根据传入的参数来决定包含哪一个 jsp 页面来显示内容;则可以通过jsp:include page=”/,利用jsp:include 标签来被动态加载发送到相应页面;3, chuli.jsp 用来处理数据查询和显示查询到的结果列表。

在这个页面中,数据要求是以列表的形式显示到输出页面由于查询到的结果可能过多,所以采用分页形式显示;对于分页功能的内部逻辑: 4, View.jsp 用来显示查询到的图书的各项属性2.5.5 存储分配图书目录文件(Book):序号序号字段名字段名类型类型长度长度精度精度小数位数小数位数默认值默认值允许空允许空主键主键说明说明1 1(BookID)图书编号Int101自动编号2 2(TXM)条形码nvarchar203 3(Title)书名nvarchar2004 4(TSLX)图书类型Nvarchar505 5(Author)作者Nvarchar206 6(Translator)译者Nvarchar207 7(ISBN)ISBNNvarchar208 8(CBS)出版社Nvarchar301010(SJMC)书架名称Nvarchar201111(XCL)现存量Smallint21212(KCZL)库存总量Smallint21313(RKSJ)入库时间Datatime1414(CZY)操作员Nvarchar101515(JJ)简介Nvarchar2001616(JCCS)借出次数Smallint21717(SFzhuxiao)是否注销Nvarchar21818(BookZT)图书状态nvarchar50借书文件表(JSWJB):序号序号字段名字段名类型类型长度长度精度精度小数小数位数位数默认默认值值允许允许空空主键主键外键外键说明说明1 1(JYID)借阅编号Int101自动编号2 2(BookID)图书编号Int103 3(StuID)学生编号Int104 4(JYSJ)借阅时间Datatime85 5(DQSJ)到期时间Datatime86 6(XJCS)续借次数Smallint27 7(CZY)操作员Nvarchar108 8(ZT)状态navarchar502.6 032 学生信息查询模块具体格式如下:功能编号功能编号032032功能名称功能名称学生信息查学生信息查询模块询模块内容内容功能流程图功能流程图所属业务所属业务图书馆管理所属项目图书馆管理系统编写人编写人陈新光完成时间2007-11-26页码第 12 页2.6.1 功能流程图功能流程图如下图:学生信息查询.jsp录入项检验(非空)提交所填内容失败学生信息查询数据处理.jsp成功是否成功执行数据库操作学生信息查询结果.jsp成功失败需要说明的问题:录入项检测使用 javascript 来实现(各项非空) ;操作权限:面向所有用户2.6.2 功能描述(8) 功能类型:查询数据(9) 功能概述:显示查询结果(10) 前提业务:无(11) 后继业务:(12) 功能约束:没有约束;(13) 约束描述:(14) 操作权限:面向所有用户2.6.3 界面设计(4) 基础信息处理下表是动作说明:动作编号动作编号动作名称动作名称动作描述动作描述A01A01确定点击按钮 提交数据到图书查询数据处理.jsp 页面A02A02图书信息查询点击按钮 将页面转至图书信息查询.jsp 页面(5) 数据要求(3) 功能类型:数据查询(4) 数据描述:页面显示字段见下表:字段名称字段名称长度长度录入方式录入方式是否非空项是否非空项数据检验数据检验默认显示默认显示请输入学号请输入学号10文本框YN(6) 学生信息查询的输出项学生学号姓名性别生日证件号码联系登记日期有效期至已借书数2.6.4 模块内部逻辑Search.jspIndex.jspList.jspView.jsp5, Search.jsp 用于显示界面的内容,给用户显示一个查询接口6, Index.jsp 用来调度所有的页面,它根据传入的参数来决定包含哪一个 jsp 页面来显示内容;在 index.jsp 页面中,它根据传入的参数来决定包含哪一个 jsp 页面来显示内容;则可以通过jsp:include page=”/,利用jsp:include 标签来被动态加载发送到相应页面;7, List.jsp 用来显示查询到的结果列表。

8, View.jsp 用来显示查询到的学生的各项属性注释:学生信息查询模块与图书查询模块属于同一类功能实现可以完全类似2.6.5 存储分配学生文件:序号序号字段字段字段名字段名类型类型长度长度精度精度小数小数位数位数默认默认值值允许允许空空主键主键说明说明1 1XSID学生编号Int101自动编号2 2Name姓名nvarchar103 3Sex性别nvarchar24 4ZJH证件号码nvarchar255 5LXDH联系nvarchar406 6DJRQ登记日期datetime87 7YXQZ有效期至datetime88 8YJSS已借书数smallint29 9RuleID学生规则IDint101010ZT是否挂失nvarchar2借书文件:序号序号字段名字段名类型类型长度长度精度精度小数位小数位数数默认值默认值允许空允许空主键主键外键外键说明说明1 1借阅编号Int101自动编号2 2图书编号Int103 3学生编号Int104 4借阅时间Datatime85 5到期时间Datatime86 6续借次数Smallint27 7操作员Nvarchar108 8状态navarchar502.7 021 入库管理具体格式如下:功能编号功能编号021021功能名称功能名称入库管理模入库管理模块块内容内容功能流程图功能流程图所属业务所属业务图书馆管理所属项目图书馆管理系统编写人编写人陈新光完成时间2007-11-27页码第 16 页2.7.1 功能流程图入库管理.jsp录入项检验(非空)提交所填内容失败入库数据处理.jsp成功是否成功执行数据库操作显示结果.jsp成功失败(1) 执行数据库操作的时候要验证权限(2) 录入项检验用 javascript 来实现(选项非空)2.7.2 功能描述(1) 功能类型:添加数据(2) 功能描述:增加图书目录文件中的图书信息。

3) 前提业务:管理模块(4) 后继业务:无(5) 功能约束:权限约束(6) 约束描述:无(7) 操作权限:图书馆管理人员2.7.3 界面设计1, 基础信息处理动作说明如下表:动作编号动作编号动作名称动作名称动作描述动作描述A01A01保存点击按钮 提交数据到入库数据处理.jsp 页面A02A02退出点击按钮 将当前页面关闭2, 数据描述(1) 功能类型:数据增加2) 数据描述:页面录入字段见下表:字段名称字段名称长度长度录入方式录入方式是否非空项是否非空项数据检验数据检验默认显示默认显示书号书号30文本框YN条形码条形码20文本框YN书名书名200文本框YN作者作者20文本框YN出版社出版社30文本框YN版次版次50文本框YN图书类别图书类别20文本框YN单价单价8文本框YN录入时间录入时间默认系统时间,格式: 年 月 日只需程序记录显示在入库界面录入人录入人默认系统登陆人员只需程序记录显示在入库界面3, 入库数据处理内部逻辑:图书入库采用表格进行多行添加:利用 javaBean 来编写一个 BookBean 来管理图书在 BookBean 类中增加记录的公共接口来实现入库数据的添加。

具体的类设计如下:Public int insert (Hashtable hash) int intID = makeID(Book,BookID,true);Vector vect = new Vector();vect.add(Book);vect.add(addVector(BookID,String.valueOf(intID),NUM);vect.add(addVector(Title,ds.toString(String)hash.get(TITLE),CHAR); vect.add(addVector(Author,ds.toString(String)hash.get(AUTHOR),CHAR);vect.add(addVector(ISBN,ds.toString(String)hash.get(ISBN),CHAR);/还有其他选项,同上格式 return insertRecord(vect);该方法有一个参数,是 java.util.Hashtable 类,在调用该方法前,先用和 hashtable 的 put 方法将字段名和该条记录的值存入 hashtable 中,然后将这个 hashtable 作为参数传入insert 方法中。

在 insert 方法的最后,调用 ParentBean 中的insertRecord 方法,insertRecord 可以根据传入的参数自动的生成增加记录的 SQL 语句并通过 JDBC 发送到数据库 正对 ParentBean 类:主要是实现对数据库的各种操作:如与数据库的连接,对数据库的操作 2.7.4 存储分配图书目录文件:序号序号字段名字段名类型类型长度长度精度精度小数位数小数位数默认值默认值允许空允许空主键主键说明说明1 1图书编号Int101自动编号2 2条形码nvarchar203 3书名nvarchar2004 4图书类型Nvarchar505 5作者Nvarchar206 6译者Nvarchar207 7ISBNNvarchar208 8出版社Nvarchar309 9价格Money81010书架名称Nvarchar201111现存量Smallint21212库存总量Smallint21313入库时间Datatime81414操作员Nvarchar101515简介Nvarchar2001616借出次数Smallint21717是否注销Nvarchar21818图书状态nvarchar50入库表:序号序号字段名字段名类型类型长度长度精度精度小数位小数位数数默认值默认值允许空允许空主键主键外键外键说明说明1 1书号Nvarchar301自动编号2 2条形码Nvarchar203 3书名Nvarchar2004 4作者Nvarchar205 5出版社Nvarchar306 6版次Nvarchar507 7图书类别Nvarchar208 8存放位置Nvarchar209 9单价Money81010入库数量Smallint21111金额Money81212经手人Nvarchar101313票号Nvarchar301414操作员Nvarchar101515日期Datatime8注:2.8 022 学生借书模块具体格式如下:功能编号功能编号022022功能名称功能名称学生借书模学生借书模块块内容内容功能流程图功能流程图所属业务所属业务图书馆管理所属项目图书馆管理系统编写人编写人陈新光完成时间2007-11-27页码第 21 页2.8.1 功能流程图借书.jsp录入项检验(非空)提交所填内容失败检查学生欠款信息成功欠款是否超额执行数据库操作处理借书数据.jsp未超额超额是否成功失败显示学生借书信息.jsp需要说明的问题:(1) 在进行借书,修改数据信息时,应先查询学生的欠款信息,如欠款超额,则利用 javascript 实现信息提示,拒绝借书,如无超额,则接受借书。

2) 为便于以后的恢复操作,此修改操作只在表中做一个标志,并不是真正的对其修改;2.8.2 功能描述(1) 功能类型:修改数据和查询数据(2) 功能描述:更新学生借书文件,图书目录文件等中的信息;(3) 前提业务:管理模块(4) 后继业务:无(5) 功能约束:权限约束(6) 约束描述:(7) 操作权限:图书馆管理人员2.8.3 界面设计1,基础信息处理动作说明如下:动作编号动作编号动作名称动作名称动作描述动作描述A01A01重置点击按钮 将文本框内的所有数据清空A02A02提交点击按钮 将数据提交到处理学生超额信息页面A03A03取消将当前页面关闭,并取消借阅2,数据描述(1) 功能类型:修改数据和查询数据(2) 界面设计:(3) 数据字段描述:字段名称字段名称长度长度录入方式录入方式是否非空项是否非空项数据检验数据检验默认显示默认显示学生证件号学生证件号码码10文本框YN书籍条形码书籍条形码号号10文本框YN3,图书借阅数据处理内部逻辑If(strEdit.equals(“1”)If(学生超额|学生不存在)ifSuccess=false;elseIf(!bb.IsValid(hash)/新增操作Int intdel=bb.addBorrow(hash);If(intdel=null)ifSuccess=false;elseFor(int i=0;ialert(“”);alert(“借阅失败!”);alert(“借阅成功!”);%执行的过程如下:首先要验证学生信息是否存在和学生的欠款是否超额,也就是说学生是否可以借书,图书是否在馆等,在 确定合法之后调用 bb.addBorrow(hash)来完成借阅流程。

流程其实就是对几个表进行增改的操作关于 addBorrow(hash)的算法:public int addBorrow(Hashtable hash)System.out.println(批量处理新增借阅);String sql=;int intID = makeID(JYWJB,JYID,true);String strID=String.valueOf(intID);String strZJH = ds.toString(String)hash.get(ZJH);/证件号String strTXM = ds.toString(String)hash.get(TXM);/条形码String strJYSJ = ds.toString(String)hash.get(JYSJ);/借阅时间String strXSID = ;/学生 IDString strBOOKID = ;/图书 IDString strDQSJ = ;/到期时间String strXJCS = ;/续借次数/根据学生证件号取的学生 ID/根据学生 ID 取得规则 ID,然后取得可以借阅天数,sql=select Student.RuleID,Student.XSID,Rule.KJYSJ + from Studengt,RULE + where Student.ZJH=+strZJH+ and Student.RuleID=Rule.RuleID ;Hashtable hashReId=(Hashtable)searchOneData(sql);strXSID=ds.toString(String)hashReId.get(XSID);String strKJYSJ=ds.toString(String)hashReId.get(KJYSJ);/根据条形码取得图书 ID sql=select BOOKID from Book where TXM=+strTXM+;Hashtable hashBKID=(Hashtable)searchOneData(sql);strBOOKID = ds.toString(String)hashBKID.get(BOOKID);/新增操作createStatement();clearBatch();sql= insert into JSWJB(JYID,XSID,BOOKID,JYSJ,DQSJ,ZT,XJCS) + values(+strID+,+strXSID+,+strBOOKID+,+strJYSJ+,to_char(to_date(+strJYSJ+,yyyy-MM-dd)+strKJYSJ+),yyyy-MM-dd)+,+strZero+,+strZero+);addBatch(sql);sql=update Book set ZT=借出 where BOOKID=+strBOOKID;addBatch(sql);sql=update Student set YJSS=YJSS+1 where XSID=+strXSID;addBatch(sql);int result=executeBatch();closeStm();return result;而对于取消按钮事件,由于要实现取消借阅,所以需要调用delBorrow(String id)来取消借阅操作;算法如下:public int delBorrow(String id)System.out.println(批量处理取消借阅。

);String sql=;sql=select BOOKID from JSWJB where JYID=+id;Hashtable hash=(Hashtable)searchOneData(sql);String strBOOKID=(String)hash.get(BOOKID);createStatement();clearBatch();sql=update JSWJB set ZT=+strOne+ where JYID=+id;addBatch(sql);sql=update BOOK set ZT=可借 where BOOKID=+strBOOKID;addBatch(sql);int result=executeBatch();closeStm();return result;2.8.4 存储分配借书文件:序号序号字段名字段名类型类型长度长度精度精度小数位小数位数数默认值默认值允许空允许空主键主键外键外键说明说明1 1借阅编号Int101自动编号2 2图书编号Int103 3学生编号Int104 4借阅时间Datatime85 5到期时间Datatime86 6续借次数Smallint27 7操作员Nvarchar108 8状态navarchar50罚款单:序号序号字段名字段名类型类型长度长度精度精度小数位小数位数数默认值默认值允许空允许空主键主键外键外键说明说明1 1借阅编号Int101自动编号2 2图书编号Int103 3学生编号Int104 4应罚金额Smallint35 5实收金额Smallint36 6状态Nvarchar17 7备注Nvarchar200学生文件:序号序号字段字段字段名字段名类型类型长度长度精度精度小数小数位数位数默认默认值值允许允许空空主键主键说明说明1 1XSID学生编号Int101自动编号2 2Name姓名nvarchar103 3Sex性别nvarchar24 4ZJH证件号码nvarchar255 5LXDH联系nvarchar406 6DJRQ登记日期datetime87 7YXQZ有效期至datetime88 8YJSS已借书数smallint29 9RuleID学生规则IDint101010ZT是否挂失nvarchar2 2.9 023 学生还书具体格式如下:功能编号功能编号023023功能名称功能名称学生还模块学生还模块内容内容功能流程图功能流程图所属业务所属业务图书馆管理所属项目图书馆管理系统编写人编写人陈新光完成时间2007-11-27页码第 27 页2.9.1 功能流程图还书.jsp录入项检测(非空)提交数据处理.jsp成功失败是否 成功执行数据库操作显示结果成功失败需要说明的问题:显示结果可直接在处理结果.jsp 中利用 javascript 来实现显示功能!(1) 处理要包含:对图书状态和借书文件表中信息的修改以及学生的欠款金额的计算,并更新 Publish 表。

2.9.2 功能描述(1) 功能类型:修改数据(2) 功能概述:完成学生的还书业务并计算学生的欠款信息(3) 前提业务:管理模块(4) 后继业务:无(5) 功能约束:权限约束(6) 约束描述:(7) 操作权限:图书馆管理人员2.9.3 界面设计(1) 基础信息处理动作编号动作编号动作名称动作名称动作描述动作描述A01A01重置点击按钮 将文本框内的所有数据清空A02A02提交点击按钮 将数据提交到处理还书信息页面(2) 界面描述:(3) 数据描述字段名称字段名称长度长度录入方式录入方式是否非空项是否非空项数据检验数据检验默认显示默认显示书籍条形码书籍条形码号号10文本框YN对于还书业务的处理,实质上与借书业务的实现基本上相同,只是调用了 backBorrow(hash)来实现还书功能;If(strEdit.equals(“1”)Int intdel=bb.BackBorrow(hash);If(intdel=null)ifSuccess=false;elseFor(int i=0;ialert(“归还操作失败!”);alert(“归还操作成功!”);%针对 backBorrow(hash)算法如下:public int backBorrow(String TXM)System.out.println(批量处理还书。

);String sql=;String strBOOKID=ds.toString(String)toName(BOOK,TXM,BOOKID,TXM);String strNow = ds.getDateTime();strNow = strNow.substring(0,10);createStatement();clearBatch();sql=update JSWJB set ZT=+strOne+,DQSJ=+strNow+ where BOOKID=+strBOOKID+ and ZT=+strZero+;System.out.println(sql1:+sql);addBatch(sql);sql=update BOOK set ZT=可借 where BOOKID=+strBOOKID;System.out.println(sql2:+sql);addBatch(sql);int result=executeBatch();closeStm();return result;2.9.4 存储分配借书文件:序号序号字段名字段名类型类型长度长度精度精度小数位小数位数数默认值默认值允许空允许空主键主键外键外键说明说明1 1借阅编号Int101自动编号2 2图书编Int10号3 3学生编号Int104 4借阅时间Datatime85 5到期时间Datatime86 6续借次数Smallint27 7操作员Nvarchar108 8状态navarchar50学生文件:序号序号字段字段字段名字段名类型类型长度长度精度精度小数小数位数位数默认默认值值允许允许空空主键主键说明说明1 1XSID学生编号Int101自动编号2 2Name姓名nvarchar103 3Sex性别nvarchar24 4ZJH证件号码nvarchar255 5LXDH联系nvarchar406 6DJRQ登记日期datetime87 7YXQZ有效期至datetime88 8YJSS已借书数smallint29 9RuleID学生规则IDint101010ZT是否挂失nvarchar2图书目录文件:序号序号字段名字段名类型类型长度长度精度精度小数位数小数位数默认值默认值允许空允许空主键主键说明说明1 1图书编号Int101自动编号2 2条形码nvarchar203 3书名nvarchar2004 4图书类型Nvarchar505 5作者Nvarchar206 6译者Nvarchar207 7ISBNNvarchar208 8出版社Nvarchar309 9价格Money81010书架名称Nvarchar201111现存量Smallint21212库存总量Smallint21313入库时间Datatime81414操作员Nvarchar101515简介Nvarchar2001616借出次数Smallint21717是否注销Nvarchar21818图书状态nvarchar50罚款单;序号序号字段名字段名类型类型长度长度精度精度小数位小数位数数默认值默认值允许空允许空主键主键外键外键说明说明1 1借阅编号Int101自动编号2 2图书编号Int103 3学生编号Int104 4应罚金额Smallint35 5实收金额Smallint36 6状态Nvarchar17 7备注Nvarchar2002.10024 图书注销具体格式如下:功能编号功能编号024024功能名称功能名称图书注销图书注销内容内容功能流程图功能流程图模块模块所属业务所属业务图书馆管理所属项目图书馆管理系统编写人编写人陈新光完成时间2007-11-27页码第 31 页2.10.1功能流程图注销.jsp录入项检测(非空)提交数据处理.jsp成功失败是否 成功执行数据库操作显示结果成功失败需要说明的问题:(1) 显示结果可直接在处理结果.jsp 中利用 javascript 来实现显示功能!(2) 在处理图书注销的时候,为了便于以后的恢复操作,此删除操作只在表中做一标志,并不是真正的删除。

2.10.2功能描述(1) 功能描述:删除数据(2) 功能概述:注销图书(3) 前提业务:管理模块(4) 后继业务:无(5) 约束描述:(6) 操作权限:图书馆管理人员2.10.3界面设计(1) 基础信息处理动作说明如下:动作编号动作编号动作名称动作名称动作描述动作描述A01A01重置点击按钮 将文本框内的所有数据清空A02A02提交点击按钮 将数据提交到处理还书信息页面(2) 界面描述:(3) 数据描述:字段名称字段名称长度长度录入方式录入方式是否非空项是否非空项数据检验数据检验默认显示默认显示书籍条形码书籍条形码号号10文本框YN(4) 对于图书注销业务的处理2.10.4存储分配图书目录文件:序号序号字段名字段名类型类型长度长度精度精度小数位数小数位数默认值默认值允许空允许空主键主键说明说明1 1图书编号Int101自动编号2 2条形码nvarchar203 3书名nvarchar2004 4图书类型Nvarchar505 5作者Nvarchar206 6译者Nvarchar207 7ISBNNvarchar208 8出版社Nvarchar309 9价格Money81010书架名称Nvarchar201111现存量Smallint21212库存总量Smallint21313入库时间Datatime81414操作员Nvarchar101515简介Nvarchar2001616借出次数Smallint21717是否注销Nvarchar21818图书状态nvarchar502.11025 基础信息设置2.12接口设计(1) 用来查询一条数据的私有接口该方法有一个参数,参数是一个字符串,表示要向数据库发送一条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=cols;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(运行时出错:+e);finallyif(rs!=null)try stmt=rs.getStatement(); rs.close();catch(Exception e)System.out.println(关闭记录集 rs时出错+e);if(stmt!=null) trystmt.close();catch(Exception e)System.out.println(关闭声明时 statement 出错+e);return hash;(2) 增加记录的公共接口该方法有一个参数,是 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(“.”);Return insertRecord(vect);(3) 删除记录的公共接口该方法有一个参数 id,该参数表示的是 book 表中的 ID 字段,ID 字段是这个表的主键,用这个主键可以检索到表中的一条唯一的记录,通过这个主键,delete 方法可以生成一条 SQL 语句,删除这一条记录public int delete(String id)String sql=;sql=delete from Book where BookID=+id;return deleteRecord(sql);(4) 查询记录的公共接口Public Vector getData(String sqlwhere, int page)String sql=” ”;Sql=”select * from Book”;If (!sqlwhere.equals(“”)Sql+=sqlwhere;Return getOnePage(sql,page,20);(5) 修改记录的接口public int update(Hashtable hash)Vector vect = new Vector();vect.add(Book);vect.add(addVector(Title,ds.toString(String)hash.get(TITLE),CHAR);vect.add(addVector(Author,ds.toString(String)hash.get(AUTHOR),CHAR);vect.add(addVector(ISBN,ds.toString(String)hash.get(ISBN),CHAR);return updateRecord(vect);2.13测试要点2.13.1测试范围测试范围测试范围主要内容主要内容简要说明简要说明系统登陆验证系统登陆验证验证用户身份,进行权限控制功能性测试信息检索功能测试信息检索功能测试测试数据库检索代码的健壮性功能性测试2.13.2测试方法功能性测试:黑盒测试 温馨提示:最好仔细阅读后才下载使用,万分感谢!。

下载提示
相关文档
正为您匹配相似的精品文档