用List集合完成一个图书管理系统

发布于:2023-07-04 ⋅ 阅读:(164) ⋅ 点赞:(0)

图书管理系统:List集合版

图书管理系统List集合版
1.需求描述:
通过我们学习过的面向对象和集合部分完成一个综合案例:简版图书管理系统!
本系统共分为两个角色,分别为用户和管理员,都只能进行最基本图书操作。

管理员模块功能
1)查看书籍列表:查询所有的书籍信息。
2)查看书籍信息:通过键盘录入要查询的书籍名称,如果书籍存在,则输出书籍的信息,如果不存在就输出不存在。
3)删除书籍信息:通过键盘录入要删除书籍的名字,如果书籍存在,则删除书籍的信息,如果不存在就输出书籍不存在,无法删除。
4)添加书籍:添加书籍到集合中。
5)退出系统:结束程序。

用户模块功能
1.查阅书籍信息:通过键盘录入要查询的书籍名称,如果书籍存在,则输出书籍的信息,如果不存在就输出不存在。
2.借阅书籍:输入借阅的书籍名字来借阅书籍,如果书籍不存在或已被借阅,则输出对应的情况。
3.归还书籍:归还已经借阅的书籍。
4.退出系统:结束程序。

2.实现步骤:
1)定义Book类,成员变量为书本的基本信息
成员变量:
姓名:name
作者:author
价格:price
种类:type
是否被借出:isBorrowed
构造方法:
无参构造
全参构造
每个成员变量对应给出get/set方法:
toString方法:
HashCode&equals方法:

2)定义BookList类,作为书籍的库存
成员变量:
书籍列表:ArrayList books
构造方法:
无参构造:向books集合中添加初始化书籍数据
全参构造
每个成员变量对应给出get/set方法:

3)定义Manager类,声明图书管理员的操作
成员方法:
查看所有书籍列表:lookAllBook()
查看书籍信息:lookBook()
删除书籍信息:deleteBook()
添加书籍:addBook()

4)定义User类,声明用户的操作
成员方法:
查看书籍信息:lookBook()
借阅书籍:borrowBook()
归还书籍:returnBook()

5)图书管理系统主界面的搭建:BookManager类
用输出语句完成主界面的编写
用Scanner实现键盘录入数据
通过键盘录入与if语句来选择身份:1.系统管理员身份 2.用户身份
不同的身份进入对应的管理系统,通过面向对象的思想完成对应的功能

代码实现:
Book类

package com.tohka.bookmanager;

import java.util.Objects;

public class Book {
    // 用来表示一本书的信息
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String type;//种类
    private boolean isBorrowed = false;//是否被借出
    //无参构造
    public Book() {
    }
    //全参构造
    Book(String name, String author, double price, String type, boolean isBorrowed) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
        this.isBorrowed = isBorrowed;
    }
    //getter&setter

    public String getName() {
        return name;
    }

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

    public String getAuthor() {
        return author;
    }

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

    public double getPrice() {
        return price;
    }

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

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public boolean isBorrowed() {
        return isBorrowed;
    }

    public void setBorrowed(boolean borrowed) {
        isBorrowed = borrowed;
    }

    //toString
    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ", isBorrowed=" + isBorrowed +
                '}';
    }
    //equals&hashCode

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Book book = (Book) o;
        return Double.compare(book.price, price) == 0 &&
                isBorrowed == book.isBorrowed &&
                Objects.equals(name, book.name) &&
                Objects.equals(author, book.author) &&
                Objects.equals(type, book.type);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, author, price, type, isBorrowed);
    }
}

BookList类

package com.tohka.bookmanager;

import java.util.ArrayList;

public class BookList {
    // 书籍列表
    private ArrayList<Book> books = new ArrayList<>();
    //构造初始化向书籍列表中存放数据
    public BookList(){
        books.add(new Book("水浒传", "施耐庵", 25, "文学", false));
        books.add(new Book("红楼梦", "曹雪芹", 30, "文学", false));
        books.add(new Book("三国演义", "罗贯中", 28, "文学", false));
        books.add(new Book("西游记", "吴承恩", 35, "文学", false));
        books.add(new Book("数据结构", "严蔚敏", 35, "计算机", false));

    }

    public ArrayList<Book> getBooks() {
        return books;
    }

    public void setBooks(ArrayList<Book> books) {
        this.books = books;
    }

}

Manager类

package com.tohka.bookmanager;

import java.util.ArrayList;
import java.util.ListIterator;
import java.util.Scanner;

public class Manager {

//            ----- 1.查看书籍列表 -----
//            ----- 2.查询书籍信息 -----
//            ----- 3.删除书籍信息 -----
//            ----- 4.添加书籍     -----


