栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java】IO流实现图书管理系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java】IO流实现图书管理系统

用户操作界面设计:

我认为这些功能应分为读者操作和管理员操作。

其中,读者操作界面:

管理员操作界面:

因此,应该同时设计首页,包含登录和注册功能,用来判断身份, 进入相应界面:

调用相应方法实现这些功能,并且在方法体中应以 return; 的方式结束当前方法(退出当前页面) 

 基本信息设计:

对基本信息的设计如下:

  

实现这些操作:

设计完这些基本信息和操作后,在LibraryTest完成 。

IO流和集合的使用:

把集合定义在main方法外,用public static修饰,整个类都可以使用;

对于需要排序的集合,直接定义成TreeMap类自动排序,在类中重写排序方法;

IO流在main方法中使用,定义一对序列化IO流输入和输出管道(一定只能是一对,否则会错)。

依次指向不同文件进行对象信息的输入输出;

具体代码:

LibraryTest类:

package wryyyyy;

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

public class LibraryTest
{
    //存储用户对象
    public static Set ALL_USERS = new HashSet<>();
    //存储读者和借书信息
    public static Map> READERS_BOOKS = new TreeMap<>();
    //存储图书借阅信息
    public static Set ALL_IN_LEND = new HashSet<>();
    //存储图书信息
    public static Map ALL_BOOKS = new TreeMap<>();
    //定义扫描器
    public static final Scanner SYS_SC = new Scanner(System.in);
    //记录一个登录对象
    public static User loginUser;
    //日期格式化
    public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    //准备测试数据
    static
    {
//        public Reader(String name,String number,String password,String academic, String subject, String gradeAndClass)
        Reader c1 = new Reader();
        c1.setName("wryyyyy");
        c1.setNumber("2022523");
        c1.setPassWord("123456");
        c1.setAcademic("信息学院");
        c1.setSubject("计算机");
        c1.setGradeAndClass("21-01");
        ALL_USERS.add(c1);
        Set lends1 = new HashSet<>();
        READERS_BOOKS.put(c1,lends1);

        Manager b1 = new Manager();
        b1.setName("wry");
        b1.setNumber("2021285");
        b1.setPassWord("098765");
        ALL_USERS.add(b1);

//        public Book(String name, String number, String author, String press, String data, double price)
        Book a1 = new Book();
        a1.setName("大学物理");
        a1.setNumber("B-123");
        a1.setAuthor("作者1");
        a1.setPress("人民出版社");
        a1.setData("2021/10");
        a1.setContain(50);
        a1.setPrice(59.8);
        ALL_BOOKS.put(a1,100);
    }


    public static void main(String[] args) throws IOException, ClassNotFoundException
    {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("src/wryyyyy/ALL_BOOKS.txt"));
        Object o1 = ois.readObject();
        ALL_BOOKS = (TreeMap)o1;

        ois = new ObjectInputStream(new FileInputStream("src/wryyyyy/ALL_USERS"));
        Object o2 = ois.readObject();
        ALL_USERS = (Set)o2;

        ois = new ObjectInputStream(new FileInputStream("src/wryyyyy/ALL_IN_LEND"));
        Object o3 = ois.readObject();
        ALL_IN_LEND = (Set) o3;

        ois = new ObjectInputStream(new FileInputStream("src/wryyyyy/READERS_BOOKS"));
        Object o4 = ois.readObject();
        READERS_BOOKS = (TreeMap>)o4;
        Set readers = READERS_BOOKS.keySet();

        showMain();

        System.out.println("-----------------");

        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("src/wryyyyy/ALL_BOOKS.txt"));
        oos.writeObject(ALL_BOOKS);
        oos = new ObjectOutputStream(new FileOutputStream("src/wryyyyy/ALL_USERS"));
        oos.writeObject(ALL_USERS);
        oos = new ObjectOutputStream(new FileOutputStream("src/wryyyyy/ALL_IN_LEND"));
        oos.writeObject(ALL_IN_LEND);
        oos = new ObjectOutputStream(new FileOutputStream("src/wryyyyy/READERS_BOOKS"));
        oos.writeObject(READERS_BOOKS);

        System.out.println("-------------------");
    }

    private static void showMain()//主页面
    {
        while (true)
        {
            System.out.println("=================进入首页================");
            System.out.println("1.登录");
            System.out.println("2.读者注册");
            System.out.println("3.管理员注册");
            System.out.println("4.退出系统");
            System.out.println("请输入操作命令");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "1":
                    login();
                    break;//break之后回到首页
                case "2":
                    addReader();
                    break;
                case "3":
                    addManager();
                    break;
                case "4":
                    return;
                default:
                    System.out.println("命令有误!请确认");
            }
        }
    }

    private static void login()//登录
    {
        while (true)
        {
            System.out.println("请输入登录名称:");
            String loginName = SYS_SC.nextLine();
            System.out.println("请输入登录密码(6位数字):");
            String passWord = SYS_SC.nextLine();

            User u = getUserByLoginName(loginName);

            if(u!=null)
            {
                if(u.getPassWord().equals(passWord))
                {
                    loginUser = u;
                    if(u instanceof Manager)
                    {
                        showManagerMain();
                    }
                    else
                    {
                        showReaderMain();
                    }
                }
                else
                {
                    System.out.println("密码错误");
                }
            }
            else
            {
                System.out.println("登录名称错误,请确认!");
            }
            return;//方法执行完之后,结束login回到首页(Switch那里)
        }
    }

    private static void showReaderMain()//展示读者界面
    {
        System.out.println("============读者页面=============");
        System.out.println("欢迎"+loginUser.getName()+"进入");
        System.out.println("1.展示读者详情");//读者信息查询
        System.out.println("2.浏览图书馆所有图书");
        System.out.println("3.查询图书");
        System.out.println("4.借书");
        System.out.println("5.还书");
        System.out.println("6.退出");

        while (true)
        {
            System.out.println("请输入命令:");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "1":
                    showReaderDetail();//ok
                    break;
                case "2":
                    scanBook();//ok
                    break;
                case "3":
                    inquireBook();//ok
                    break;
                case "4":
                    borrowBook();
                    break;
                case "5":
                    returnBook();
                    break;
                case "6":
                    return;//干掉这个方法
                default:
                    System.out.println("不存在该命令!");
                    break;
            }
        }
    }

    private static void showManagerMain()//管理员界面
    {
        System.out.println("==============管理员界面==============");
        //浏览全部信息
        System.out.println("1.浏览图书馆所有图书");
        System.out.println("2.浏览图书借阅表");
        System.out.println("3.浏览读者信息表");
        //图书操作
        System.out.println("4.添加图书");
        System.out.println("5.查询图书");//ok
        System.out.println("6.图书下架");
        System.out.println("7.图书修改");//ok
        System.out.println("8.图书排序");
        //读者操作
        System.out.println("9.添加读者信息");
        System.out.println("10.注销读者账号");
        System.out.println("11.读者信息修改");//ok
        System.out.println("12.读者信息排序");
        System.out.println("13.读者信息查询");//ok
        //退出
        System.out.println("14.退出");

        while (true)
        {
            System.out.println("请输入命令:");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "1":
                    scanBook();//ok
                    break;
                case "2":
                    bookLendInformation();//ok
                    break;
                case "3":
                    readerInformation();//ok
                    break;
                case "4":
                    addBook();//ok
                    break;
                case "5":
                    inquireBook();//ok
                    break;
                case "6":
                    Book book = new Book();//ok
                    Set books = ALL_BOOKS.keySet();
                    deleteBook();
                    break;
                case "7":
                    updateBook();//ok
                    break;
                case "8":
                    sortBook();//ok
                    break;
                case "9":
                    addReader();//ok
                    break;
                case "10":
                    Reader reader = new Reader();//ok
                    Set readers = READERS_BOOKS.keySet();
                    deleteReader();
                    break;
                case "11":
                    updateReader();//ok
                    break;
                case "12":
                    sortReader();//ok
                    break;
                case "13":
                    inquirerReader();//ok
                    break;
                case "14":
                    return;//ok
                default:
                    System.out.println("不存在该命令!");
                    break;
            }
        }
    }

    private static void borrowBook()//借出图书
    {
        //现存数量大于0可以借出(get value值)ok
        //借出后修改图书信息表中现存数量(修改value值)ok
        //名字添加到图书借阅表,个人信息表也写上->lend对象 ok
        while (true)
        {
            System.out.println("==================图书借阅==================");
            System.out.println("请输入书号/书名:");
            String input = SYS_SC.nextLine();
            Book book = getBookByInput(input);
            System.out.println(book);
            if(book!=null)
            {
                if(ALL_BOOKS.get(book)>0)
                {
                    System.out.println("是否确认借出y/n");
                    String choice = SYS_SC.nextLine();
                    if (Objects.equals(choice,"y"))
                    {
                        ALL_BOOKS.put(book,ALL_BOOKS.get(book)-1);
                        Date d = new Date();
                        long time = d.getTime();
                        String TimeFrom = sdf.format(time);
                        Lend lend = new Lend(book,(Reader) loginUser,TimeFrom,null);
                        READERS_BOOKS.get((Reader)loginUser).add(lend);
                        READERS_BOOKS.put((Reader) loginUser,READERS_BOOKS.get((Reader)loginUser));
//                        ALL_IN_LEND.addAll(READERS_BOOKS.get((Reader)loginUser));
                        ALL_IN_LEND.add(lend);
                        System.out.println("借阅成功!");
//                        System.out.println(ALL_BOOKS.get(book));
//                        System.out.println(READERS_BOOKS.get(loginUser));
                    }
                }
                else
                {
                    System.out.println("该图书以被借空,请一段时间后再来。");
                }
            }
            else
            {
                System.out.println("馆内没有该图书!");
            }
            System.out.println("请问是否继续?y/n");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "y":
                    break;
                default:
                    System.out.println("好的!");
                    return;
            }
        }
    }
    private static void returnBook()//归还图书
    {
        while (true)
        {
            System.out.println("==================图书归还==================");
            System.out.println("请输入书号/书名:");
            String input = SYS_SC.nextLine();
            Book book = getBookByInput(input);
            System.out.println(book);
            Lend lend = getLendInformationByBook(book);
            if (lend!=null)
            {
                System.out.println("是否确认归还y/n");
                String choice = SYS_SC.nextLine();
                if (Objects.equals(choice,"y"))
                {
                    ALL_BOOKS.put(book,ALL_BOOKS.get(book)+1);
                    Date d = new Date();
                    long time = d.getTime();
                    String TimeTo = sdf.format(time);
                    lend.setTime_to(TimeTo);
                    ALL_BOOKS.put(book,ALL_BOOKS.get(book));

                    Lend lend1 = getLendInformationByBook1(book);
                    ALL_IN_LEND.add(lend);
//                    ALL_IN_LEND.remove(lend1);
                }
            }
            else
            {
                System.out.println("您没有借阅该书!");
            }
            System.out.println("请问是否继续?y/n");
            String command = SYS_SC.nextLine();
            switch (command) {
                case "y":
                    break;
                default:
                    System.out.println("好的!");
                    return;
            }
        }
    }

    private static void addBook()//上架图书
    {
        while (true)
        {
            System.out.println("===============添加图书================");
            System.out.println("请输入书名:");
            String name = SYS_SC.nextLine();
            System.out.println("请输入书号(例如:A-023):");
            String number = SYS_SC.nextLine();
            System.out.println("请输入作者:");
            String author = SYS_SC.nextLine();
            System.out.println("请输入出版社:");
            String press = SYS_SC.nextLine();
            System.out.println("请输入出版时间(例如2021/12):");
            String date = SYS_SC.nextLine();
            System.out.println("请输增加后的馆存数量:");
            String add_contain = SYS_SC.nextLine();
            System.out.println("请输入价格:");
            String price = SYS_SC.nextLine();
//            public Book(String name, String number, String author, String press, String data, int contain, double price)
            Book book = new Book(name,number,author,press,date,Integer.valueOf(add_contain),Double.valueOf(price));
            ALL_BOOKS.put(book,Integer.valueOf(add_contain));
            System.out.println(book);
            System.out.println("上架成功:《"+book.getName()+"》");
            System.out.println("请问是否继续?y/n");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "y":
                    break;
                default:
                    System.out.println("好的!");
                    return;
            }
        }
    }
    private static void addReader()//添加读者
    {
        while (true)
        {
            System.out.println("===============添加读者================");
            System.out.println("请输入读者名:");
            String name = SYS_SC.nextLine();
            System.out.println("请输入读者学号(7位数字):");
            String number = SYS_SC.nextLine();
            System.out.println("请设置读者登录密码(6位数子):");
            String password = SYS_SC.nextLine();
            System.out.println("请输入学院(信息学院,机械电子学院,经管学院,林学院,外国语学院,动科学院,资环学院:");
            String academic = SYS_SC.nextLine();
            System.out.println("请输入专业:");
            String subject = SYS_SC.nextLine();
            System.out.println("请输入年级和班级(如21-10):");
            String GradeAndClass = SYS_SC.nextLine();
            Reader reader = new Reader(name,number,password,academic,subject,GradeAndClass);
            Set personal_lend = new HashSet<>();
            ALL_USERS.add(reader);
            READERS_BOOKS.put(reader,personal_lend);
            System.out.println("添加成功:"+reader.getName());
            System.out.println("请问是否继续?y/n");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "y":
                    break;
                default:
                    System.out.println("好的!");
                    return;
            }
        }
    }

    private static void addManager()//添加管理员
    {
        System.out.println("===============添加管理员================");
        System.out.println("请输入姓名:");
        String name = SYS_SC.nextLine();
        System.out.println("请输入工号(7):");
        String number = SYS_SC.nextLine();
        System.out.println("请设置登录密码(6位数):");
        String password = SYS_SC.nextLine();
        Manager manager = new Manager(name,number,password);
        ALL_USERS.add(manager);
        System.out.println("添加成功:"+manager.getName());
    }
    private static void inquireBook()//图书查询
    {
        System.out.println("===================查询图书信息==================");
        while (true)
        {
            System.out.println("请输入书名/书号/作者/出版社");
            String search = SYS_SC.nextLine();
            Set books = ALL_BOOKS.keySet();
            for (Book book : books)
            {
                if (book.getName().contains(search)||book.getNumber().contains(search)
                        ||book.getAuthor().contains(search)||book.getPress().contains(search))
                {
                    System.out.println(book);
                }
            }
            System.out.println("查询完毕");
            System.out.println("请问是否继续?y/n");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "y":
                    break;
                default:
                    System.out.println("好的!");
                    return;
            }
        }
    }
    private static void inquirerReader()//更改读者信息
    {
        System.out.println("===================查询读者信息==================");
        while (true)
        {
            System.out.println("请输入姓名/学号/专业");
            String search = SYS_SC.nextLine();
            Set readers = READERS_BOOKS.keySet();
            for (Reader reader : readers)
            {
                if (reader.getName().contains(search)||reader.getNumber().contains(search)
                        ||reader.getSubject().contains(search))
                {
                    System.out.println(reader);
                }
            }
            System.out.println("查询完毕");
            System.out.println("请问是否继续?y/n");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "y":
                    break;
                default:
                    System.out.println("好的!");
                    return;
            }
        }
    }
    private static void deleteBook()//下架图书
    {
        while (true)
        {
            System.out.println("===============下架图书================");
            if (ALL_BOOKS.size() == 0)
            {
                System.out.println("当前无图书可下架");
            }
            System.out.println("请输入需要下架图书的名称/书号:");
            String input = SYS_SC.nextLine();
            Book x2 = getBookByInput(input);
            if(x2 != null)
            {
                ALL_BOOKS.remove(x2);
                System.out.println("您已成功删除了" + x2.getName());
            }
            else
            {
                System.out.println("馆内没有该图书");
            }
            System.out.println("请问是否继续?y/n");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "y":
                    break;
                default:
                    System.out.println("好的!");
                    return;
            }
        }
    }

    private static void deleteReader()//注销读者账号
    {
        while (true)
        {
            System.out.println("===============删除读者信息================");
            if (READERS_BOOKS.size() == 0)
            {
                System.out.println("当前无读者信息可删除");
            }
            System.out.println("请输入需要删除读者的名称:");
            String name = SYS_SC.nextLine();
            Reader x1 = (Reader) getUserByLoginName(name);
            if(x1 != null)
            {
                READERS_BOOKS.remove(x1);
                System.out.println("您已成功删除了" + x1.getName());
                System.out.println(READERS_BOOKS);
            }
            else
            {
                System.out.println("没有该读者的信息");
            }
            System.out.println("请问是否继续?y/n");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "y":
                    break;
                default:
                    System.out.println("好的!");
                    return;
            }
        }
    }

    private static void updateBook()//修改图书信息
    {
        System.out.println("===============修改图书================");
        if (ALL_BOOKS.size() == 0)
        {
            System.out.println("当前无作品可修改");
            return;
        }
        while (true)
        {
            System.out.println("请输入需要修改的图书名称/书号:");
            String input = SYS_SC.nextLine();

            Book book = getBookByInput(input);
            if (book != null)
            {
                System.out.println("请输入修改后书名:");
                String name = SYS_SC.nextLine();
                System.out.println("请输入修改后书号(例如:A-023):");
                String number = SYS_SC.nextLine();
                System.out.println("请输入修改后作者:");
                String author = SYS_SC.nextLine();
                System.out.println("请输入修改后出版社:");
                String press = SYS_SC.nextLine();
                System.out.println("请输入修改后出版时间(例如2021/12):");
                String date = SYS_SC.nextLine();
//                System.out.println("请输入该图书总馆存数量:");
//                int contain = SYS_SC.nextInt();
                System.out.println("请输入修改后价格:");
                String price = SYS_SC.nextLine();
                Book book1 = new Book(name,number,author,press,date, book.getContain(), Double.valueOf(price));
                ALL_BOOKS.put(book1,ALL_BOOKS.get(book));
                System.out.println("修改成功!");
                ALL_BOOKS.remove(book);
            }
            else
            {
                System.out.println("馆内没有该图书");
            }
            System.out.println("请问是否继续?y/n");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "y":
                    break;
                default:
                    System.out.println("好的!");
                    return;
            }
        }
    }
    private static void updateReader()//修改读者信息
    {
        System.out.println("===============修改读者信息================");
        if (ALL_BOOKS.size() == 0)
        {
            System.out.println("当前无读者可修改");
            return;
        }
        while (true)
        {
            System.out.println("请输入需要修改的读者名称:");
            String readerName = SYS_SC.nextLine();

            Reader reader = (Reader) getUserByLoginName(readerName);
            ALL_USERS.remove(reader);

            if (reader != null)
            {
                System.out.println("请输入修改后读者名:");
                String name = SYS_SC.nextLine();
                System.out.println("请输入修改后读者学号(7位数字):");
                String number = SYS_SC.nextLine();
                System.out.println("请重新设置读者登录密码(6位数字):");
                String password = SYS_SC.nextLine();
                System.out.println("请输入修改后学院:");
                String academic = SYS_SC.nextLine();
                System.out.println("请输入修改后专业:");
                String subject = SYS_SC.nextLine();
                System.out.println("请输入修改后年级和班级(如21-04):");
                String GradeAndClass = SYS_SC.nextLine();
                Reader reader1 = new Reader(name,number,password,academic,subject,GradeAndClass);
                ALL_USERS.add(reader1);
                READERS_BOOKS.put(reader1,READERS_BOOKS.get(reader));
                READERS_BOOKS.remove(reader);
            }
            else
            {
                System.out.println("没有该读者相关信息");
            }
            System.out.println("请问是否继续?y/n");
            String command = SYS_SC.nextLine();
            switch (command)
            {
                case "y":
                    break;
                default:
                    System.out.println("好的!");
                    return;
            }
        }
    }
    private static void sortReader()//TreeMap集合会自动排序,以重写排序规则
    {
        System.out.println("读者信息排序完成!");
    }
    private static void sortBook()//TreeMap集合会自动排序,以重写排序规则
    {
        System.out.println("完成排序!");
    }
    private static void readerInformation()//全部读者信息
    {
        System.out.println("======================读者信息表===================");
        Set readers = READERS_BOOKS.keySet();
        for (Reader reader : readers)
        {
            System.out.println(reader);
        }
    }
    private static void bookLendInformation()//全部图书借阅信息
    {
        System.out.println("======================图书借阅表===================");
        for (Lend lend : ALL_IN_LEND)
        {
            System.out.println(lend);
        }
    }
    private static void scanBook()//浏览全部图书
    {
        System.out.println("===================图书信息表===================");
        //提取键值
        Set books = ALL_BOOKS.keySet();
        for (Book book : books)
        {
             System.out.println(book+"  现有数量:"+ALL_BOOKS.get(book));
        }

    }

    public static User getUserByLoginName(String loginName)//根据用户姓名确定对象
    {
        for (User allUser : ALL_USERS)
        {
            if (Objects.equals(allUser.getName(),loginName))
            {
                return allUser;
            }
        }
        return null;
    }

    public static void showReaderDetail()//展示读者个人详情
    {
        System.out.println("=============="+loginUser.getName()+"的个人主页"+"==============");
        Reader reader = (Reader) loginUser;
        System.out.println(reader.getName()+"tt"+reader.getNumber());
        Set lends = READERS_BOOKS.get(loginUser);
        if (lends.size()>0)
        {
            System.out.println("书名ttt书号tt借出时间tt归还时间");
            for (Lend lend : lends)
            {
                System.out.println(lend.getBook_in_lend().getName()+"ttt"+lend.getBook_in_lend().getNumber()+"ttt"
                        +lend.getTime_from()+"ttt"+lend.getTime_to());
            }
        }
        else
        {
            System.out.println("当前没有记录");
        }
    }

    public static Lend getLendInformationByBook(Book book)//获取个人借书信息
    {
        Set lends = READERS_BOOKS.get(loginUser);
        if (lends.size()>0)
        {
            for (Lend lend : lends)
            {
                if (Objects.equals(book.getName(),lend.getBook_in_lend().getName()))
                {return lend;}
            }
        }
        return null;
    }
    public static Lend getLendInformationByBook1(Book book)
    {
        for (Lend lend : ALL_IN_LEND)
        {
            if (lend.getBook_in_lend().getName().contains(book.getName()))
            {
                return lend;
            }
        }
        return null;
    }
    public static Book getBookByInput(String InPut)//通过书名/书号获取图书对象
    {
        Set books = ALL_BOOKS.keySet();
        for (Book book : books)
        {
            if (book.getName().contains(InPut)||book.getNumber().contains(InPut))
                return book;
        }
        return null;
    }
}

