图书馆操作管理系统

图书管理系统:

本系统所用知识点:
● java基本语法
● 使用流程控制
● 面向对象思想
● 封装,继承,多态
● 使用集合
● I/o流相关操作

模块类别:
本系统功能分为读者信息管理模块、图书信息管理模块、图书借阅管理模块、基础信息维护模块和用户管理模块。

模块结构:
图书馆操作管理系统_第1张图片

本系统需建立的类:
图书馆操作管理系统_第2张图片
注:Test为主类,内含主方法,其他类别下面会一一列出。

Test类:

import Library.Library;

import java.io.IOException;
import java.text.ParseException;

public class Test {
     
    public static void main(String[] args) throws IOException, ParseException {
     
        Library library = new Library();
        library.Interface();
    }
}

图书管理系统面向管理员和用户两类人员,但是他们需要先登录,下面列出登录、注册功能模块及管理员与用户的功能模块:

登录、注册:

package Library;

import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

import User.User;
import User.Admin;

public class Library {
     
    Scanner sc = new Scanner(System.in);
    private String operator;

    //用户注册登录
    public void Interface() throws IOException, ParseException {
     
        boolean a = true;
        File file = new File("用户信息.txt");
        try {
     
            while (a) {
     
                System.out.println("==================图书管理系统==================");
                System.out.println("请登录:1.普通用户  2.管理员登录  3.注册 4.退出系统");
                int i = sc.nextInt();
                if (i < 1 || i > 4) {
     
                    System.out.println("到底能不能行?能不能看明白了再输!");
                } else if (i == 4) {
     
                    a = false;
                } else if (i == 1) {
     
                    //普通用户登录
                    System.out.println("请输入您的用户名:");
                    operator = sc.next();
                    //写日志
                    File journal = new File("日志.txt");
                    Date nowDate = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                    String borrowTime = sdf.format(nowDate);
                    FileWriter jfw = new FileWriter(journal, true);
                    jfw.write(borrowTime + " " + operator + "登录系统" + "\n");
                    jfw.write("--------------------------------");
                    jfw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
                    jfw.close();//流的关闭

                    System.out.println("请输入您的密码:");
                    String password = sc.next();
                    FileInputStream intput = new FileInputStream(file);
                    BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
                    String tempString;
                    List<String> list = new ArrayList<>();
                    while ((tempString = reader.readLine()) != null) {
     
                        list.add(tempString);
                    }
                    //判断输入的用户名是否存在
                    boolean flag = false;
                    String[] userinf = new String[5];
                    for (String user : list) {
     
                        userinf = user.split(",");
                        if (operator.equals(userinf[0])) {
      //判断用户名是否存在
                            flag = true;
                            break;
                        }
                    }
                    //如果存在,判断密码是否正确
                    if (flag == true) {
     

                        if (password.equals(userinf[1])) {
     
                            System.out.println("登陆成功");
                            //登录
                            try {
     
                                User user = new User();
                                user.operation(userinf, operator);
                            } catch (Exception e) {
     
                                System.out.println("到底能不能行?能不能看明白了再输!");
                                User user = new User();
                                user.operation(userinf, operator);
                            }
                        } else {
     
                            System.out.println("密码错误");
                        }

                    } else {
     
                        System.out.println("用户名不存在");
                    }
                    intput.close();
                    reader.close();
                } else if (i == 2) {
     
                    //管理员登录
                    System.out.println("请输入管理员密码!");
                    String rootPassword = sc.next();
                    if (rootPassword.equals("88888888")) {
     
                        //管理员登录成功
                        System.out.println("管理员登陆成功!");
                        try {
     
                            Admin admin = new Admin();
                            admin.admin();
                        } catch (Exception e) {
     
                            System.out.println("到底能不能行?能不能看明白了再输!");
                            Admin admin = new Admin();
                            admin.admin();
                        }

                    } else {
     
                        System.out.println("你是不是管理员心里没个ACD数吗?");
                    }
                } else if (i == 3) {
     
                    //注册
                    System.out.println("请输入用户名:");
                    String name = sc.next();
                    //查找是否有同名用户
                    FileInputStream intput = new FileInputStream(file);
                    BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
                    String tempString;
                    List<String> list = new ArrayList<>();
                    while ((tempString = reader.readLine()) != null) {
     
                        list.add(tempString);
                    }
                    String[] userinf = new String[5];
                    for (String user : list) {
     
                        userinf = user.split(",");
                        if (name.equals(userinf[0])) {
      //判断用户名是否存在
                            System.out.println("该用户名已存在,请重新拟取名称");
                            break;
                        } else {
     
                            System.out.println("请输入密码:");
                            String password = sc.next();
                            String sex;
                            while (true) {
     
                                System.out.println("请输入您的性别:");
                                sex = sc.next();
                                if (sex.equals("男") || sex.equals("女")) {
     
                                    break;
                                } else {
     
                                    System.out.println("请输入正确的性别!");
                                }
                            }
                            int age;
                            while (true) {
     
                                System.out.println("请输入您的年龄:");
                                System.out.println("(年龄必须满10周岁才能注册呦!)");
                                age = sc.nextInt();
                                if (age < 10 && age > 0) {
     
                                    System.out.println("您的年龄太小啦!请让家长使用账号帮您借阅书籍!");
                                    break;
                                } else if (age <= 0) {
     
                                    System.out.println("你是魔鬼吗?");
                                }
                            }
                            long phone;
                            while (true) {
     
                                System.out.println("请输入您的电话号码:");
                                phone = sc.nextInt();
                                if (phone < 0) {
     
                                    System.out.println("请输入正确的电话号码!");
                                } else {
     
                                    break;
                                }
                            }

                            User u = new User(name, sex, age, phone, password);
                            file.createNewFile();
                            FileWriter fw = new FileWriter(file, true);
                            fw.write(u.toString());
                            fw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
                            fw.close();
                            System.out.println("恭喜您,注册成功!");
                            break;
                        }
                    }
                }

            }
        } catch (Exception e) {
     
            System.out.println("到底能不能行?能不能看明白了再输!");
            Library library = new Library();
            library.Interface();
            return;
        }

    }
}

