Java项目实战教程,Javase小项目「图书管理系统」(javaweb项目图书管理系统)

Java项目实战教程,Javase小项目「图书管理系统」(javaweb项目图书管理系统)

Java项目分享,今天这个图书馆管理项目的主要是让学完JavaSE的小伙伴,对之前掌握的Java基础知识做一些运用,该项目主要包括下面内容:

  • 面向对象的思想
  • 分层的思想
  • 接口
  • 异常
  • 集合
  • 日期处理
  • Stream流
  • IO流
  • 反射
  • Javafx
  • css

图书相关功能

图书数据初始化

功能概述

创建若干Book对象,将对象放入到List中,把List对象利用对象输出流写出到硬盘的文件中,总体功能与用户数据初始化操作类似。

泛型通配符

图书数据初始化和用户数据初始化类似,所以将两个方法进行重构,重构之后合并为一个方法。方法中添加两个形参,分别是String path(存放的路径)和List<?> list(存放的数据)。这里由于list中的泛型是不同的,所以不能在形参中填写具体的类型,这里我们使用了泛型通配符来解决该问题。

查询图书

功能概述

将硬盘文件中的图书数据查询并展示到页面中,整体跟之前的用户查询类似,只是多了条件查询,在点击查询按钮时,需要将输入的图书名称和isbn传入到DAO中。需要注意的是如果图书名称和isbn同时输入的话,在查询代码中先根据图书名称查询出图书数据bookList,之后在bookList的基础上再根据isbn进行条件查询。

添加图书

功能概述

将输入的图书数据放到Book对象中,之后将该Book对象利用对象输出流写出到硬盘文件中,需要手动设置一下id编号的自增操作。与用户添加类似

删除图书

功能概述

根据输入的图书编号,从图书数据中找到与之对应的图书对象,然后在图书集合对象中将该图书对象删除。

修改图书

功能概述

将修改之后的图书数据持久化到硬盘文件中,功能与修改用户类似。

反射的使用

修改操作中需要将输入的数据一一对应的放入到查询出的图书对象中,需要调用很多set和get方法,倘若属性过多的话,代码就显得繁琐了,为了解决该问题,我们编写了一个工具类,里面利用反射来获取类中的全部属性,之后再进行赋值操作。注意工具类中要排除不希望赋值的属性,例如:serialVersionUID。

代码:

/** * 对象属性值的拷贝 * @param origin * @param dest */public static void populate(Object origin, Object dest) { try { //使用反射解决这个问题 //判断两个对象是否是同一类型 if (origin.getClass() != dest.getClass()) { throw new RuntimeException("两个对象必须得是同一类型"); } Class<?> clazz = origin.getClass(); //获取origin中的属性 Field[] fields = clazz.getDeclaredFields(); for (Field f : fields) { //排除serialVersionUID if ("serialVersionUID".equals(f.getName())) { continue; } //打破封装 f.setAccessible(true); //从dest对象中找到对应的属性值,然后赋值到origin相应的属性中 f.set(origin,f.get(dest)); } } catch (IllegalAccessException e) { e.printStackTrace(); }}

图书统计

功能概述

根据controller中的代码得出要想展示出图表内容,需要两个数据,分别是图书类型和该图书类型对应的书籍数量,至于图书展示的操作交给界面处理就行,因此我们要做的事就是从硬盘文件中图书书籍里面统计出不同类型书籍的数量分别有多少。

方法返回值

方法的返回值写什么要根据需求来定,因此在编写方法之前要搞明白当前的需求是要做什么,倘若在需求没有搞明白的前提下来编写代码,肯定会遇到很多问题。通过图书统计功能的编写我们要学会分析现有代码,根据代码得出所需要的数据,然后再自己操作获取这些数据即可,剩余数据展示的操作交给界面来处理即可。

借阅相关功能

借阅数据初始化

功能概述

利用之前编写的InitDataUtil工具类将借阅数据进行初始化。

UUID

由于可能会产生很多借阅数据,所以编号不能再用int类型自动增长了,这里将Lend类中的编号类型改成了String。这类的编号不要让用户来输入,我们使用UUID来生成。UUID的生成跟网卡MAC地址、时间戳、随机或伪随机数、时序等元素有关,可以保证唯一性。UUID的长度是36,去除里面的-之后长度是32。

借阅数据查询

功能概述

当用户借阅了某本书之后会生成一条数据,我们需要在借阅管理中将该数据查询出来,查询的时候需要注意Lend对象中包含了Book和User对象,对于这类对象的查询我们可以通过多次get方法将其查出。

借阅书籍

功能概述

通过点击图书管理中的借阅按钮生成一条借阅数据,在点击借阅按钮之后,需要查询出可以借书的用户,每位用户只能借阅1本书,这里查询出的用户列表必须都是可以借书的用户。这部分操作的界面较多,注意界面之间的数据传递。

User类的修改

为了能够方便的查询出哪些用书手中已经借书了,我们可以在User类中添加一个boolean属性isLend,该属性的作用是标识当前用户手中是否有书。但是修改User类之后会发现代码很多地方有编译报错,通过这个改动发现类似这种User的类最好在开始的时候定义好,否则后期修改会导致改动较大。

Service层的使用

Controller主要的作用是处理跟界面相关的操作,DAO层主要的作用是处理跟数据持久化方面的操作,遇到一些比较复杂的操作时,我们需要在service层编写业务逻辑代码,在service中可以调用多个不同得DAO。这样可以将代码分层处理,便于后期的扩展升级。

还书功能

功能概述

用户看完书籍之后需要进行归还,默认最长借阅周期是30天,倘若超出的话,超出1天扣1元,30元封顶。如果在还书的时候,用户的余额已为负数,则表示欠费了,需要改用户先还清欠款才能进行还书的操作。

逾期扣款

计算超出归还日期的用户所需支付的金额,然后进行扣款操作,这里个功能需要每天执行,我们可以使用定时任务解决,但是考虑到该项目用户不会每天运行,所以单独写个方法,当启动软件的时候进行同一计算然后再扣款。

充值

功能概述

用户欠费后需要充值并且充值之后的余额要大于0才能进行还书操作,我们需要精确计算出用户的余额,因此使用的类型是BigDecimal

本视频专为零基础的小伙伴倾情打造,共分为29个章节,可在线观看,可下载学习,源码、课件均已配齐

关注 转发私信“1”

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年10月5日 上午8:34
下一篇 2022年10月5日 上午8:36

相关推荐

  • 免费项目管理工具

    免费项目管理工具:让项目更有效 随着数字化时代的到来,项目管理也在不断地变革。为了更好地管理项目,我们需要用到一些免费项目管理工具。今天,我们将介绍一些实用的免费项目管理工具,它们…

    科研百科 2024年7月24日
    66
  • 有效资金使用计划:让企业财务更加健康(资金使用有效性)

    在企业的经营过程中,有效的资金使用计划无疑扮演着至关重要的角色。随着商业竞争日益激烈,企业财务的健康状况成为了决定生死存亡的关键因素。然而,在如何实现「有效资金使用计划」这一问题上…

    科研百科 2023年10月7日
    129
  • 荥阳市畜牧局开展泔水饲喂家畜排查活动

      为加强畜产品质量安全监管,8月20日-8月27日,荥阳市依托30名网格下沉和105名村级防疫员,利用1周的时间,在全市范围内对泔水饲喂家畜的养殖场(户)、生产地址、养殖数量、高…

    科研百科 2022年6月7日
    295
  • 收支业务管理岗位同一人办理

    在收支业务管理岗位,同一人办理业务的情况很常见。这种情况下,需要对各项收支业务进行规范化管理,以确保财务工作的高效性和准确性。作为收支业务管理岗位的同一人,我们需要具备良好的沟通能…

    科研百科 2024年10月24日
    1
  • 什么样的矿石淡黄乳白色有香味呢

    什么样的矿石淡黄乳白色有香味呢? 当我们谈到矿石时,我们通常指的是它们所含有的元素和化学物质。然而,有一些矿石不仅具有美丽的外观,而且还具有令人惊奇的香味。今天,我们将介绍一种名为…

    科研百科 2024年10月22日
    0
  • 我的投稿丨“三项机制”为干部干事创业保驾护航

    作者:赵世明,姚店镇党委书记 三项机制”是我省瞄准落实习近平总书记对陕西“追赶超越”定位和“五个扎实”要求、落实全面从严治党责任的重要举措,“三项机制”为广大干部适应经济新常态、政…

    科研百科 2023年10月15日
    117
  • 项目自筹资金证明材料3076811479

    项目自筹资金证明材料 尊敬的领导: 我是XXX公司的XXX,非常感谢您对我们公司项目自筹资金的申请予以批准。 我们公司近期申请了一个XXX项目,该项目旨在XXX。为了该项目的顺利实…

    科研百科 2024年11月12日
    8
  • 农发行拜泉县支行党建引领——多措并举加强基础管理(银行强化党建引领 夯实发展基础)

    今年以来,农发行拜泉县支行始终紧紧围绕服务乡村振兴战略和地方经济社会发展的中心任务,多措并举加强基础管理,不断提升金融服务能力和水平。   加强党建引领,提高政治素养。该行严格落实…

    科研百科 2024年6月25日
    52
  • 项目合同 信息管理系统

    项目合同信息管理系统:提升项目管理效率的利器 随着项目管理的深入发展,项目合同信息管理系统已经成为了项目管理中不可或缺的一部分。一个好的项目合同信息管理系统可以大大提高项目管理的效…

    科研百科 2025年1月1日
    0
  • 如何从0到1建立项目管理体系3076011455

    如何从0到1建立项目管理体系 随着现代项目管理的不断发展和变化,建立一套完整的项目管理体系已经成为了一个必要的步骤。在这个过程中,如何从0到1地建立项目管理体系是至关重要的。本文将…

    科研百科 2024年11月8日
    0