基于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)元,如果读者缴纳了罚金在删除归还的图书编号的文件,并修改对应图书的借阅状态。最后再判断该读者归还的此书是否为他借阅的最后一本,如果是,再删除该读者文件夹。

三、总结

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

猜你喜欢

转载自blog.csdn.net/Michelhjx/article/details/121543412