管理员:

package User;

import Book.AddBook;
import Book.DeleteBook;
import Book.FindBook;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Admin {
     


    public Admin() {
     
    }

    public void admin() throws IOException {
     
        File adminBook = new File("书籍.txt");
        File adminUser = new File("用户信息.txt");
        FindBook fb = new FindBook();
        Scanner scanner = new Scanner(System.in);
        while (true) {
     
            System.out.println("===============图书管理员操作界面===============");
            System.out.println("1.查询书籍 2.添加书籍 3.删除书籍 4.增/删用户 5.查看用户操作 6.返回");
            int choice = scanner.nextInt();
            if (choice < 1 || choice > 6) {
     
                System.out.println("到底能不能行?能不能看明白了再输!");
            } else if (choice == 6) {
     
                return;
            } else if (choice == 1) {
     
                //查询书籍
                fb.adminFindBook();
            } else if (choice == 2) {
     
                //添加书籍
                AddBook ab = new AddBook();
                ab.addBook();
            } else if (choice == 3) {
     
                //删除书籍
                DeleteBook db = new DeleteBook();
                db.deleteBook();
            } else if (choice == 4) {
     
                //增删用户
                System.out.println("==========增/删用户==========");
                System.out.println("1.增加用户 2.删除用户 3.返回");
                int decision = scanner.nextInt();
                if (decision == 3){
     
                    //返回
                    break;
                }else if (decision == 1){
     
                    //增加用户
                    AddUser au = new AddUser();
                    au.addUser();
                }else if (decision == 2){
     
                    //删除用户
                    DeleteUser du = new DeleteUser();
                    du.deleteUser();
                }
            }else if (choice == 5){
     
                //查看用户操作
                File file = new File("日志.txt");
                FileInputStream intput = new FileInputStream(file);
                BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
                String tempString;
                List<String> list = new ArrayList<>();
                while ((tempString = reader.readLine()) != null) {
     
                    System.out.println(tempString);
                }
                while (true) {
     
                    int a;
                    System.out.println("是否清空操作记录:");
                    System.out.println("1、是  2、否");
                    a = scanner.nextInt();
                    if (a > 2 || a < 1) {
     
                        System.out.println("白内障,看不清,莎普爱思滴眼睛!");
                        break;
                    } else if (a == 1) {
     
                        File file1 = new File("日志.txt");
                        FileWriter fr = new FileWriter(file1,false);
                        fr.write(" ");
                        fr.close();
                        break;
                    }else if (a == 2){
     
                        break;
                    }
                }
            }
        }
    }

}

用户(父类为Person):

package User;

import Book.BorrowBook;
import Book.FindBook;
import Book.ReturnBook;

import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class User extends Person {
     
    //用户属性

    private long Uphone;
    private String Upassword;

    public User() {
     

    }

    public User(String name, String sex, int age, long Uphone, String Upassword) {
     
        super(name, sex, age);
        this.Uphone = Uphone;
        this.Upassword = Upassword;

    }


    public long getUphone() {
     
        return Uphone;
    }

    public void setUphone(int uphone) {
     
        Uphone = uphone;
    }

    public String getUpassword() {
     
        return Upassword;
    }

    public void setUpassword(String upassword) {
     
        Upassword = upassword;
    }

    public String toString() {
     
        return name + "," + Upassword + "," + sex + "," + age + "," + Uphone;
    }

    public void operation(String[] userinf,String operator) throws IOException, ParseException {
     
        File bookFile = new File("书籍.txt");
        FindBook fb = new FindBook();
        while (true) {
     
            System.out.println("===============普通用户操作界面===============");
            System.out.println("1.查询书籍 2.借阅书籍 3.归还书籍 4.修改密码 5.返回");
            Scanner sc = new Scanner(System.in);
            int j = sc.nextInt();
            if (j < 1 || j > 5) {
     
                System.out.println("到底能不能行?能不能看明白了再输!");
            } else if (j == 5) {
     
                File journal = new File("日志.txt");
                Date nowDate = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                String borrowTime = sdf.format(nowDate);
                FileWriter jfw = new FileWriter(journal, true);
                jfw.write(borrowTime +" "+ operator + "退出了登录"+"\n");
                jfw.write("--------------------------------");
                jfw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
                jfw.close();
                return;
            } else if (j == 1) {
     //查询书籍
                fb.findBook(operator);
            } else if (j == 2) {
     //借阅书籍
                BorrowBook bb = new BorrowBook();
                bb.borrowBook(operator);
            } else if (j == 3) {
     //归还书籍
                ReturnBook gbb = new ReturnBook();
                gbb.returnBook(operator);
            } else if (j == 4) {
     //修改密码
                String filePath = "用户信息.txt";
                User modifyFile = new User();
                File journal = new File("日志.txt");
                Date nowDate = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                String borrowTime = sdf.format(nowDate);
                FileWriter jfw = new FileWriter(journal, true);
                jfw.write(borrowTime +" "+ operator + "修改了密码"+"\n");
                jfw.write("--------------------------------");
                jfw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
                jfw.close();
                System.out.println("请输入原密码:");
                String oldString = sc.next();
                //如果输入的原密码不正确,无法进行修改,如果正确,才能进行修改
                if (oldString.equals(userinf[1])) {
     
                    System.out.println("请输入新密码:");
                    String newString = sc.next();
                    boolean result = modifyFile.writeFile(filePath, modifyFile.readFileContent(userinf, filePath, oldString, newString));// 修改文件中密码

//            如果修改结果为true,进行修改成功提示,否则提示修改失败
                    if (result == true){
     
                        System.out.println("修改成功,请重新登录!");
                        return;
                    }else {
     
                        System.out.println("修改错误,请检查后重新修改!");
                    }
                } else {
     
                    System.out.println("输入错误,请检查后重新进行修改!");
                }
            }

        }
    }

    // 读文件
    public String readFileContent(String[] userinf, String filePath, String oldString, String newString) {
     
        Scanner sc = new Scanner(System.in);
        BufferedReader br = null;
        String line = null;
        StringBuffer bufAll = new StringBuffer();// 保存修改过后的所有内容
        try {
     
            br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));

            while ((line = br.readLine()) != null) {
     
                StringBuffer buf = new StringBuffer();
                // 修改内容核心代码
                String[] userinf2 = line.split(",");
                if (userinf2[0].equals(userinf[0])) {
     //判断条件根据自己的要求修改
                    buf.append(line);
                    int indexOf = line.indexOf(oldString);
                    buf.replace(indexOf, indexOf + oldString.length(), newString);// 修改内容
                    buf.append(System.getProperty("line.separator"));// 添加换行
                    bufAll.append(buf);
                } else {
     
                    buf.append(line);
                    buf.append(System.getProperty("line.separator"));
                    bufAll.append(buf);
                }
            }
        } catch (Exception e) {
     
            e.printStackTrace();
        } finally {
     
            if (br != null) {
     
                try {
     
                    br.close();
                } catch (Exception e) {
     
                    br = null;
                }
            }
        }
        return bufAll.toString();
    }

    // 写文件
    public boolean writeFile(String filePath, String content) {
     
        BufferedWriter bw = null;
        try {
     
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8"));
            bw.write(content);
            bw.flush();
        } catch (Exception e) {
     
            e.printStackTrace();
            return false;
        } finally {
     
            if (bw != null) {
     
                try {
     
                    bw.close();
                } catch (IOException e) {
     
                    bw = null;
                }
            }
        }
        return true;
    }
}

Person类:

package User;

public class Person {
     
    public String name;
    public String sex;
    public int age;

    public Person(){
     

    }

    public Person(String name,String sex, int age){
     
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public void setName(String name){
     
        this.name = name;
    }
    public String getName(){
     
        return name;
    }

    public void setSex(String sex){
     
        this.sex = sex;
    }
    public String getSex(){
     
        return sex;
    }

    public void setAge(int age){
     
        this.age = age;
    }
    public int getAge(){
     
        return age;
    }
}

book类:

package Book;

public class Book {
     
    private String bookName; //书名
    private String author; //作者
    public double price; //价格
    private String category; //分类
    public String press;//出版社
    private String state; //状态  true-已借出  false-未借出
    private String borrowName;
    private String borrowTime;


    public Book(){
     

    }
    public Book(String bookName,String author,double price,String category,String press,String state,String borrowName,String borrowTime){
     
        this.bookName = bookName;
        this.author = author;
        this.price = price;
        this.category = category;
        this.press = press;
        this.state = state;
        this.borrowName = borrowName;
        this.borrowTime = borrowTime;
    }

    public String getName() {
     
        return bookName;
    }

