第七章:借阅管理【基于Servlet+JSP的图书管理系统】

这篇具有很好参考价值的文章主要介绍了第七章:借阅管理【基于Servlet+JSP的图书管理系统】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

借阅管理

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

1. 借书卡

1.1 查询借书卡

  借书卡在正常的CRUD操作的基础上,我们还需要注意一些特殊的情况。查询信息的时候。如果是管理员则可以查询所有的信息,如果是普通用户则只能查看自己的信息。这块的控制在登录的用户信息

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

然后就是在Dao中处理的时候需要考虑根据当前登录用户查询的操作

@Override
public List<BorrowCard> listPage(PageUtils pageUtils,SysUser user) {
    QueryRunner queryRunner = MyDbUtils.getQueryRunner();
    String sql = "select * from t_borrow_card where 1 = 1";
    if(StringUtils.isNotEmpty(pageUtils.getKey())){
        sql += " and stuname like '%"+pageUtils.getKey()+"%'  ";
    }
    if(user != null && user.getIsAdmin() == false){
        // 不是管理员
        sql += " and stuid =  " + user.getId();
    }
    sql += " limit ?,? ";
    // 计算 分页开始的位置
    int startNo = pageUtils.getStart();
    try {
        return queryRunner.query(sql
                ,new BeanListHandler<BorrowCard>(BorrowCard.class),startNo,pageUtils.getPageSize());
    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
    return null;
}

@Override
public int count(PageUtils pageUtils, SysUser user) {
    QueryRunner queryRunner = MyDbUtils.getQueryRunner();
    String sql = "select count(1) from t_borrow_card where 1 = 1 ";
    if(StringUtils.isNotEmpty(pageUtils.getKey())){
        sql += " and stuname like '%"+pageUtils.getKey()+"%'  ";
    }
    if(user != null && user.getIsAdmin() == false){
        // 不是管理员
        sql += " and stuid =  " + user.getId();
    }
    try {
        return queryRunner.query(sql, new ResultSetHandler<Integer>() {
            @Override
            public Integer handle(ResultSet resultSet) throws SQLException {
                resultSet.next();
                return resultSet.getInt(1);
            }
        });
    } catch (SQLException throwables) {
        throwables.printStackTrace();
    }
    return 0;
}

效果:

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

1.2 分配借书卡

  分配借书卡就是对借书卡的添加和更新的操作。在这块我们需要注意的地方一个是需要查询所有的学生信息

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

然后使用到layerDate这个日期时间的插件

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

然后在Servlet中获取到的是特定格式的字符串,我们需要自定义转换的方法来处理。

public class DateUtils {

    public static final String DATE_PARTTERN1 = "YYYY-MM-DD hh:mm:ss";

    /**
     * 字符串转换为Date类型
     * @param msg
     * @param parttern
     * @return
     */
    public static Date stringToDate(String msg,String parttern){
        SimpleDateFormat format = new SimpleDateFormat(parttern);
        try {
            return format.parse(msg);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return new Date();
    }
}

就可以完成添加和更新的处理

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

1.3 下架处理

  当借书卡还没过期的情况下。管理员想要终止这个借书卡的使用。那么可以做下架的处理,下架的本质是修改state的状态为3.
第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

2. 图书展示

  图书展示是给学员查看的,方便学生根据不同的类型快速查找到对应的书籍信息,并且完成相关的借阅操作。

2.1 标签页

  需要根据不同的类别展示不同的图书信息。那么这块我们通过bootstrap中提供的标签来实现。

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

在这块我们需要注意相关CSS属性的处理

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

动态管理ID信息,ID和类别的ID绑定。

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

然后就给对应的标签页绑定对应的点击事件,同时随着我们的点击会给tab-pane添加对应的active的class属性

$(".tabs-container .nav-tabs li").click(function(){
    var href = $(this).children()[0].href
    // 做字符串的截取操作
    var aId = href.substring(href.lastIndexOf('tab-'),href.length);

    // 先给所有的 class= tab-pane 的都移除掉 active 属性
    $(".tab-pane").removeClass('active')
    // 然后单独给当前点击的添加 active 属性
    $("#"+aId).addClass("active")
})

然后就是在页面第一次加载的时候我们需要给第一个标签也做选中和加载active属性的行为

function initTab(){
    var li = $(".tabs-container .nav-tabs").children()[0];
    $(li).addClass('active')
    var href = $($(".tabs-container .nav-tabs").children()[0]).children()[0].href
    // 做字符串的截取操作
    var aId = href.substring(href.lastIndexOf('tab-'),href.length);
    // 先给所有的 class= tab-pane 的都移除掉 active 属性
    $(".tab-pane").removeClass('active')
    // 然后单独给当前点击的添加 active 属性
    $("#"+aId).addClass("active")
}

具体的效果如下:

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

2.2 图书信息

  我们添加标签页的目的是更好的展示图书信息。所以在查询数据类型的时候我们需要同步的查询类型对应的书籍信息。首先在图书类型的bean中关联设置了对应的属性

@Data
public class BookType {

    private Integer id;
    private String name;
    private String notes;
    private Date createtime;

    private List<Book> books; // 当前类型对应的图书信息
}

然后在Servlet中添加了对应的处理

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 查询所有的类别信息
    List<BookType> list = typeService.list();
    if(list != null && list.size() > 0){
        // 遍历 每个类型 查询对应的 图书信息
        for (BookType type : list) {
            Book book = new Book();
            book.setTypeid(type.getId());
            List<Book> books = bookService.list(book);
            type.setBooks(books);
        }
    }
    req.setAttribute("list",list);
    req.getRequestDispatcher("/book/book/showBook.jsp").forward(req,resp);
}

最后在页面中循序处理展示图书信息

<div class="tab-content">
    <c:forEach  items="${list}" var="entity">
        <div id="tab-${entity.id}" class="tab-pane">
            <div class="panel-body">
                <div class="row">
                    <c:forEach items="${entity.books}" var="book">
                        <div class="col-sm-4">
                            <div class="contact-box">
                                <div class="col-sm-4">
                                    <div class="text-center">
                                        <img alt="image" class="m-t-xs img-responsive"
                                             src="/sys/downloadServlet?fileName=${book.img}">
                                        <div class="m-t-xs font-bold">CTO</div>
                                    </div>
                                </div>
                                <div class="col-sm-8">
                                    <h3><strong>${book.name}</strong></h3>
                                    <p><i class="fa fa-map-marker"></i> ${book.author}</p>
                                    <address>
                                        <strong>${book.price}</strong><br>
                                        ${book.publish}<br>
                                        Weibo:<a href="">${book.notes}</a><br>
                                        <abbr title="Phone">Tel:</abbr> (123) 456-7890
                                    </address>
                                </div>
                                <div class="clearfix"></div>
                            </div>
                        </div>
                    </c:forEach>
                </div>
            </div>
        </div>
    </c:forEach>

具体效果为:

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

然后可以对展示的图书的信息做出相关的调整和优化

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

3.借书功能

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

  借阅数据的数据会存储在t_borrow_recoder这张表中,那么与之对应就需要完成对应的后端CRUD的基础功能

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

然后在借阅图书的时候我们需要先判断当前登录的用户是否有可以使用的借书卡,如果才能借阅,否则提示不能借阅

// 借阅书籍的方法
function goBorrowing(bookId){
    // 判断是否有 可用的借书卡
    $.get("/book/borrowCardServlet?action=checkHaveCard",function(data){
        console.log("data",data);
    })
}
/**
 * 检查当前登录的用户是否有可用的借书卡
 * @param req
 * @param resp
 * @throws Exception
 */
public void checkHaveCard(HttpServletRequest req, HttpServletResponse resp) throws Exception {
    List<BorrowCard> list = service.listCanUseCard(getCurrentLoginUser(req,resp).getId());
    String msg = "error";
    if(list != null && list.size() > 0){
        msg = "ok";
    }
    PrintWriter writer = resp.getWriter();
    writer.write(msg);
    writer.flush();
}

操作的效果如下:

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

4.借阅管理

  学生借阅了相关的图书后。可以查看所有借阅信息。同时可以做出归还的操作。这块管理员可以看到所有的数据。但是不能归还,普通的学员只能看到自己的借阅记录。没有归还的图书可以做出归还的操作。

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

在后台代码中的处理核心

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书

展示数据的时候。注意按钮的操作

第七章:借阅管理【基于Servlet+JSP的图书管理系统】,图书管理系统,servlet,java,毕设,毕业设计,图书管理,借阅,借书文章来源地址https://www.toymoban.com/news/detail-677166.html

到了这里,关于第七章:借阅管理【基于Servlet+JSP的图书管理系统】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机操作系统第四版第七章文件管理—课后习题答案

        数据项:是最低级的数据组织形式,可以分为两种类型:基本数据项和组合数据项。基本数据项是用于描述一个对象的某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,又称为字段。组合数据项是由若干个基本数据项组成的,简称组项。 记录:记录是一组

    2024年02月03日
    浏览(49)
  • 【Rust】Rust学习 第七章使用包、Crate和模块管理不断增长的项目

    目前为止,我们编写的程序都在一个文件的一个模块中。伴随着项目的增长,你可以通过将代码分解为多个模块和多个文件来组织代码。一个包可以包含多个二进制 crate 项和一个可选的 crate 库。伴随着包的增长,你可以将包中的部分代码提取出来,做成独立的 crate,这些

    2024年02月13日
    浏览(25)
  • 基于FPGA的UDP协议栈设计第七章_RGMII模块设计

    该部分内容主要需要掌握各种IO和时钟相关的原语使用 以太网的通信离不开PHY芯片,PHY芯片实现实现了RGMII接口到网口(RJ45)的转换, RGMII接口就是PHY芯片和FPGA之间的接口。 GMII :GMII(Gigabit Media Independant Interface),千兆MII接口。GMII采用8位接口数据,工作时钟125MHz,因此传

    2024年04月15日
    浏览(66)
  • 软件项目管理 第七章 软件项目的质量管理与配置管理 课后习题参考答案——主编:李冰、张桥珍、刘玉娥

    1.选择题 (1)项目质量管理的最终责任由谁来承担?( D )    A.项目开发人员        B.采购经理        C.质量经理        D.项目经理 (2)“质量成本”是一个项目管理概念,它说明了下列哪项成本?( C )    A.额外需求的成本        B.需求变更的成本       

    2024年02月10日
    浏览(30)
  • python第七章(字典)

    一。字典(类型为dict)的特点: 1.符号为大括号 2.数据为键值对形式出现 3.各个键值对之间以逗号隔开 格式:str1={\\\'name\\\':\\\'Tom\\\'}  name相当于键值(key),Tom相当于值 二。空字典的创建方法 三。字典的基本操作(增删改查) 1.字典的增加操作:字典序列[key] = 值 注意点:如果存

    2024年01月24日
    浏览(43)
  • 第七章金融中介

             金融中介是通过向资金盈余者发行 间接融资合约( 如存款单),并和资金短缺者达成 间接投资合约 (发放信贷)或购买其发行的证券,在资金供求方之间融通资金,对资金跨期、跨域进行优化配置的金融机构。         金融体系由金融市场和金融中介构成,以银行业为

    2024年02月04日
    浏览(40)
  • 数据结构第七章

    图(Graph)G由两个集合V和E组成,记为G=(V, E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常分别表示图G的顶点集合和边集合,E(G)可以为空集。若EG)为空,则图G只有顶点而没有边。 子图:假设有两个图G=(V,E)和G1=(V1,E1);如果V1

    2024年02月03日
    浏览(50)
  • 第七章 测试

    7.1.1 选择程序设计语言 1. 计算机程序设计语言基本上可以分为汇编语言和高级语言 2. 从应用特点看,高级语言可分为基础语言、结构化语言、专用语言 01 有理想的模块化机制; 02 可读性好的控制结构和数据结构; 03 便于调试和提高软件可靠性; 04 编译程序发现程序错误的

    2024年02月08日
    浏览(66)
  • 第七章 函数矩阵

    和矩阵函数不同的是,函数矩阵本质上是一个矩阵,是以函数作为元素的矩阵。 矩阵函数本质上是一个矩阵,是以矩阵作为自变量的函数。 函数矩阵和数字矩阵的运算法则完全相同。 不过矩阵的元素 a i j ( x ) a_{ij}(x) a ij ​ ( x ) 需要是闭区间 [ a , b ] [a,b] [ a , b ] 上的实函数

    2024年02月04日
    浏览(41)
  • [JavaScript] 第七章 对象

    🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 [Java项目实战] 介绍Java组件安装、使用;手写框架等 [Aws服务器实战] Aws Linux服务器上操作nginx、git、JDK、Vue等 [Java微服务

    2024年02月02日
    浏览(114)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包