首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

21.13  图书借还管理功能模块

21.13.1  图书借还功能模块

图书借还管理功能模块包括图书借还、借阅查询两个功能模块,具体功能如下。

图书借还模块包括图书借阅、图书续借、图书归还3个子模块,主要用于完成图书的借阅、归还和续借功能。

借阅查询模块完成图书借阅的全部信息查询。

21.13.2  创建图书借阅的Action实现类

主要技术:继承了DispatchAction类,对图书借还信息实现多业务操作。

图书借阅功能模块的Action实现类BorrowBookAction继承了DispatchAction类,实现了多业务操作。在该类中,首先需要在该类属性中实例化图书借阅模块的BorrowBookDao类、读者信息操作模块的ReaderDao类、图书信息模块的BookDao类及对时间操作的ShowTime类。图书借阅模块Action实现类的关键代码如下。

例程21-35:光盘\mr\21\wyBooks\src\com\action\BorrowBookAction.java

package com.action;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionForm;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForward;

import com.actionForm.BorrowBookForm;

import com.dao.BorrowBookDao;

import org.apache.struts.actions.DispatchAction;

import com.actionForm.BookForm;

import com.dao.BookDao;

import com.dao.ReaderDao;

import com.actionForm.ReaderForm;

import com.tool.ShowTime;

import java.util.List;

public class BorrowBookAction extends DispatchAction {

    private BorrowBookDao borrowBookDao = new BorrowBookDao();

    private ReaderDao readerDao = new ReaderDao();

    private BookDao bookDao = new BookDao();

    private ShowTime showTime = new ShowTime();

……  //此处省略了该类中其他方法,这些方法将在后面的具体过程中给出

}

21.13.3  图书借阅

管理员登录后,选择“借阅管理”/“图书借阅”菜单项,进入到图书借阅页面,在该页面中的“输入读者借书证号”文本框中输入读者的条形码(如:R-3),运行结果如图21.18所示。

图21.18  图书借阅第一步

1.查询读者借书证号的Action类

如图21.18所示,单击【查询】按钮,系统会自动检索出该读者的基本信息和未归还的借阅图书信息。

单击【查询】按钮触发的是“borrowBookAction.do?method=borrowBookLendTwo”,当method等于borrowBookLendTwo,实现的是BorrowBookAction类中的borrow Book Lend Two()方法,实现该方法的代码如下。

例程21-36:光盘\mr\21\wyBooks\src\com\action\BorrowBookAction.java

    public ActionForward borrowBookLendTwo(ActionMapping mapping,

            ActionForm form, HttpServletRequest request,

            HttpServletResponse response) {

        String message = "";

        ReaderForm readerForm = new ReaderForm();

        readerForm.setBookCardMark(request.getParameter("readerCard"));

        ReaderForm reader = readerDao.selectReader(readerForm);

        if (reader == null) { // 判断借书证书是否已经存在以及判断是否已经过期

            message = "您输入的借书证号不存在!!!";

        } else {

            java.sql.Date currentTime = java.sql.Date.valueOf(showTime

                    .showCurrentTime());

            java.sql.Date overTime = java.sql.Date

                    .valueOf(reader.getOverTime());

            if (currentTime.after(overTime)) {

                message = "您的图书证件已经过期了,不能够再借书了!!!";

            }

        }

        BorrowBookForm borrowBookForm = (BorrowBookForm) form;

        borrowBookForm.setReaderCard(request.getParameter("readerCard"));

        BorrowBookForm borrowBook=borrowBookDao.selectBorrowBook(borrowBookForm);

        if (borrowBook != null

                && message.equals("")) { // 判断该用户是否已经借过书

            if(borrowBook.getLend().equals("0")){

            message = "您已经借过一本书了,不能再借了!!!";

        }

            }

        if (!message.equals("")) { // 主要的执行结果

            request.setAttribute("message", message);

            return mapping.findForward("BorrowBookLendOne");

        }

        return mapping.findForward("BorrowBookLendTwo");

    }