    public void setName(String bookName) {
     
        this.bookName = bookName;
    }

    public String getAuthor() {
     
        return author;
    }

    public void setAuthor(String author) {
     
        this.author = author;
    }

    public double getPrice() {
     
        return price;
    }

    public void setPrice(double price) {
     
        this.price = price;
    }

    public String getCategory() {
     
        return category;
    }

    public void setCategory(String category) {
     
        this.category = category;
    }

    public String getPress() {
     
        return press;
    }

    public void setPress(String press) {
     
        this.press = press;
    }

    public String getState() {
     
        return state;
    }

    public void setState(String state) {
     
        this.state = state;
    }

    public String getBorrowName() {
     
        return borrowName;
    }

    public void setBorrowName(String borrowName) {
     
        this.borrowName = borrowName;
    }

    public String getBorrowTime() {
     
        return borrowTime;
    }

    public void setBorrowTime(String borrowTime) {
     
        this.borrowTime = borrowTime;
    }

    @Override
    public String toString() {
     
        return bookName +","+author+","+price+","+category+","+press+","+state+","+borrowName+","+borrowTime;
    }
}

下面优先列出管理员的操作功能模块:
查询书籍:

package Book;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class FindBook {
     

    Scanner scanner = new Scanner(System.in);
    File bookFile = new File("书籍.txt");

    public void findBook(String operator) throws IOException {
     
        FileInputStream intput = new FileInputStream(bookFile);
        BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
        String tempString = null;
        List<String> list = new ArrayList<>();
        while ((tempString = reader.readLine()) != null) {
     
            list.add(tempString);
        }
        boolean flag = false;
        String[] bookinf = new String[8];
        String[] bookinf1 = new String[8];
        System.out.println("==========当前书籍有==========");
        for (String book : list) {
     
            bookinf1 = book.split(",");
            System.out.print(bookinf1[0] + " ");
        }
        System.out.println(" ");
        System.out.println("请输入查找的书籍名称:");
        String bookName = scanner.next();


        for (String user : list) {
     
            bookinf = user.split(",");
            if (bookName.equals(bookinf[0])) {
      //判断书籍是否存在
                flag = true;
                System.out.println("书名:" + bookinf[0] + ",作者:" + bookinf[1] + ",价格:" + bookinf[2] +
                        ",类型:" + bookinf[3] + ",出版社:" + bookinf[4] + ",是否被借出:" + bookinf[5]);
                File journal = new File("日志.txt");
                Date nowDate = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                String borrowTime = sdf.format(nowDate);
                FileWriter jfw = new FileWriter(journal, true);
                jfw.write(borrowTime +" "+ operator + "查看了" + bookinf[0] + "\n");
                jfw.write("--------------------------------");
                jfw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
                jfw.close();
                break;
            }
        }
        if (flag == false) {
     
            System.out.println("没有查找到该书籍,请重新确认后再进行查找!");
        }

    }

    public void adminFindBook() throws IOException {
     
        FileInputStream intput = new FileInputStream(bookFile);
        BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
        String tempString = null;
        List<String> list = new ArrayList<>();
        while ((tempString = reader.readLine()) != null) {
     
            list.add(tempString);
        }
        boolean flag = false;
        String[] bookinf = new String[8];
        String[] bookinf1 = new String[8];
        System.out.println("==========当前书籍有==========");
        for (String book : list) {
     
            bookinf1 = book.split(",");
            System.out.print(bookinf1[0] + " ");
        }
        System.out.println(" ");
        System.out.println("请输入查找的书籍名称:");
        String bookName = scanner.next();

        for (String user : list) {
     
            bookinf = user.split(",");
            //判断书籍是否存在
            if (bookName.equals(bookinf[0])) {
      
                flag = true;
                System.out.println("书名:" + bookinf[0] + ",作者:" + bookinf[1] + ",价格:" + bookinf[2] + ",类型:" + bookinf[3] +
                        ",出版社:" + bookinf[4] + ",是否被借出:" + bookinf[5] + ",借书人:" + bookinf[6] + ",借出日期:" + bookinf[7]);
                break;
            }
        }
        if (flag == false) {
     
            System.out.println("没有查找到该书籍,请重新确认后再进行查找!");
        }

    }
}

添加书籍:

package Book;

import User.User;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class AddBook {
     
    String[] bookinf = new String[8];

    public void addBook() throws IOException {
     
        Scanner sc = new Scanner(System.in);
        File file1 = new File("书籍.txt");
        FileInputStream intput = new FileInputStream(file1);
        BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
        String tempString;
        List<String> list = new ArrayList<>();
        while ((tempString = reader.readLine()) != null) {
     
            list.add(tempString);
        }
        String[] bookinf1 = new String[8];
        System.out.println("==========当前书籍有==========");
        for (String book : list) {
     
            bookinf1 = book.split(",");
            System.out.print(bookinf1[0] + " ");
        }
        System.out.println(" ");
        System.out.println("请输入书籍名称:");
        String bookName = sc.next();
        boolean flag = false;
        for (String user1 : list) {
     
            bookinf = user1.split(",");
            if (bookName.equals(bookinf[0])) {
      //判断书名是否存在
                System.out.println("该书籍名称已存在,请重新输入书籍名称");
                flag = true;
                break;
            }
        }
        if (flag == false) {
     
            System.out.println("请输入作者:");
            String author = sc.next();
            double price;
            while (true) {
     
                System.out.println("请输入书籍价格:");
                price = sc.nextDouble();
                if (price > 0) {
     
                    break;
                } else {
     
                    System.out.println("好家伙,亏死了!");
                }
            }
            System.out.println("请输入书籍类型:");
            String category = sc.next();
            System.out.println("请输入书籍的出版社:");
            String press = sc.next();
            String state = "false";
            String borrowName = "无";
            String borrowTime = "null";
            Book book = new Book(bookName, author, price, category, press, state, borrowName, borrowTime);
            file1.createNewFile();
            FileWriter fw = new FileWriter(file1, true);
            fw.write(book.toString());
            fw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
            fw.close();
            System.out.println("恭喜您,添加书籍成功!");
            return;
        }
    }
}

借阅书籍:

package Book;


import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class BorrowBook {
     
    Scanner scanner = new Scanner(System.in);

    public void borrowBook(String operator) throws IOException {
     
        String filePath = "书籍.txt";
        BorrowBook modifyFile = new BorrowBook();
        File bookFile = new File("书籍.txt");
//        if (bookFile[5] == "false")

        System.out.println("请输入要借阅的书籍名称:");
        String bookName = scanner.next();

        //根据书籍名称查询到需要修改的书籍数据
        FileInputStream intput = new FileInputStream(bookFile);
        BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
        String tempString = null;
        List<String> list = new ArrayList<>();
        while ((tempString = reader.readLine()) != null) {
     
            list.add(tempString);
        }
        boolean flag = false;
        String[] bookinf = new String[8];
        for (String user : list) {
     
            bookinf = user.split(",");
            if (bookName.equals(bookinf[0])) {
      //判断书籍是否存在
                flag = true;
                System.out.println("书名:" + bookinf[0] + ",作者:" + bookinf[1] + ",价格:" + bookinf[2] +
                        ",类型:" + bookinf[3] + ",出版社:" + bookinf[4] + ",是否被借出:" + bookinf[5]);
                break;
            }
        }
        if (flag == false) {
     
            System.out.println("没有查找到该书籍,请重新确认后再进行查找!");
            return;
        }
        //修改书籍数据后,重新写入文件

        if (bookName.equals(bookinf[0]) && bookinf[5].equals("false")) {
     
            boolean result = modifyFile.writeFile(filePath, modifyFile.readFileContent(bookinf, filePath, "false", "true"));
            // 修改文件中借阅状态

            if (result == true) {
     
                //获取借书人后写入“无”
                modifyFile.writeFile(filePath, modifyFile.readFileContent(bookinf, filePath, "无", operator));
                //获取时间后写入最后一位
                Date nowDate = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                String borrowTime = sdf.format(nowDate);

                modifyFile.writeFile(filePath, modifyFile.readFileContent(bookinf, filePath, "null", borrowTime));
                System.out.println("借阅成功!");
                System.out.println("借阅时间:" + borrowTime + ",最多可借阅7天,请记得按时归还!");
                //写入日志
                File journal = new File("日志.txt");
                FileWriter jfw = new FileWriter(journal, true);
                jfw.write(borrowTime +" "+ operator + "借阅了" + bookinf[0] + "\n");
                jfw.write("--------------------------------");
                jfw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
                jfw.close();
                return;
            }
        } else {
     
            System.out.println("该书已被借出或不存在,请重新查询后再进行借阅!");
        }

    }

    // 读文件
    public String readFileContent(String[] bookinf, String filePath, String oldString, String newString) {
     
        Scanner sc = new Scanner(System.in);
        BufferedReader br = null;
        String line = null;
        StringBuffer bufAll = new StringBuffer();// 保存修改过后的所有内容
        try {
     
            br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));
            while ((line = br.readLine()) != null) {
     
                StringBuffer buf = new StringBuffer();
                // 修改内容核心代码
                String[] bookinf2 = line.split(",");
                if (bookinf2[0].equals(bookinf[0])) {
     //判断条件根据自己的要求修改
                    buf.append(line);
                    int indexOf = line.indexOf(oldString);
                    buf.replace(indexOf, indexOf + oldString.length(), newString);// 修改内容
                    buf.append(System.getProperty("line.separator"));// 添加换行
                    bufAll.append(buf);
                } else {
     
                    buf.append(line);
                    buf.append(System.getProperty("line.separator"));
                    bufAll.append(buf);
                }
            }
        } catch (Exception e) {
     
            e.printStackTrace();
        } finally {
     
            if (br != null) {
     
                try {
     
                    br.close();
                } catch (Exception e) {
     
                    br = null;
                }
            }
        }
        return bufAll.toString();
    }

    // 写文件
    public boolean writeFile(String filePath, String content) {
     
        BufferedWriter bw = null;
        try {
     
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8"));
            bw.write(content);
            bw.flush();
        } catch (Exception e) {
     
            e.printStackTrace();
            return false;
        } finally {
     
            if (bw != null) {
     
                try {
     
                    bw.close();
                } catch (IOException e) {
     
                    bw = null;
                }
            }
        }
        return true;
    }

}




归还书籍:

package Book;

import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class ReturnBook {
     
    Scanner scanner = new Scanner(System.in);

    public void returnBook(String operator) throws IOException, ParseException {
     
        String filePath = "书籍.txt";
        ReturnBook modifyFile = new ReturnBook();
        File bookFile = new File("书籍.txt");

        System.out.println("请输入要归还的书籍名称:");
        String bookName = scanner.next();

        //根据书籍名称查询到需要修改的书籍数据
        FileInputStream intput = new FileInputStream(bookFile);
        BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
        String tempString = null;
        List<String> list = new ArrayList<>();

        while ((tempString = reader.readLine()) != null) {
     
            list.add(tempString);

        }
        int flag = 0;
        String[] bookinf = new String[8];
        for (String user : list) {
     
            bookinf = user.split(",");
            if (bookName.equals(bookinf[0]) && operator.equals(bookinf[6])) {
     
                //判断书籍是否存在,且为本人所借出
                //若属实则输出书籍完整信息
                flag = 1;
                System.out.println("书名:" + bookinf[0] + ",作者:" + bookinf[1] + ",价格:" + bookinf[2] + ",类型:" + bookinf[3] +
                        ",出版社:" + bookinf[4] + ",是否被借出:" + bookinf[5] + ",借书人:" + bookinf[6] + ",借出日期:" + bookinf[7]);
                //判断是否超时,超时需付罚金
                long charge = 0;//两个时间相差的毫秒数
                long charge1 = 0;//两个时间相差的毫秒数
                Date nowDate = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                String returnTime = sdf.format(nowDate);//获取归还时间
                Date d1 = sdf.parse(bookinf[7]);//借出时间
                Date d2 = sdf.parse(returnTime);//归还时间
                charge = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);
                charge1 = (d2.getTime() - d1.getTime()) / (1000);
                if (charge1 <= 7) {
     
                    System.out.println("该书籍被您借出" + charge + "天"+charge1+"秒,"+"感谢您规范用书!");
                } else if (charge1 > 7) {
     
                    System.out.println("该书籍被您借出" + charge + "天"+charge1+"秒,"+"您已逾期" + (charge1 - 7) + "天,需交罚金:" + (charge1 - 7) * 5 + "元,谢谢配合!");
                }
                break;
            } else if (bookName.equals(bookinf[0]) && !operator.equals(bookinf[6]) && bookinf[5].equals("true")) {
     
                //判断书籍是否存在,且为本人所借出
                //若存在该书籍且被借出,但不是本人所借出,只输出该书籍基本信息
                flag = 2;
                System.out.println("书名:" + bookinf[0] + ",作者:" + bookinf[1] + ",价格:" + bookinf[2] +
                        ",类型:" + bookinf[3] + ",出版社:" + bookinf[4] + ",是否被借出:" + bookinf[5]);
                break;
            } else if (bookName.equals(bookinf[0]) && bookinf[5].equals("false")) {
     
                //判断书籍是否存在,且为本人所借出
                //若存在该书籍但并未被借出,只输出该书籍基本信息
                flag = 3;
                System.out.println("书名:" + bookinf[0] + ",作者:" + bookinf[1] + ",价格:" + bookinf[2] +
                        ",类型:" + bookinf[3] + ",出版社:" + bookinf[4] + ",是否被借出:" + bookinf[5]);
                break;
            }
        }
        if (flag == 0) {
     
            System.out.println("没有查找到该书籍,请重新确认后再进行查找!");
        } else if (flag == 2) {
     
            System.out.println("该书不是由您所借出,请查证后再输入归还的书籍!");
        } else if (flag == 3) {
     
            System.out.println("该书并未被借出,请查证后再输入归还的书籍!");
        }
        //修改书籍数据后,重新写入文件

        else if (flag == 1) {
     
            if (bookName.equals(bookinf[0]) && bookinf[5].equals("true") && operator.equals(bookinf[6])) {
     
                modifyFile.writeFile(filePath, modifyFile.readFileContent(bookinf, filePath, "true", "false"));
                // 修改文件中借阅状态

                modifyFile.writeFile(filePath, modifyFile.readFileContent(bookinf, filePath, operator, "无"));
                modifyFile.writeFile(filePath, modifyFile.readFileContent(bookinf, filePath, bookinf[7], "null"));
                File journal = new File("日志.txt");
                Date nowDate = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                String borrowTime = sdf.format(nowDate);
                FileWriter jfw = new FileWriter(journal, true);
                jfw.write(borrowTime +" "+ operator + "归还了" + bookinf[0] + "\n");
                jfw.write("--------------------------------");
                jfw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
                jfw.close();
                System.out.println("归还成功!");
                return;

            }
        }
    }

    // 读文件
    public String readFileContent(String[] bookinf, String filePath, String oldString, String newString) {
     
        Scanner sc = new Scanner(System.in);
        BufferedReader br = null;
        String line = null;
        StringBuffer bufAll = new StringBuffer();// 保存修改过后的所有内容
        try {
     
            br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));
//            System.out.println("请确认您的用户名:");
//            String username = sc.next();
            while ((line = br.readLine()) != null) {
     
                StringBuffer buf = new StringBuffer();
                // 修改内容核心代码
                String[] bookinf2 = line.split(",");
                if (bookinf2[0].equals(bookinf[0])) {
     //判断条件根据自己的要求修改
                    buf.append(line);
                    int indexOf = line.indexOf(oldString);
                    buf.replace(indexOf, indexOf + oldString.length(), newString);// 修改内容
                    buf.append(System.getProperty("line.separator"));// 添加换行
                    bufAll.append(buf);
                } else {
     
                    buf.append(line);
                    buf.append(System.getProperty("line.separator"));
                    bufAll.append(buf);
                }
            }
        } catch (Exception e) {
     
            e.printStackTrace();
        } finally {
     
            if (br != null) {
     
                try {
     
                    br.close();
                } catch (Exception e) {
     
                    br = null;
                }
            }
        }
        return bufAll.toString();
    }

    // 写文件
    public boolean writeFile(String filePath, String content) {
     
        BufferedWriter bw = null;
        try {
     
            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8"));
            bw.write(content);
            bw.flush();
        } catch (Exception e) {
     
            e.printStackTrace();
            return false;
        } finally {
     
            if (bw != null) {
     
                try {
     
                    bw.close();
                } catch (IOException e) {
     
                    bw = null;
                }
            }
        }
        return true;
    }
}

删除书籍:

package Book;

import User.DeleteUser;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class DeleteBook {
     
    private String bookDelete;
    String[] bookinf = new String[8];
    String[] bookinf1 = new String[8];
    String[] bookinf2 = new String[8];
    String[] bookinf3 = new String[8];

    public void deleteBook() throws IOException {
     
        File file = new File("书籍.txt");
        FileInputStream intput = new FileInputStream(file);
        BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
        String tempString;
        List<String> list = new ArrayList<>();
        while ((tempString = reader.readLine()) != null) {
     
            list.add(tempString);
        }
        System.out.println("==========当前书籍有==========");
        for (String book : list) {
     
            bookinf = book.split(",");
            System.out.print(bookinf[0] + " ");
        }
        System.out.println("");
        System.out.println("请输入要删除的书籍名称:");
        Scanner scanner = new Scanner(System.in);
        bookDelete = scanner.next();
        boolean bookflag = false;//书名是否存在的标志量; true--存在  false--不存在
        boolean bookflag1 = false;
        for (String book : list) {
     
            bookinf1 = book.split(",");
            if (bookDelete.equals(bookinf1[0])) {
      //判断书名是否存在
                bookflag = true;
                break;
            }
        }
        if (bookflag == true) {
     
            for (String book : list) {
     
                bookinf3 = book.split(",");
                if (bookDelete.equals(bookinf3[0]) && bookinf3[5].equals("false")) {
     
                    bookflag1 = true;
                    list.remove(book);
                    FileWriter fd = new FileWriter(file, false);
                    fd.write("");
                    fd.close();
                    break;
                } else if (bookDelete.equals(bookinf3[0]) && bookinf3[5].equals("true")) {
     
                    System.out.println("此书已经被借出,请用户归还书后再进行删除操作!");
                    bookflag1 = false;
                    break;
                }
            }
        }else{
     
            System.out.println("无法找到该书籍,请重新确认后再进行操作!");
            return;
        }
        if (bookflag1 == true) {
     
            for (String book : list) {
     
                bookinf2 = book.split(",");
                FileWriter fw = new FileWriter(file, true);
                fw.write(bookinf2[0] + "," + bookinf2[1] + "," + bookinf2[2] + "," + bookinf2[3] +
                        "," + bookinf2[4] + "," + bookinf2[5] + "," + bookinf2[6] + "," + bookinf2[7]);
                fw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
                fw.close();
            }
            System.out.println("删除成功!");
        }

    }


    public static void main(String[] args) throws IOException {
     
        DeleteBook db = new DeleteBook();
        db.deleteBook();
    }
}

添加用户:

package User;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

@SuppressWarnings({
     "all"})
public class AddUser {
     
    String[] userinf = new String[5];