基本元素类(作为父类被继承): 

package wryyyyy;

import java.io.Serializable;

public class Element implements Serializable
{
    private String name;
    private String number;

    public Element(String name, String number) {
        this.name = name;
        this.number = number;
    }

    public Element() {
    }

    public String getName() {
        return name;
    }

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

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }
}

 图书信息类:

package wryyyyy;

import java.io.Serializable;
import java.util.*;

public class Book extends Element implements Comparable, Serializable
{
    private String author;
    private String press;
    private String data;
    private int contain;
    private double price;

    public Book(String name, String number, String author, String press, String data, int contain, double price) {
        super(name, number);
        this.author = author;
        this.press = press;
        this.data = data;
        this.contain = contain;
        this.price = price;
    }

    public Book() {
    }

    public String getAuthor() {
        return author;
    }

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

    public String getPress() {
        return press;
    }

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

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    public int getContain() {
        return contain;
    }

    public void setContain(int contain) {
        this.contain = contain;
    }

    public double getPrice() {
        return price;
    }

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

    @Override
    public String toString() {
        return "书名:"+this.getName()+"  书号:"+this.getNumber()+"  作者:"+author+"  出版社:"+press+
                "  出版时间:"+data+"  馆存数量:"+contain+"  价格:"+price;
    }

    //重写hashCode?


    @Override
    public int compareTo(Book o)
    {
        for (int i = 0; i < 5; i++)
        {
            if (Objects.equals((int)o.getNumber().charAt(i),(int)this.getNumber().charAt(i)))
            {
                continue;
            }
            else
            {
                return (int)o.getNumber().charAt(i)-(int)this.getNumber().charAt(i)>0?-1:1;
            }
        }
        return 0;
    }

    @Override
    public boolean equals(Object o)
    {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Book book = (Book) o;
        return getName()==book.getName()&&getNumber()==book.getNumber();
    }
    @Override
    public int hashCode() {
        return Objects.hash(getName(),getNumber(),author, press, data, contain, price);
    }
}

用户类(继承Element类,同时作为读者类和管理员类的父类): 

package wryyyyy;

import java.io.Serializable;

public class User extends Element implements Serializable
{
    private String passWord;

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public User(String name, String number, String passWord) {
        super(name, number);
        this.passWord = passWord;
    }

    public User() {
    }
}

读者类: 

package wryyyyy;

import java.io.Serializable;
import java.util.*;

public class Reader extends User implements Comparable, Serializable
{
    private String academic;
    private String subject;
    private String GradeAndClass;

    public Reader(String name,String number,String password,String academic, String subject, String gradeAndClass)
    {
        super(name,number,password);
        this.academic = academic;
        this.subject = subject;
        GradeAndClass = gradeAndClass;
    }

    public Reader() {
    }

    public String getAcademic() {
        return academic;
    }

    public void setAcademic(String academic) {
        this.academic = academic;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getGradeAndClass() {
        return GradeAndClass;
    }

    public void setGradeAndClass(String gradeAndClass) {
        GradeAndClass = gradeAndClass;
    }

    @Override
    public String toString() {
        return  "姓名:"+this.getName()+"  学号:"+this.getNumber()+"  登录密码:"+this.getPassWord()
                +"  学院:"+academic+"  专业:"+subject+"  班级:"+GradeAndClass;
    }

    @Override
    public int compareTo(Reader o)
    {
        List sizes = new ArrayList<>();
        Collections.addAll(sizes,"信息学院","机械电子学院","经管学院","林学院","外国语学院","动科学院","资环学院");
        if (Objects.equals(o.getAcademic(),this.getAcademic())==false)
        {
            return sizes.indexOf(o.getAcademic())-sizes.indexOf(this.getAcademic())>0?-1:1;
        }
        else if(Objects.equals(o.getNumber(),this.getNumber())==false)
        {
            return Integer.valueOf(o.getNumber())-Integer.valueOf(this.getNumber())>0?-1:1;
        }
        else
        {
            return 0;
        }
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Reader reader = (Reader) o;
        return Objects.equals(academic, reader.academic) && Objects.equals(subject, reader.subject) && Objects.equals(GradeAndClass, reader.GradeAndClass);
    }

    @Override
    public int hashCode() {
        return Objects.hash(getName(),getNumber(),getPassWord(),academic, subject, GradeAndClass);
    }
}

管理员类: 

package wryyyyy;

import java.io.Serializable;

public class Manager extends User implements Serializable
{
    public Manager(String name, String number, String passWord) {
        super(name, number, passWord);
    }

    public Manager() {
    }

    @Override
    public String toString()
    {
        return "姓名:"+this.getName()+"  工号:"+this.getNumber()+"  登录密码:"+this.getPassWord();
    }
}

借阅信息类: 

package wryyyyy;

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

public class Lend implements Serializable
{
    private Book book_in_lend;
    private Reader reader_in_lend;//如果出现问题就把这个改成字符串
    private String time_from;//改成存储字符串,数据格式化放在借书那里
    private String time_to;

    public Lend(Book book_in_lend, Reader reader_in_lend, String time_from, String time_to)
    {
        this.book_in_lend = book_in_lend;
        this.reader_in_lend = reader_in_lend;
        this.time_from = time_from;
        this.time_to = time_to;
    }

    public Lend() {
    }

    public Book getBook_in_lend() {
        return book_in_lend;
    }

    public void setBook_in_lend(Book book_in_lend) {
        this.book_in_lend = book_in_lend;
    }

    public Reader getReader_in_lend() {
        return reader_in_lend;
    }

    public void setReader_in_lend(Reader reader_in_lend) {
        this.reader_in_lend = reader_in_lend;
    }

    public String getTime_from() {
        return time_from;
    }

    public void setTime_from(String time_from) {
        this.time_from = time_from;
    }

    public String getTime_to() {
        return time_to;
    }

    public void setTime_to(String time_to) {
        this.time_to = time_to;
    }

    @Override
    public String toString() {
        return "---" +
                "在借图书:" + book_in_lend.getName() +"("+book_in_lend.getNumber()+
                ")  读者姓名:" + reader_in_lend.getName() +"  读者学号:" + reader_in_lend.getNumber()+
                "  借出时间:" + (time_from) +
                "  归还时间:" + time_to ;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Lend lend = (Lend) o;
        return  Objects.equals(book_in_lend, lend.book_in_lend) && Objects.equals(reader_in_lend, lend.reader_in_lend);
    }

    @Override
    public int hashCode() {
        return Objects.hash(book_in_lend, reader_in_lend);
    }
}
其他:

以Element作为图书类,读者类,管理员类的父类的目的是一开始因为这三者都有删除,查询等相同功能,打算定义泛型方法让他们都可以用,但是由于这样没有节省很多代码,所以没有定义泛型方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/929532.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号