if (bookForm!=null){
int ret = borrowDAO.insertBorrow(reader, bookDAO.queryB(f, key), operator); if (ret == 1) {
request.setAttribute(\ return mapping.findForward(\ } else {
request.setAttribute(\添加借阅信息失败!\ return mapping.findForward(\ } }else{
request.setAttribute(\没有该图书!\ return mapping.findForward(\ } }
return mapping.findForward(\}
(2)图书归还。该子模块实现系统的图书归还功能,读者向图书管理员提供自己的编号会显示出读者当起的借阅情况,再提供要归还的图书标号,图书管理员将信息记录在系统中,归还成功,其操作界面如图4.7所示。
图4.7 图书归还操作界面
归还操作通过查询条形码来读取读者以及其借阅书籍的信息,其具体实现代码为。
private ActionForward bookback(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ //查询读者信息
readerForm.setBarcode(request.getParameter(\
ReaderForm reader = (ReaderForm) readerDAO.queryM(readerForm);
request.setAttribute(\ //查询读者的借阅信息
request.setAttribute(\ if(request.getParameter(\
int id = Integer.parseInt(request.getParameter(\ String operator=request.getParameter(\ if (id > 0) { //执行归还操作
int ret = borrowDAO.back(id,operator); if (ret == 0) {
request.setAttribute(\图书归还失败!\ return mapping.findForward(\ } else {
request.setAttribute(\ return mapping.findForward(\ } } }
return mapping.findForward(\}
4.5 查询功能模块的实现
查询功能模块包括图书查询,读者借阅查询和借阅到期提醒三个子功能模块。 (1) 图书查询可根据图书的条形码,书名,作者,出版社等不同信息进行查询,其操作界面图如图4.8所示。
图4.8 图书查询操作界面
实现该功能中根据读者不同需求的按条件查询实现语句如下。
public Collection query(String strif){ BookForm bookForm=null;
Collection bookColl=new ArrayList();
String sql=\
if(strif!=\
sql=\tb_bookinfo b left join tb_bookcase c on b.bookcase=c.id join tb_publishing p on b.ISBN=p.ISBN join tb_booktype t on b.typeid=t.id where b.del=0) as book where book.\}else{
sql=\tb_bookcase c on b.bookcase=c.id join tb_publishing p on b.ISBN=p.ISBN join tb_booktype t on b.typeid=t.id where b.del=0\}
ResultSet rs=conn.executeQuery(sql); try {
while (rs.next()) {
bookForm=new BookForm();
bookForm.setBarcode(rs.getString(1)); bookForm.setBookName(rs.getString(2)); bookForm.setTypeId(rs.getInt(3)); bookForm.setAuthor(rs.getString(4)); bookForm.setTranslator(rs.getString(5)); bookForm.setIsbn(rs.getString(6));
bookForm.setPrice(Float.valueOf(rs.getString(7))); //此处必须进行类型转换 bookForm.setPage(rs.getInt(8)); bookForm.setBookcaseid(rs.getInt(9)); bookForm.setInTime(rs.getString(10));
bookForm.setOperator(rs.getString(11)); bookForm.setDel(rs.getInt(12));
bookForm.setId(Integer.valueOf(rs.getString(13))); bookForm.setBookcaseName(rs.getString(14));
bookForm.setPublishing(rs.getString(15)); bookForm.setTypeName(rs.getString(16)); bookColl.add(bookForm); }
} catch (SQLException ex) { }
conn.close();
ex.printStackTrace();
return bookColl; }
(2)借阅查询子模块是对图书当前状态和读者当前的借阅情况进行查询,具有此权限的用户登录并进入该操作界面后选中相应的查询条件,并输入相应的查询信息,系统即可在页面显示被查询的图书的状态,或相应读者的当起借阅情况,此外,还可以输入相应时间段内的所有借阅清单,或选择某个读者查询他在某个时间段内的借阅情况,查询某个时间段内的此子功能操作界面如图4.9所示。
图4.9借阅查询操作界面
系统中同时选中日期和限制条件进行查询时,程序是在条件查询的基础上选中
符合时间条件限制的内容,其实现代码为。
if (flag.length == 2) {
if (request.getParameter(\
str = request.getParameter(\ request.getParameter(\ }
String sdate = request.getParameter(\ String edate = request.getParameter(\ String str1 = null;
if (sdate != null && edate != null) {
str1 = \ \
}
str = str + \
}
(3) 借阅到期提醒子模块是将系统当前时间与应归还的时间进行比较,如果系统当前时间以超过图书应归还时间,相应的读者借阅信息便会被显示在借阅到期提醒界面,其界面如图4.10所示。
图4.10 借阅到期提醒
其中需要与之前的借阅时间进行比较并返回值,其具体实现代码为。
private ActionForward bremind(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ request.setAttribute(\ return mapping.findForward(\
5 系统测试
5.1 软件测试的方法与步骤
该系统在本地服务器上进行运行和调试,鉴于对系统的内部结构和处理算法的完全了解以及对系统功能的全面掌握对系统进行白盒测试和黑盒测试。
在开发软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。测试目的在于:发现错误而执行一个程序的过程,测试重要发现一个发现其中尚未发现的错误。
本系统的测试阶段信息流程如图5.1所示。
图5.1 测试阶段信息流程图
为了设计出有效地测试方案按照下面准则进行测试:所有测试都应追溯到用户需求;在完成了需求模型就要着手制定测试计划,在编码之前最所有测试工作进行计划和设计;运用Pareto原理着重对占出现错误80%的容易出错的20%的模块进行测试,从小规模开始逐步进行大规模测试,通常先重点测试单个程序模块再转向集成的模块簇;精心设计测试方案,尽可能充分覆盖程序逻辑使之达到要求的可靠性。
相关推荐: