基于I/O流的图书馆管理系统

  • Post author:
  • Post category:其他




摘要

本篇博文是在接触学习数据库前,利用I/O流来实现一个简单的图书馆管理系统,包括管理书籍以及管理用户两个大功能。如有不对或者改进的地方,可以留言。



代码

控制台

import java.io.DataOutput;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.chrono.IsoChronology;
import java.util.*;

public class Administrator implements Serializable {
    private static final long serialVersionUID = 1500;
    File file1 = new File("E:\\JAVA\\test\\Library3\\src\\txt\\reader.txt");

    public static void main(String[] args) throws IOException, ClassNotFoundException, ParseException {
            //用来存放用户(管理员)信息
        File file = new File("E:\\JAVA\\test\\Library3\\src\\txt\\users.txt");
        file.createNewFile();
        ArrayList<Users> userslist = new ArrayList<Users>();
//        userslist.add(new Users("xyz", "999"));
//        FileUtils.usein(userslist, file);
        //存放读者信息

        file.createNewFile();
        ArrayList<String> readerslist = new ArrayList<String>();
//

        File file2 = new File("E:\\JAVA\\test\\Library3\\src\\txt\\book.txt");
        file.createNewFile();
        File file3 = new File("E:\\JAVA\\test\\Library3\\src\\txt\\borrow.txt");

        file.createNewFile();
        List<Book> booklist = new ArrayList<Book>();
        //借阅库
        List<Borrow> borrowlist = new ArrayList();
//        borrowlist.add(new Borrow(1,"教师",5,new Date(2021,5,4)));
//        FileUtils.borrowout2(borrowlist);
        Scanner scanner = new Scanner(System.in);
        //
        ArrayList<Users> userslist2 = new ArrayList<Users>();
        List<Reader> readerLists = new ArrayList<>();

        //开始界面
        while (true) {
            System.out.println("选择登陆方式 1管理员登陆 2.普通用户登陆");
            switch (scanner.nextInt()) {
                case 1:

                    for (int ls = 0; ; ) {
                        System.out.println("----------------欢迎光临----------------");
                        System.out.println("请输入管理员ID");
                        String a = scanner.next();
                        System.out.println("请输入管理员密码");
                        String b = scanner.next();
                        Users ss = new Users(a, b);
                        userslist2 = FileUtils.usersOut(file);
                        if (userslist2.contains(ss)) {
                            for (int ll = 0; ; ) {
                                System.out.println("请选择要进行的操作1.增加用户 2.删除用户 3.修改密码 4.查看用户列表 5.读者管理 6.书籍管理");
                                switch (scanner.nextInt()) {
                                    case 1:
                                        System.out.println("输入用户姓名");
                                        String c = scanner.next();
                                        System.out.println("输入密码");
                                        String d = scanner.next();
                                        System.out.println("注册成功");
                                        userslist2.add(new Users(c, d));
                                        FileUtils.usein(userslist2, file);

                                        break;

                                    case 2:
                                        for (Users u : userslist2) {
                                            System.out.println(u);
                                            System.out.println("--------------------------------");
                                        }
                                        System.out.println("请选择你要删除的对象");
                                        int e = scanner.nextInt();
                                        userslist2.remove(e - 1);
                                        //用方法覆盖全部
                                        FileUtils.usein(userslist2, file);
                                        break;
                                    case 3:
                                        userslist2 = FileUtils.usersOut(file);
                                        for (Users u : userslist2) {
                                            System.out.println(u);
                                            System.out.println("----------------------------");
                                        }
                                        System.out.println("请按顺序选择你要更改的用户信息,并依次输入信息");
                                        int f = scanner.nextInt();
                                        System.out.println("输入用户名");
                                        String g = scanner.next();
                                        System.out.println("输入密码");
                                        String h = scanner.next();
                                        userslist2.set(f - 1, new Users(g, h));
                                        FileUtils.usein(userslist2, file);
                                        userslist2 = FileUtils.usersOut(file);
                                        break;
                                    case 4:
                                        userslist2 = FileUtils.usersOut(file);
                                        for (Users u : userslist2) {
                                            System.out.println(u);
                                            System.out.println("------------------------------");
                                        }
                                        break;
                                    case 5:

                                        System.out.println("1.添加读者信息 2.读者信息删除 3.读者信息修改 4.查看读者信息 5.退出");
                                        switch (scanner.nextInt()) {
                                            case 1:
                                                boolean flag1 = false;
                                                int cc = 0;
                                                System.out.println("输入读者id:");
                                                int a1 = scanner.nextInt();
                                                boolean flag2= false;
                                                flag2 = IOUtils.writeObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\reader.txt",readerslist);
                                                for (int i = 0; i < readerLists.size(); i++) {
                                                    if (a1 == readerLists.get(i).getReaderid()) {
                                                        flag1 = true;
                                                        System.out.println("读者已存在");
                                                        break;
                                                    }
                                                }
                                                if (!flag1) {

                                                    System.out.println("输入读者姓名:");
                                                    String a2 = scanner.next();
                                                    System.out.println("输入读者性别:");
                                                    String a3 = scanner.next();
                                                    System.out.println("输入读者年龄");
                                                    int a4 = scanner.nextInt();
                                                    System.out.println("输入读者所在院系:");
                                                    String a5 = scanner.next();
                                                    System.out.println("输入读者电话:");
                                                    int a6 = scanner.nextInt();
                                                    System.out.println("输入注册日期");
                                                    Date a7 = null;
                                                    System.out.println("年");
                                                    int a8 = scanner.nextInt();
                                                    System.out.println("月");
                                                    int a9 = scanner.nextInt();
                                                    System.out.println("日 ");
                                                    int a10 = scanner.nextInt();
                                                    a7 = new Date(a8 - 1900, a9 - 1, a10);
                                                    readerLists.add(new Reader(a1, a2, a3, a4, a5, a6, a7));
                                                    IOUtils.writeObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\reader.txt", readerLists);
//                                                FileUtils.readerout(new Reader());
                                                }

                                                break;
                                            case 2:
                                                Reader reader = new Reader();
                                                readerLists = IOUtils.readObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\reader.txt",reader);
                                                for (int i = 0; i < readerLists.size(); i++) {
                                                    System.out.println(readerLists.get(i).getName());
                                                }
                                                System.out.println("请输入你要删除的读者的名字");
                                                String rName = scanner.next();
                                                //读取文件里读者的信息

                                                boolean flag = false;
                                                //循环判断是否有输入的读者
//                                            使用for循环遍历集合时,不可以修改集合的长度
//                                            只能通过迭代器遍历集合时删除
                                                Iterator<Reader> it = readerLists.iterator();
                                                while (it.hasNext()) {
//                                                    Reader reader = it.next();
//                                                    if(rName.equals(reader.getName())){
//                                                        it.remove();
//                                                    }
                                                    if (rName.equals(it.next().getName())) {//输入名字,如果在集合中存在,就返回true
                                                        it.remove();
                                                        flag = true;
                                                    }
                                                }
                                                if (flag) {
                                                    //进行删除用户操作,先清空,在写入
                                                    FileUtils.readerout2(readerLists);
                                                } else {
                                                    System.out.println("用户不存在,无法进行次操作");
                                                }
                                                break;
                                            case 3:
                                                Reader reader2 = new Reader();
                                                readerLists = IOUtils.readObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\reader.txt",reader2);
                                                for (Reader s : readerLists) {
                                                    System.out.println(s);
                                                    System.out.println("------------------------------");
                                                }
                                                System.out.println("请按顺序选择你要修改的读者的信息");
                                                System.out.println("并依次输入要修改的信息");
                                                int xx = scanner.nextInt();//被修改的人
                                                System.out.println("读者编号:");
                                                int r1 = scanner.nextInt();
                                                Reader reader5 = new Reader();
                                                readerLists = IOUtils.readObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\reader.txt",reader5);
                                                boolean falg2 = false;
                                                for (int i = 0; i < readerLists.size(); i++) {
                                                    if (r1 == readerLists.get(i).getReaderid()) {
                                                        falg2 = true;
                                                        System.out.println("读者已存在");
                                                        break;
                                                    }
                                                }
                                                if (!falg2) {
                                                    System.out.println("读者姓名:");
                                                    String r2 = scanner.next();
                                                    System.out.println("读者性别:");
                                                    String r3 = scanner.next();
                                                    System.out.println("读者年龄:");
                                                    int r4 = scanner.nextInt();
                                                    System.out.println("读者所在院系");
                                                    String r5 = scanner.next();
                                                    System.out.println("读者电话");
                                                    int r6 = scanner.nextInt();
                                                    System.out.println("读者注册日期");
                                                    Date r7 = null;
                                                    System.out.println("年");
                                                    int r8 = scanner.nextInt();
                                                    System.out.println("月");
                                                    int r9 = scanner.nextInt();
                                                    System.out.println("日");
                                                    int r10 = scanner.nextInt();
                                                    r7 = new Date(r8 - 1900, r9 - 1, r10);

                                                    readerLists.set(xx - 1, new Reader(r1, r2, r3, r4, r5, r6, r7));
                                                    FileUtils.readerout2(readerLists);
                                                    break;
                                                }
                                            case 4:
                                                Reader reader1 = new Reader();
                                                readerLists = IOUtils.readObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\reader.txt", reader1);
                                                for (Reader s : readerLists) {
                                                    System.out.println(s);
                                                    System.out.println("------------------------------");
                                                }
                                                break;
                                        }
                                        break;
                                    case 6:
                                        System.out.println("1.添加书籍 2.删除书籍 3.查看书籍信息 4.图书借阅和归还 5.修改图书信息 6.退出");
                                        switch (scanner.nextInt()) {
                                            case 1:
                                                Book.add();
                                                break;
//
                                            case 2:
                                                System.out.println("请输入需要删除的书籍的ISBN");
                                                int aaaa = scanner.nextInt();
                                                boolean falg2 = false;
                                                for (int i = 0; i < borrowlist.size(); i++) {
                                                    if (aaaa == borrowlist.get(i).getBookISBN()) {
                                                        falg2 = true;
                                                        System.out.println("此书已被借出");
                                                        break;
                                                    }
                                                }
                                                if(!falg2){
                                                Book.delete();
                                                }
//
                                                break;
                                            case 3:
                                                Book.list();
                                                break;

                                            case 4:
                                                System.out.println("1.录入借书信息 2.查看借书信息 3.书籍归还");
                                                switch (scanner.nextInt()) {
                                                    case 1:
                                                        Reader reader = new Reader();
                                                        readerLists = IOUtils.readObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\reader.txt",reader);
                                                        for (Reader s : readerLists) {
                                                            System.out.println("读者id:");
                                                            System.out.println(s.getReaderid());
                                                            System.out.println("读者姓名:");
                                                            System.out.println(s.getName());
                                                            System.out.println("***************************");
                                                        }
                                                        System.out.println("请输入借阅者的编号");
                                                        int i = scanner.nextInt();
                                                        if (i - 1 > readerLists.size()) {
                                                            System.out.println("没有这个读者");
                                                        } else {
                                                            int readerId = readerLists.get(i - 1).getReaderid();

                                                            System.out.println("请输入读者类别(高级用户或普通用户):");
                                                            String readerType = scanner.next();
                                                            if (readerType.equals("高级用户") || readerType.equals("普通用户")) {

                                                                booklist = FileUtils.bookrin();
                                                                for (Book j : booklist) {
                                                                    System.out.println("书籍名称");
                                                                    System.out.println(j.getBookname());
                                                                    System.out.println("----------------------------------------");
                                                                }
                                                                System.out.println("请输入被借书籍的顺序");
                                                                int ii = scanner.nextInt();
                                                                if (ii - 1 > booklist.size()) {
                                                                    System.out.println("没有这本书");
                                                                } else {
                                                                    int bookIsbn = booklist.get(ii - 1).getISBN();

                                                                    Date borrowTime = new Date();


                                                                    borrowlist = FileUtils.borrowin();
                                                                    if (borrowlist.size() == 0) {
                                                                        borrowlist.add(new Borrow(readerId, readerType, bookIsbn, borrowTime));
                                                                        FileUtils.borrowout2(borrowlist);

                                                                    } else {
                                                                        for (int ji = 0; ji < borrowlist.size(); ji++) {
                                                                            if (borrowlist.get(ji).getBookISBN() == bookIsbn) {
                                                                                System.out.println("此书已被借出");
                                                                            } else {
                                                                                borrowlist.add(new Borrow(readerId, readerType, bookIsbn, borrowTime));
                                                                                FileUtils.borrowout2(borrowlist);

                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            } else {
                                                                System.out.println("请输入正确的信息");
                                                            }
                                                        }
                                                        break;
                                                    case 2:
                                                        borrowlist = FileUtils.borrowin();
                                                        for (Borrow D : borrowlist) {
                                                            System.out.println(D);
                                                            System.out.println("------------------------");
                                                        }
                                                        break;
                                                    case 3:
                                                        borrowlist = FileUtils.borrowin();
                                                        for (Borrow I : borrowlist) {
                                                            System.out.println("读者id为:");
                                                            System.out.println(I.getReaderId());
                                                            System.out.println("读者类型为:");
                                                            System.out.println(I.getReaderType());
                                                            System.out.println("外借书籍的书名为:");
                                                            System.out.println(I.getBookISBN());
                                                            System.out.println("----------------------------");
                                                        }
                                                        System.out.println("输入需要归还书籍的顺序");
                                                        int is = scanner.nextInt();

                                                        String ok = borrowlist.get(is - 1).getReaderType();
                                                        Date date1 = borrowlist.get(is - 1).getBorrowDate();
                                                        Date date2 = new Date();
                                                        //long during = (date2.getTime() - date1.getTime()) / (3600 * 24 * 1000);
                                                        long during = (date2.getTime() - date1.getTime()) / (1000);
                                                        System.out.println("借阅日期为:" + during + "天");
                                                        //可借阅的期限为35天
                                                        if (ok.equals("高级用户")) {
                                                            if (during < 5) {
                                                                System.out.println("您是高级用户,在归还期限内还书,还书成功");
                                                            } else {
                                                                System.out.println("您是普通用户,未在归还期限内还书,罚款50元");
                                                            }
                                                        } else {
                                                            if (during < 3) {
                                                                System.out.println("您是普通用户,在归还期限内还书,还书成功");
                                                            } else {
                                                                System.out.println("您是普通用户,未在归还期限内还书,罚款50元");
                                                            }
                                                        }
                                                        borrowlist.remove(is - 1);
                                                        FileUtils.borrowout2(borrowlist);
                                                        break;
                                                }
                                                break;
                                            case 5:
                                                System.out.println("请输入需要修改的书籍的ISBN");
                                                int aaa = scanner.nextInt();
                                                boolean falg3 = false;
                                                for (int i = 0; i < borrowlist.size(); i++) {
                                                    if (aaa == borrowlist.get(i).getBookISBN()) {
                                                        falg3 = true;
                                                        System.out.println("此书已被借出");
                                                        break;
                                                    }
                                                }
//                                                booklist=FileUtils.bookrin();
//                                                for (Book s : booklist) {
//                                                    System.out.println(s);
//                                                    System.out.println("---------------------------");
//                                                }
//                                                System.out.println("请输入需要修改的书籍的信息");
//                                                int aa = scanner.nextInt();
                                                if (!falg3){
                                                System.out.println("输入书籍ISBN");
                                                int c1=scanner.nextInt();
                                                System.out.println("输入书籍名字");
                                                String c2=scanner.next();
                                                System.out.println("输入书籍作者");
                                                String c3 =scanner.next();
                                                System.out.println("输入书籍出版社");
                                                String c4=scanner.next();
                                                System.out.println("输入出版日期");
                                                System.out.println("年");
                                                int x=scanner.nextInt();
                                                System.out.println("月");
                                                int y=scanner.nextInt();
                                                System.out.println("日");
                                                int z=scanner.nextInt();
                                                Date c5 = new Date(x,y,z);
                                                System.out.println("输入印刷次数");
                                                int c6 = scanner.nextInt();
                                                System.out.println("输入书籍价格");
                                                Double c7 = scanner.nextDouble();
                                                System.out.println("书籍类型");
                                                System.out.println("01名著  02杂志  03教科书  04娱乐读物");
                                                System.out.println("类型编号");
                                                int b81 = scanner.nextInt();
                                                System.out.println("类型");
                                                String b82 = scanner.next();
                                                BookType c8 = new BookType(b81, b82);
                                                booklist.set(aaa-1,new Book(c1,c2,c3,c4,c5,c6,c7,c8));
                                                IOUtils.writeObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\book.txt",booklist);
                                                }
                                            case 6:
                                                break;
                                        }
                                }

                            }
                        } else {
                            System.out.println("输入的用户名或密码不正确");
                        }

                    }

                case 2:
                    //System.out.println("1.登陆 (注册请联系管理员)");
//                switch (scanner.nextInt()) {
//                    case 1:
                    for (int aaa; ; ) {
                        System.out.println("请输入用户id:");
                        int dlid = scanner.nextInt();
                        System.out.println("请输入用户名:");
                        String ldyh = scanner.next();
                        Reader reader = new Reader();
                        readerLists = IOUtils.readObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\reader.txt",reader);
                        for (int cc = 0; cc < readerLists.size(); cc++) {
                            if (dlid == readerLists.get(cc).getReaderid() && ldyh.equals(readerLists.get(cc).getName())) {
                                System.out.println("登陆成功");
                                System.out.println("-----你可以查看书籍列表,并借阅书籍-----");
                                System.out.println("-----借阅后请在35天内归还,否则将会罚款-----");
                                booklist = FileUtils.bookrin();
                                for (Book look : booklist) {
                                    System.out.println("书名为:");
                                    System.out.println(look.getBookname());
                                    System.out.println("作者是:");
                                    System.out.println(look.getAuthor());
                                    System.out.println("*****************************");
                                }
                                while (true) {
                                    System.out.println("请输入被借书籍的编号");
                                    int isdn = scanner.nextInt();
                                    if (isdn > booklist.size()) {
                                        System.out.println("没有这本书");
                                        continue;
                                    } else {
                                        int bookisdn = booklist.get(isdn - 1).getISBN();
                                        Date borrowTime = new Date();
                                        borrowlist = FileUtils.borrowin();
                                        if (borrowlist.size() == 0) {
                                            borrowlist.add(new Borrow(dlid, "普通用户", bookisdn, borrowTime));
                                            FileUtils.borrowout2(borrowlist);
                                            System.out.println("借阅成功");
                                            System.out.println("一次只能借一本书哦");
                                            break;
                                        } else {
                                            boolean flag = false;
                                            for (int ji = 0; ji < borrowlist.size(); ji++) {
                                                if (borrowlist.get(ji).getBookISBN() == bookisdn) {
                                                    System.out.println("此书已被借出");
                                                    flag = true;
                                                    break;
                                                }
                                            }

                                            if (!flag) {
                                                borrowlist.add(new Borrow(dlid, "学生", bookisdn, borrowTime));
                                                FileUtils.borrowout2(borrowlist);
                                                System.out.println("借阅成功");
                                                System.out.println("一次只能借一本书哦");
                                            }
                                        }
                                    }
                                    break;
                                }
                                break;
                            } else {
                                System.out.println("输入的用户名错误");
                            }
                        }
                        break;
                    }
                    break;
            }
        }
}
}

各个类

书类

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class Book implements Serializable{
    private static final long serialVersionUID = 1100;
   private int ISBN;
   private String bookname;
   private String author;
   private String publish;//出版社
   private Date pubilishdate;//出版时间
   private int printtime;//印刷次数
   private double unitprice;//单价
   private BookType typename;//图书类型

    public Book() {

    }


    @Override
    public String toString() {
        return
                "ISBN是:" + ISBN +
                "书籍名字是:" + bookname + '\'' +
                ", 书籍作者是" + author + '\'' +
                ", 出版社是:" + publish + '\'' +
                ", 出版日期是:" + pubilishdate +
                ", 印刷次数是:" + printtime +
                ", 书籍单价是:" + unitprice +
                ", 书籍类型是:" + typename ;
    }

    public Book(int ISBN, String bookname, String author, String publish, Date pubilishdate, int printtime, double unitprice, BookType typename){
        this.ISBN=ISBN;
        this.bookname=bookname;
        this.author=author;
        this.publish=publish;
        this.pubilishdate=pubilishdate;
        this.printtime=printtime;
        this.unitprice=unitprice;
        this.typename=typename;
    }

    public int getISBN() {
        return ISBN;
    }

    public void setISBN(int ISBN) {
        this.ISBN = ISBN;
    }

    public String getBookname() {
        return bookname;
    }

    public void setBookname(String bookname) {
        this.bookname = bookname;
    }

    public String getAuthor() {
        return author;
    }

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

    public String getPublish() {
        return publish;
    }

    public void setPublish(String publish) {
        this.publish = publish;
    }

    public Date getPubilishdate() {
        return pubilishdate;
    }

    public void setPubilishdate(Date pubilishdate) {
        this.pubilishdate = pubilishdate;
    }

    public int getPrinttime() {
        return printtime;
    }

    public void setPrinttime(int printtime) {
        this.printtime = printtime;
    }

    public double getUnitprice() {
        return unitprice;
    }

    public void setUnitprice(double unitprice) {
        this.unitprice = unitprice;
    }

    public BookType getTypename() {
        return typename;
    }

    public void setTypename(BookType typename) {
        this.typename = typename;
    }

    public  static void add () throws IOException, ParseException {
        File file2 = new File("E:\\JAVA\\test\\Library3\\src\\txt\\book.txt");
        List<Book> booklist = new ArrayList<Book>();
        boolean flag2 = false;
        Scanner scanner = new Scanner(System.in);
        System.out.println("书籍ISBN号:");
        int b1 = scanner.nextInt();
        booklist = FileUtils.bookrin();
        for (int i = 0; i < booklist.size(); i++) {
            if (b1 == booklist.get(i).getISBN()) {
                flag2 = true;
                System.out.println("书籍ISDN存在");
                break;
            }
        }
        if (!flag2) {
            System.out.println("书名:");
            String b2 = scanner.next();
            System.out.println("书籍作者:");
            String b3 = scanner.next();
            System.out.println("书籍出版社:");
            String b4 = scanner.next();
            System.out.println("出版时间:");
            System.out.println("年");
            int b51 = scanner.nextInt();
            System.out.println("月");
            int b52 = scanner.nextInt();
            System.out.println("日");
            int b53 = scanner.nextInt();
            Date b5 = new Date(b51, b52, b53);
            System.out.println("印刷次数");
            int b6 = scanner.nextInt();
            System.out.println("书籍价格");
            int b7 = scanner.nextInt();
            System.out.println("书籍类型");
            System.out.println("01名著  02杂志  03教科书  04娱乐读物");
            System.out.println("类型编号");
            int b81 = scanner.nextInt();
            System.out.println("类型");
            String b82 = scanner.next();
            BookType b8 = new BookType(b81, b82);
            booklist.add(new Book(b1, b2, b3, b4, b5, b6, b7, b8));
            IOUtils.writeObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\book.txt", booklist);
//                                                FileUtils.bookout(new Book(b1, b2, b3, b4, b5, b6, b7, b8));
        }
    }

    public  static void delete () throws IOException, ParseException {
        Scanner scanner = new Scanner(System.in);
        File file2 = new File("E:\\JAVA\\test\\Library3\\src\\txt\\book.txt");
        List<Book> booklist = new ArrayList<Book>();
        booklist = FileUtils.bookrin();
        for (int i = 0; i < booklist.size(); i++) {
            System.out.println(booklist.get(i).getBookname());
        }
        System.out.println("请输入你要删除的书籍的名字");
        String rmame = scanner.next();
        boolean flag = false;
        for (Book B : booklist) {
            if (rmame.equals(B.getBookname())) {
                flag = true;
                booklist.remove(B);
                break;
            }
        }
        if (flag) {
            FileUtils.bookout2(booklist);
        }
    }
    public  static void list () throws IOException, ParseException {
        Scanner scanner = new Scanner(System.in);
        File file2 = new File("E:\\JAVA\\test\\Library3\\src\\txt\\book.txt");
        List<Book> booklist = new ArrayList<Book>();
        booklist = FileUtils.bookrin();
        booklist = FileUtils.bookrin();
        for (Book s : booklist) {
        System.out.println(s);
        System.out.println("---------------------------");
    }
}
}

书的类型类

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

//图书类型
public final class BookType implements Serializable {
//    Scanner scanner=new Scanner(System.in);
    private int typied;//图书类型编号
    private String typename;//图书类型名称
    //01神话类
    //02小说
    //03专业书
    //04儿童读物

    @Override
    public String toString() {
        return
                "书籍类型编号是:" + typied +
                ", 书籍类型是" + typename + '\'' ;
    }

    public BookType(int typied, String typename) {
        this.typied = typied;
        this.typename = typename;
    }

    public int getTypied() {
        return typied;
    }

    public void setTypied(int typied) {
        this.typied = typied;
    }

    public String getTypename() {
        return typename;
    }

    public void setTypename(String typename) {
        this.typename = typename;
    }

    public  void aviod() {
        ArrayList<BookType> booktypelist = new ArrayList<BookType>();
        booktypelist.add(new BookType(1,"名著"));
        booktypelist.add(new BookType(2,"杂志"));
        booktypelist.add(new BookType(3,"教科书"));
        booktypelist.add(new BookType(4,"娱乐读物"));

    }

    }

借阅类

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.Objects;

public class Borrow implements Serializable {
    private static final long serialVersionUID = 1000;
    private int readerId;//读者id
    private String readerType;//读者类别
    private int bookISBN;
    private Date borrowDate;

    public Borrow() {

    }

    public Date getBorrowDate() {
        return borrowDate;
    }

    public void setBorrowDate(Date borrowDate) {
        this.borrowDate = borrowDate;
    }

    public String getReaderType() {
        return readerType;
    }

    public void setReaderType(String readerType) {
        this.readerType = readerType;
    }

    public Borrow(int readerId, String readerType,int bookISBN, Date borrowDate) {
        this.readerId = readerId;
        this.readerType=readerType;
        this.bookISBN = bookISBN;
        this.borrowDate=borrowDate;

    }
    public int getReaderId() {
        return readerId;
    }

    public void setReaderId(int readerId) {
        this.readerId = readerId;
    }

    public int getBookISBN() {
        return bookISBN;
    }

    public void setBookISBN(int bookISBN) {
        this.bookISBN = bookISBN;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
       else {
           if (o instanceof Borrow){
               Borrow astring=(Borrow)o;
               if (this.getBookISBN()==(astring.getBookISBN())){
                   return true;
               }
           }
           return false;
        }
    }

    @Override
    public String toString() {
        return
                "读者id:" + readerId +
                ", 书籍ISBN:" + bookISBN+"借书日期为:"+borrowDate
                ;
    }

}

I/O流方法

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

public class IOUtils extends ObjectOutputStream{
//    private static final long serialVersionUID = 1900;

    public IOUtils(OutputStream out) throws IOException {
        super(out);
    }

    protected IOUtils() throws IOException, SecurityException {
        return;
    }

    /**
     * 1、针对字符串的读操作
     * 2、参数列表(文件路径)
     * 3、返回值(字符串列表)
     * 4、要求:文本中的字符串必须换行存储
     */
    public static List<String> readStrInfo(String filePath) {


        File file = new File(filePath);
        List<String> strings = new ArrayList<>();
        FileReader fileReader = null;
        BufferedReader bufferedReader = null;

//        判断文件是否存在,如果不存在则无法读取
        if (!file.exists()) {
            System.out.println("文件不存在");
            return null;
        }

//        读文件
        try {
            fileReader = new FileReader(file);
            bufferedReader = new BufferedReader(fileReader);
            String temp = new String();
            while ((temp = bufferedReader.readLine()) != null) {
                strings.add(temp);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (fileReader != null) {
                        try {
                            fileReader.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        return strings;
    }


    /**
     * 1、针对字符串的写操作
     * 2、参数列表(文件路径、写入的内容)
     * 3、返回值(布尔类型: 是否写入成功)
     * 4、要求: 写入的内容必须为字符串列表
     */
    public static boolean writeStrInfo(String filePath, List<String> strings) {
        File file = new File(filePath);
        FileWriter fileWriter = null;
        BufferedWriter bufferedWriter = null;
        try {
            boolean result = file.createNewFile();
            if (result) {
//                System.out.println("创建新文件");
            }

//            进行写入操作
            fileWriter = new FileWriter(file);
            bufferedWriter = new BufferedWriter(fileWriter);

            for (String s : strings) {
                bufferedWriter.write(s);
                bufferedWriter.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        } finally {
            if (bufferedWriter != null) {
                try {
                    bufferedWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (fileWriter != null) {
                        try {
                            fileWriter.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        return true;
    }

    /**
     * 1、针对对象的读操作
     * 2、参数列表(文件路径、对象类型)
     * 3、返回值(对象列表)
     * 4、要求:必须传入一个对象来明确对象类型,类必须实现Serializable接口,并且声明serialVersionUID的值,以保证版本的兼容性
     */

    public static <T> List<T> readObjectInfo(String filePath, T t) {
        File file = new File(filePath);
        List<T> objects = new ArrayList<>();
        FileInputStream fileInputStream = null;
        ObjectInputStream objectInputStream = null;
        if (!file.exists()) {
            System.out.println("文件不存在");
            return null;
        }

        try {
            fileInputStream = new FileInputStream(file);
            objectInputStream = new ObjectInputStream(fileInputStream);
            T p = null;
                while ((p = (T) objectInputStream.readObject()) != null) {
                    objects.add(p);
                }


//            T temp = null;
//            while ((temp = (T)objectInputStream.readObject()) != null){
//                objects.add(temp);
//            }
        } catch (EOFException e) {

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (objectInputStream != null) {
                try {
                    objectInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (fileInputStream != null) {
                        try {
                            fileInputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
            return objects;
        }

    }

    /**
     * 1、针对对象的写操作
     * 2、参数列表(文件路径,写入的内容)
     * 3、返回值(布尔类型:是否写入成功)
     * 4、要求:写入的内容必须是对象列表
     */
    public static <T> boolean writeObjectInfo(String filePath, List<T> objects) {

        File file = new File(filePath);
        FileOutputStream fileOutputStream = null;
        ObjectOutputStream objectOutputStream = null;
        try {
            if (!file.exists()) {
                file.createNewFile();
//                System.out.println("创建新文件");
            }

            fileOutputStream = new FileOutputStream(file);
            objectOutputStream = new ObjectOutputStream(fileOutputStream);

            for (T t : objects) {
                objectOutputStream.writeObject(t);
            }

        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            if (objectOutputStream != null) {
                try {
                    objectOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    if (fileOutputStream != null) {
                        try {
                            fileOutputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        return true;
    }

}

普通用户即读者类

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

public class Book implements Serializable{
    private static final long serialVersionUID = 1100;
   private int ISBN;
   private String bookname;
   private String author;
   private String publish;//出版社
   private Date pubilishdate;//出版时间
   private int printtime;//印刷次数
   private double unitprice;//单价
   private BookType typename;//图书类型

    public Book() {

    }


    @Override
    public String toString() {
        return
                "ISBN是:" + ISBN +
                "书籍名字是:" + bookname + '\'' +
                ", 书籍作者是" + author + '\'' +
                ", 出版社是:" + publish + '\'' +
                ", 出版日期是:" + pubilishdate +
                ", 印刷次数是:" + printtime +
                ", 书籍单价是:" + unitprice +
                ", 书籍类型是:" + typename ;
    }

    public Book(int ISBN, String bookname, String author, String publish, Date pubilishdate, int printtime, double unitprice, BookType typename){
        this.ISBN=ISBN;
        this.bookname=bookname;
        this.author=author;
        this.publish=publish;
        this.pubilishdate=pubilishdate;
        this.printtime=printtime;
        this.unitprice=unitprice;
        this.typename=typename;
    }

    public int getISBN() {
        return ISBN;
    }

    public void setISBN(int ISBN) {
        this.ISBN = ISBN;
    }

    public String getBookname() {
        return bookname;
    }

    public void setBookname(String bookname) {
        this.bookname = bookname;
    }

    public String getAuthor() {
        return author;
    }

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

    public String getPublish() {
        return publish;
    }

    public void setPublish(String publish) {
        this.publish = publish;
    }

    public Date getPubilishdate() {
        return pubilishdate;
    }

    public void setPubilishdate(Date pubilishdate) {
        this.pubilishdate = pubilishdate;
    }

    public int getPrinttime() {
        return printtime;
    }

    public void setPrinttime(int printtime) {
        this.printtime = printtime;
    }

    public double getUnitprice() {
        return unitprice;
    }

    public void setUnitprice(double unitprice) {
        this.unitprice = unitprice;
    }

    public BookType getTypename() {
        return typename;
    }

    public void setTypename(BookType typename) {
        this.typename = typename;
    }

    public  static void add () throws IOException, ParseException {
        File file2 = new File("E:\\JAVA\\test\\Library3\\src\\txt\\book.txt");
        List<Book> booklist = new ArrayList<Book>();
        boolean flag2 = false;
        Scanner scanner = new Scanner(System.in);
        System.out.println("书籍ISBN号:");
        int b1 = scanner.nextInt();
        booklist = FileUtils.bookrin();
        for (int i = 0; i < booklist.size(); i++) {
            if (b1 == booklist.get(i).getISBN()) {
                flag2 = true;
                System.out.println("书籍ISDN存在");
                break;
            }
        }
        if (!flag2) {
            System.out.println("书名:");
            String b2 = scanner.next();
            System.out.println("书籍作者:");
            String b3 = scanner.next();
            System.out.println("书籍出版社:");
            String b4 = scanner.next();
            System.out.println("出版时间:");
            System.out.println("年");
            int b51 = scanner.nextInt();
            System.out.println("月");
            int b52 = scanner.nextInt();
            System.out.println("日");
            int b53 = scanner.nextInt();
            Date b5 = new Date(b51, b52, b53);
            System.out.println("印刷次数");
            int b6 = scanner.nextInt();
            System.out.println("书籍价格");
            int b7 = scanner.nextInt();
            System.out.println("书籍类型");
            System.out.println("01名著  02杂志  03教科书  04娱乐读物");
            System.out.println("类型编号");
            int b81 = scanner.nextInt();
            System.out.println("类型");
            String b82 = scanner.next();
            BookType b8 = new BookType(b81, b82);
            booklist.add(new Book(b1, b2, b3, b4, b5, b6, b7, b8));
            IOUtils.writeObjectInfo("E:\\JAVA\\test\\Library3\\src\\txt\\book.txt", booklist);
//                                                FileUtils.bookout(new Book(b1, b2, b3, b4, b5, b6, b7, b8));
        }
    }

    public  static void delete () throws IOException, ParseException {
        Scanner scanner = new Scanner(System.in);
        File file2 = new File("E:\\JAVA\\test\\Library3\\src\\txt\\book.txt");
        List<Book> booklist = new ArrayList<Book>();
        booklist = FileUtils.bookrin();
        for (int i = 0; i < booklist.size(); i++) {
            System.out.println(booklist.get(i).getBookname());
        }
        System.out.println("请输入你要删除的书籍的名字");
        String rmame = scanner.next();
        boolean flag = false;
        for (Book B : booklist) {
            if (rmame.equals(B.getBookname())) {
                flag = true;
                booklist.remove(B);
                break;
            }
        }
        if (flag) {
            FileUtils.bookout2(booklist);
        }
    }
    public  static void list () throws IOException, ParseException {
        Scanner scanner = new Scanner(System.in);
        File file2 = new File("E:\\JAVA\\test\\Library3\\src\\txt\\book.txt");
        List<Book> booklist = new ArrayList<Book>();
        booklist = FileUtils.bookrin();
        booklist = FileUtils.bookrin();
        for (Book s : booklist) {
        System.out.println(s);
        System.out.println("---------------------------");
    }
}
}


管理员类

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Users implements Serializable {
  private int id;//用户编号
  private  String name;//用户姓名
  private  String passworsd;//用户密码


    @Override
    public String toString() {
        return "用户姓名是"+name+"密码是"+passworsd;
    }

    public Users(String name, String passworsd) {
        this.name = name;
        this.passworsd = passworsd;
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getPassworsd() {
        return passworsd;
    }

    public void setPassworsd(String passworsd) {
        this.passworsd = passworsd;
    }


    public boolean equals(Object users){
        if (this == users) {
            return true;
        } else {
            if (users instanceof Users) {
                Users aString = (Users)users;
                if (this.getName() .equals(aString.getName())&&this.getPassworsd().equals(aString.getPassworsd())) {
                    return true;
                }
            }
            return false;
        }
    }


}




版权声明:本文为xyz_980702原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。