    public void addUser() throws IOException {
     
        Scanner sc = new Scanner(System.in);
        File file = new File("用户信息.txt");
        FileInputStream intput = new FileInputStream(file);
        BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
        String tempString;
        List<String> list = new ArrayList<>();
        while ((tempString = reader.readLine()) != null) {
     
            list.add(tempString);
        }
        System.out.println("请输入要添加的用户名:");
        String name = sc.next();
        //查找是否有同名用户
        boolean flag = false;
        for (String user1 : list) {
     
            userinf = user1.split(",");
            if (name.equals(userinf[0])) {
      //判断用户名是否存在
                System.out.println("该用户名已存在,请重新拟取名称");
                flag = true;
                break;
            }
        }
        if (flag == false) {
     
            System.out.println("请设置该用户的密码:");
            String password = sc.next();
            String sex;
            while (true) {
     
                System.out.println("请输入该用户的性别:");
                sex = sc.next();
                if (sex.equals("男") || sex.equals("女")) {
     
                    break;
                } else {
     
                    System.out.println("别闹!认真点,输入正确的性别!");
                }
            }
            int age;
            while (true) {
     
                System.out.println("请输入该用户的年龄:");
                age = sc.nextInt();
                if (age < 10) {
     
                    System.out.println("身为管理员,你搁这儿干啥捏,连个年龄都输不对!");
                } else {
     
                    break;
                }
            }

            long phone;
            while (true) {
     
                System.out.println("请输入该用户的电话号码:");
                phone = sc.nextInt();
                if (phone < 0) {
     
                    System.out.println("身为管理员,你搁这儿干啥捏,连个电话号码都输不对!");
                } else {
     
                    break;
                }
            }
            User user = new User(name, sex, age, phone, password);
            file.createNewFile();
            FileWriter fw = new FileWriter(file, true);
            fw.write(user.toString());
            fw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
            fw.close();
            System.out.println("成功添加用户:" + name);
            return;
        }
    }
}


删除用户:

package User;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class DeleteUser {
     
    private String userDelete;
    String[] userinf = new String[5];
    String[] userinf1 = new String[5];
    String[] userinf2 = new String[5];
    String[] bookinf = new String[8];

    public void deleteUser() throws IOException {
     
        File file = new File("用户信息.txt");
        FileInputStream intput = new FileInputStream(file);
        BufferedReader reader = new BufferedReader(new InputStreamReader(intput));
        String tempString;
        List<String> list = new ArrayList<>();
        while ((tempString = reader.readLine()) != null) {
     
            list.add(tempString);
        }

        System.out.println("==========当前用户有==========");
        for (String user : list) {
     
            userinf = user.split(",");
            System.out.print(userinf[0] + " ");
        }
        System.out.println("");
        System.out.println("请输入要删除信息的用户名:");
        Scanner scanner = new Scanner(System.in);
        userDelete = scanner.next();
        File file1 = new File("书籍.txt");
        FileInputStream intput1 = new FileInputStream(file1);
        BufferedReader reader1 = new BufferedReader(new InputStreamReader(intput1));
        List<String> list1 = new ArrayList<>();
        String tempString1;
        while ((tempString1 = reader1.readLine()) != null) {
     
            list1.add(tempString1);
        }
        boolean flag = false;
        boolean flag1 = false;
        for (String book : list1) {
     
            bookinf = book.split(",");
            if (userDelete.equals(bookinf[6])) {
     
                System.out.println("此用户还有书籍尚未归还,请勿删除!");
                flag = true;
                break;
            }
        }
        if (flag == false) {
     
            for (String user : list) {
     
                userinf1 = user.split(",");
                if (userDelete.equals(userinf1[0])) {
     //判断用户名是否存在
                    flag1 = true;
                    list.remove(user);
                    FileWriter fd = new FileWriter(file, false);
                    fd.write("");
                    fd.close();
                    break;
                }
            }
        }

        if (flag1 == true) {
     
            for (String user : list) {
     
                userinf2 = user.split(",");
                FileWriter fw = new FileWriter(file, true);
                fw.write(userinf2[0] + "," + userinf2[1] + "," + userinf2[2] + "," + userinf2[3] + "," + userinf2[4]);
                fw.write(System.getProperty("line.separator"));//在段落后添加一个换行符
                fw.close();
            }
            System.out.println("删除成功!");
        } else if (flag == false && flag1 == false) {
     
            System.out.println("无法找到该用户,请重新确认后再进行操作!");
            return;
        }
    }
}

查看日志的模块在admin类中有显示;

总结:
本次代码实践项目中随未使用数据库(是因为没学呢!),但是通过I/O流把书籍和用户信息以及用户操作的记录都保存到了文档中,加深了自己对于I/O流及其使用方法的理解,本代码中通过对Date类的方法使用,获取了当下时间,并记录下来,更加清晰地知道了用户借阅图书与归还图书的时间,为管理员更好地管理用户提供了便捷。
总的来说,这次项目实践是自己受益良多,对于知识的掌握更加有了一个清晰地认知。
此次代码还有许多不完善的地方,还请小可爱们多多指出,共同进步!

一起加油!!!

图书馆操作管理系统_第3张图片

你可能感兴趣的:(java)