2.查询借阅图书信息的Action类

对读者信息查询核对后,进入图21.19所示的页面。

图21.19  图书借阅第二步

如图21.19所示,此时输入图书的条形码名称后,单击【查询】按钮,系统会自动检索出该图书的基本情况。

单击【查询】按钮触发的是“borrowBookAction.do?method= borrowBookLendThree”,当method等于borrowBookLendThree,实现的是BorrowBookAction类的borrowBookLendThree()方法,实现该方法的代码如下。

例程21-37:光盘\mr\21\wyBooks\src\com\action\BorrowBookAction.java

    public ActionForward borrowBookLendThree(ActionMapping mapping,

            ActionForm form, HttpServletRequest request,

            HttpServletResponse response) {

        BookForm bookForm = new BookForm();

        bookForm.setLineNumber(request.getParameter("bookLink"));

BookForm book = bookDao.selectBook(bookForm);

    BorrowBookForm borrowBookForm = (BorrowBookForm) form;    borrowBookForm.setBooklink (Integer.parseInt(request.getParameter("bookLink")));

        borrowBookForm.setLend("0");

        List borrowBookList = borrowBookDao.selectBorrowBookNumber(borrowBookForm);

        String message = "";

        if (book == null) {

        message = "您所要借的图书不存在!!!";

        } else {

        int mistake = book.getBookSum() - borrowBookList.size();

        if (mistake < 3) {

        message = "您所要借的图书在库存中不足3本,不能借了!!!";

            }

        }

        if (!message.equals("")) {

        request.setAttribute("message", message);

        return mapping.findForward("BorrowBookLendTwo");

        }

        ReaderForm readerForm = new ReaderForm();

        readerForm.setBookCardMark(request.getParameter("readerCard"));

        ReaderForm reader = readerDao.selectReader(readerForm);

        request.setAttribute("bookForm", book);

        request.setAttribute("readerForm", reader);

        return mapping.findForward("borrowBookLendThree");

    }

3.图书借阅Action类

单击【查询】按钮后,系统会自动查询图书信息,并将图书基本信息显示在页面中,运行结果如图21.20所示。

如图21.20所示,显示借阅图书的相关信息,单击【确认借阅】,实现图书借阅的功能。

单击【确认借阅】按钮触发的是“borrowBookAction.do?method= borrowBookLendFour”,当method等于borrowBookLendFour,实现的是BorrowBookAction类的borrow Book Lend Four()方法,实现该方法的代码如下。

图21.20  图书借阅第三步

例程21-38:光盘\mr\21\wyBooks\src\com\action\BorrowBookAction.java

    public ActionForward borrowBookLendFour(ActionMapping mapping,

            ActionForm form, HttpServletRequest request,

            HttpServletResponse response) {

        BorrowBookForm borrowBookForm = (BorrowBookForm) form;

        borrowBookForm.setBookAuthor(borrowBookForm.getBookAuthor());

        borrowBookForm.setBooklink(borrowBookForm.getBooklink());

        borrowBookForm.setBookName(borrowBookForm.getBookName());

        borrowBookForm.setBookPrice(borrowBookForm.getBookPrice());

        borrowBookForm.setBookPunbilc(borrowBookForm.getBookPunbilc());

        borrowBookForm.setLend("0");

        borrowBookForm.setLendPrice(borrowBookForm.getLendPrice());

        borrowBookForm.setOperation(borrowBookForm.getOperation());

        borrowBookForm.setReaderCard(borrowBookForm.getReaderCard());

        borrowBookForm.setStartTime(borrowBookForm.getStartTime());

        borrowBookForm.setOverTime(borrowBookForm.getOverTime());

        if (borrowBookDao.insertBorrowBook(borrowBookForm)) {

            request.setAttribute("message", "图书借阅成功");

        } else {

            request.setAttribute("message", "图书借阅成功");

        }

        return mapping.findForward("BorrowBookLendOne");

    }

4.struts-config.xml文件配置

在struts-config.xml文件中配置图书借阅所涉及的<forward>元素,代码如下。

<action name="borrowBookForm" parameter="method" path="/borrowBookAction" scope="request" type= "com.action.BorrowBookAction" validate="true">

  <forward name="BorrowBookLendOne" path="/borrowBook/borrowBookLendOne.jsp"/>

  <forward name="BorrowBookLendTwo" path="/borrowBook/borrowBookLendTwo.jsp"/>

  <forward name="borrowBookLendThree" path="/borrowBook/borrowBookLendThree.jsp"/>

</action>

21.13.4  图书归还

图书归还页面的设计方法同图书借阅类似,所不同的是,在图书归还页面中没有添加借阅图书的功能,而是添加了“图书归还”超链接。单击“借阅管理/图书归还”的超连接后,进入图书归还页面,输入图书证号,单击右侧【查询】按钮实现的是对图书归还信息的相关查询。

单击【查询】按钮触发的是“borrowBookAction.do?method= lendBookTwo”,当method等于lendBookTwo,实现的是BorrowBookAction类的lendBookTwo ()方法,实现该方法的代码如下。

例程21-39:光盘\mr\21\wyBooks\src\com\action\BorrowBookAction.java

    public ActionForward lendBookTwo(ActionMapping mapping, ActionForm form,

            HttpServletRequest request, HttpServletResponse response) {

        BorrowBookForm borrowBookForm = (BorrowBookForm) form;

        borrowBookForm.setReaderCard(request.getParameter("readerCard"));

        borrowBookForm.setLend("1");

        BorrowBookForm borrowBook = borrowBookDao.selectBorrowBookForm(borrowBookForm);

        if (borrowBook == null) {

            request.setAttribute("message", "您输入的图书证号不存在,请重新输入!!!");

            return mapping.findForward("lendBookOne");

        }

            java.sql.Date nowTime = java.sql.Date.valueOf(showTime

                    .showCurrentTime());

            java.sql.Date overTime = java.sql.Date.valueOf(borrowBook

                    .getOverTime());

/*以下代码判断图书归还的日期是否超时*/

            if (nowTime.after(overTime)) {

                int number = nowTime.getDate() - overTime.getDate();

                request.setAttribute("number", String.valueOf(number));

                }

        }

        request.setAttribute("form", borrowBook);

        return mapping.findForward("lendBookTwo");

    }

单击【查询】按钮后,进入图书确认相关信息的页面,如图21.21所示。

如图21.21所示,单击【确认归还】按钮后,实现图书的归还操作。

单击【确认归还】按钮触发的是“borrowBookAction.do?method=lendBookThree”,当method等于lendBookThree,实现的是BorrowBookAction类的lendBookThree()方法,实现该方法的代码如下。

图21.21  图书归还页面

例程21-40:光盘\mr\21\wyBooks\src\com\action\BorrowBookAction.java

public ActionForward lendBookThree(ActionMapping mapping, ActionForm form,

            HttpServletRequest request, HttpServletResponse response) {

       

        BorrowBookForm borrowBookForm = (BorrowBookForm) form;

        borrowBookForm.setReaderCard(request.getParameter("readerCard"));

        borrowBookForm.setLend("1");

//将字段lend的内容更改为1

        if(borrowBookDao.lendBorrowBook(borrowBookForm)){

            request.setAttribute("message", "图书归还成功!!!");

        }else{

            request.setAttribute("message", "图书归还失败!!!");

        }

        return mapping.findForward("lendBookOne");

    }

struts-config.xml文件配置

在struts-config.xml文件中配置图书归还所涉及的<forward>元素,代码如下。

      <forward name="lendBookOne" path="/borrowBook/lendBookOne.jsp"/>

      <forward name="lendBookTwo" path="/borrowBook/lendBookTwo.jsp"/>

注意:图书借阅查询与图书查询的方法实现基本相同,由于篇幅有限这里就不再介绍了。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论