一、项目简介
????????一个多月的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)元,如果读者缴纳了罚金在删除归还的图书编号的文件,并修改对应图书的借阅状态。最后再判断该读者归还的此书是否为他借阅的最后一本,如果是,再删除该读者文件夹。
三、总结
? ? ? ? 这个项目比较基础,里面最多的操作就是文件的读写。值得注意的点就是文件读写的时候,参数不要写错了,细心细心细心!然后就是重复的增删查改操作了。只要把思路脉络理清晰了,代码还是能很快完成的。
|