    public void lookAllBook(BookList bookList) {
        // 1.查看所有书籍列表
        ArrayList<Book> books = bookList.getBooks();
        for (Book book : books) {
            System.out.println(book);
        }
    }
        // 2.查询书籍信息
    public void lookBook(BookList bookList) {
        System.out.println("请输入要查询书籍的名字!");
        Scanner scanner = new Scanner(System.in);
        String bookName = scanner.next();
        ArrayList<Book> books = bookList.getBooks();
        boolean flag = false;
        for (Book book : books) {
            //如果书籍存在,则输出书籍的信息
            if(book.getName().equals(bookName)) {
                System.out.println(book);
                flag = true;
            }
        }
        //如果不存在就输出不存在
        if(flag == false) {
            System.out.println("查询的书籍不存在!");
        }
    }
        //3.删除书籍信息
    public void deleteBook(BookList bookList) {
        System.out.print("请输入想要删除书籍的名字: ");
        Scanner scanner = new Scanner(System.in);
        String bookName = scanner.next();
        boolean flag = false;
        ArrayList<Book> books = bookList.getBooks();
        ListIterator<Book> bookListIterator = books.listIterator();
        while (bookListIterator.hasNext()) {
            Book book = bookListIterator.next();
            if(bookName.equals(book.getName())) {
                bookListIterator.remove();
                flag = true;
                System.out.println("删除成功");
            }
        }
        if(flag == false) {
            System.out.println("书籍不存在,无法删除信息");
        }
    }
    //4.添加书籍
    public void addBook(BookList bookList) {
        System.out.println("请按照 书籍名 作者 价格 类型 的顺序输入增加书籍的信息!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入书籍名");
        String name = scanner.next();
        System.out.println("请输入书籍作者");
        String author = scanner.next();
        System.out.println("请输入书籍价格");
        double price = scanner.nextDouble();
        System.out.println("请输入书籍类型");
        String type = scanner.next();
        Book book = new Book(name, author, price, type,false);
        bookList.getBooks().add(book);
        System.out.println("添加成功");
    }

}

User类

package com.tohka.bookmanager;

import java.util.ArrayList;
import java.util.Scanner;
// 普通用户
public class User {
    //        ----- 1.查阅书籍信息 -----
    //        ----- 2.借阅书籍     -----
    //        ----- 3.归还书籍     -----

    //1.查阅书籍信息
    public void lookBook(BookList bookList) {
        System.out.println("请输入要查询书籍的名字!");
        Scanner scanner = new Scanner(System.in);
        String bookName = scanner.next();
        boolean flag = false;
        for (Book book : bookList.getBooks()) {
            if (book.getName().equals(bookName)) {
                System.out.println(book);
                flag = true;
            }
        }
        if (flag == false) {
            System.out.println("您要查询的书籍不存在!");
        }

    }

    //2.借阅书籍
    public void borrowBook(BookList bookList) {
        System.out.print("请输入想要借阅书籍的名字: ");
        Scanner scanner = new Scanner(System.in);
        String bookName = scanner.next();
        boolean flag = false;
        for (Book book : bookList.getBooks()) {
            if (book.getName().equals(bookName)) {
                flag = true;
                if (book.isBorrowed() == false) {
                    book.setBorrowed(true);
                    System.out.println("借阅成功");
                    System.out.println(book);
                }
            }
        }
        if (flag == false) {
            System.out.println("您要借阅的书籍不存在或已被借阅!");
        }
    }

     //3.归还书籍
    public void returnBook(BookList bookList) {
        System.out.print("请输入想要归还书籍的名字: ");
        Scanner scanner = new Scanner(System.in);
        String BookName = scanner.next();
        ArrayList<Book> books = bookList.getBooks();
        for (Book book : books) {
            if(book.getName().equals(BookName)) {
                book.setBorrowed(false);
                System.out.println("归还书籍成功!");
            }
        }

    }
}

管理系统主界面

package com.tohka.bookmanager;

import java.util.Scanner;

public class BookManager {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Manager manager = new Manager();
        User user = new User();
        BookList bookList = new BookList();
        System.out.println("欢迎进入tohka图书管理系统!");
        System.out.println("请选择身份:1.系统管理员身份  2.用户身份");
        int num = scanner.nextInt();
        if(num==1) {
            System.out.println("欢迎进入管理员后台");
            while (true) {
                System.out.println("请输入需要操作的编号:1.查看书籍列表  2.查询书籍信息  3.删除书籍信息  4.添加书籍  5.退出体统");
                int number = scanner.nextInt();
                switch (number){
                    case 1 :
                        //1.查看书籍列表
                        manager.lookAllBook(bookList);
                        break;
                    case 2 :
                        //2.查询书籍信息
                        manager.lookBook(bookList);
                        break;
                    case 3 :
                        //3.删除书籍信息
                        manager.deleteBook(bookList);
                        break;
                    case 4 :
                        //4.添加书籍
                        manager.addBook(bookList);
                        break;
                    case 5 :
                        //5.退出体统
                        System.exit(0);
                    default:
                        System.out.println("输入的数据有误, 请重新输入1-5进行选择");
                        break;
                }

            }
        }else if(num == 2) {
            System.out.println("欢迎进入用户界面");
            while (true) {
                System.out.println("请输入需要操作的编号:1.查阅书籍信息  2.借阅书籍  3.归还书籍  4.退出体统");
                int number = scanner.nextInt();
                switch (number) {
                    case 1:
                        //1.查阅书籍信息
                        user.lookBook(bookList);
                        break;
                    case 2:
                        //2.借阅书籍
                        user.borrowBook(bookList);
                        break;
                    case 3:
                        //3.归还书籍
                        user.returnBook(bookList);
                        break;
                    case 4:
                        //4.退出体统
                        System.exit(0);
                    default:
                        System.out.println("输入的数据有误, 请重新输入1-4进行选择");
                        break;
                }
            }
        }else {
            System.out.println("身份不正确");
        }
    }
}
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到