IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 基于I/O流的图书管理系统(Java) -> 正文阅读

[Java知识库]基于I/O流的图书管理系统(Java)

一、项目简介

????????一个多月的JavaSE基础的学习终于接近尾声。最近这两周,小的在做一个基础的项目——基于I/O流的图书管理系统。难度不算是特别大,但是能对前面所学的所有知识进行一个总结以及运用。

? ? ? ? 相信各位看官老爷都或多或少的做过各种各样的管理系统,无非就是对各种数据的增删查改,这里先放出图书管理系统的项目结构:

? ? ? ? 从图中我们可以看出,这个系统分为五个模块。在这五个模块中有难度的就是第三个模块:图书借阅管理。在这里对代码详解就不过多的叙述,毕竟自己动手写出来的代码能运行成功才是最开心的。

?二、遇到的问题

2.1添加用户时,如何动态自增

? ? ? ? 在添加用户时,由于我们只需要输入用户的用户名和用户密码,但是我们需要存入的数据是三条,即用户id、用户名、用户密码。由于这一个项目,我们是基于I/O流进行读写文件的,并没有使用数据库,所以id没有自增的功能。但是我们依旧要解决这个问题,该怎么办呢?

? ? ? ? 在这里我想到了一个解决方案,代码如下:

private  static int id = 0;
static {try {
        getNewId();
    }catch (Exception e){
        e.printStackTrace();
    }
    }
//获取id
private static void getNewId()throws IOException{
        int newid = 0;
        for (File file : userfile.listFiles()) {
            userbr = new BufferedReader(new FileReader(file));
            userprop.load(userbr);
            userbr.close();
            int userid = Integer.valueOf(userprop.getProperty("id"));
            if (userid>newid){
                newid = userid;
                id = newid;
            }
        }

    }

? ? ? ? 由于id(用户id)我用static关键字修饰了,所以我添加了一个getNewId()方法,在每次执行之前先遍历存放用户信息的文件夹,获取已存放用户信息中id最大的一个,然后把最大值赋给id,这样就做到id自增了。

2.2图书借阅

? ? ? ? 在这里我的借书思路是:创建一个新的文件夹BorrowBook用来存放借阅读者的信息,当没有读者借阅图书的时候该文件夹是空的。在借阅时,当输入读者id和图书编号之后,我们先进行一个判断是否存在该读者id的读者,如果存在我们就在BorrowBook中新建一个名字为该读者id的文件夹,然后我们再进行一个判断是否存在该编号的图书,如果存在该编号的图书,就继续判断该图书是否被借出,如果未被借出,我们最后一个判断该读者借书是否已达到最大限额...(判断真多)。如果以上所有的判断都成功,那就可以借书了,我们就在名字为该读者id的文件夹下,创建一个文本文件,在文本文件中写入读者id,图书编号,以及借阅时间,最后输出借书成功。

? ? ? ? 对应的还书思路:首先先判断Borrowbook中是否存在该读者,接着再判断是否该读者是否已借阅该图书编号的图书,如果前面的条件都成立之后,就去获取以该图书编号命名的文本文件中的借阅时间,然后再与归还时间进行计算,得到一个时间差time。接着我们根据读者编号去获取他对应类型的规定借阅时间limit和罚金金额fine。然后再判断time和limit的大小,如果time大于limit,就要让读者先缴纳罚金fine*(time)元,如果读者缴纳了罚金在删除归还的图书编号的文件,并修改对应图书的借阅状态。最后再判断该读者归还的此书是否为他借阅的最后一本,如果是,再删除该读者文件夹。

三、总结

? ? ? ? 这个项目比较基础,里面最多的操作就是文件的读写。值得注意的点就是文件读写的时候,参数不要写错了,细心细心细心!然后就是重复的增删查改操作了。只要把思路脉络理清晰了,代码还是能很快完成的。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 09:46:50  更:2021-11-27 09:47:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:22:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码