Home  >  Article  >  Java  >  Detailed explanation of Java graphics and text to implement a library management system

Detailed explanation of Java graphics and text to implement a library management system

WBOY
WBOYforward
2022-06-07 18:57:393308browse

This article brings you relevant knowledge about java, which mainly introduces related issues about how to implement a library management system, including searching for books, adding books, deleting books, and borrowing books Let’s take a look at the content below. I hope it will be helpful to everyone.

Detailed explanation of Java graphics and text to implement a library management system

Recommended study: "java video tutorial"

1. Function introduction

1.1 Usage introduction

1. Enter the name

2. Select the identity

3. Print according to the identity Different function menu

1.2 Basic framework


2. Specific ideas

book(package)

operation(function package)

user(user package)


3. Code implementation

book(package)

Book(book)

package book;/**
 * User: gu'jiu
 * Date: 2022-05-18
 * Time: 14:45
 * Description:书
 */public class Book {
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String type;//类型
    private boolean state;//书的状态(已借出or未借出)
    
	//对书进行初始化,书的状态不用进行初始化(默认未借出)
    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
        this.state = state;
    }

    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 isState() {
        return state;
    }

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

    @Override
    public String toString() {
        return "[" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ", " + (state == true ? "已借出" : "未借出") +
                ']';
    }}

BookList(bookshelf Class)

package book;/**
 * User: gu'jiu
 * Date: 2022-05-18
 * Time: 14:52
 * Description:书架
 */public class BookList {
    private Book[] books = new Book[10];
    private int usedSize;

    public BookList() {
        books[0] = new Book("三国演义","罗贯中",19.9,"小说");
        books[1] = new Book("西游记","吴承恩",29.9,"小说");
        books[2] = new Book("红楼梦","曹雪芹",26.9,"小说");
        usedSize = 3;
    }

    public Book getBooks(int pos) {//输入下标获取该下标的这本书
        return books[pos];
    }

    public void setBooks(int pos, Book book) {//输入下标和一本书,在该下标放入一本书
        this.books[pos] = book;
    }

    public int getUsedSize() {
        return usedSize;
    }

    public void setUsedSize(int usedSize) {
        this.usedSize = usedSize;
    }}

operation (function package)

IOperation (functional interface)

package operation;import book.BookList;/**
 * User: gu'jiu
 * Date: 2022-05-18
 * Time: 15:07
 * Description:接口
 */public interface IOperation {
    void work(BookList bookList);}

FindOperation (find books)

package operation;import book.Book;import book.BookList;import java.util.Scanner;/**
 * User: gu'jiu
 * Date: 2022-05-18
 * Time: 15:09
 * Description:查找书籍信息
 */public class FindOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println();
        System.out.println("查找图书");
        System.out.println("------------------------");
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入书的名称:");
        String name = scanner.nextLine();

        //获取书架中图书数量
        int size = bookList.getUsedSize();
        //根据名字查找
        for (int i = 0; i < size; i++) {
            Book book = bookList.getBooks(i);
            if (book.getName().equals(name)) {
                System.out.println(book);
                return;
            }
        }
        System.out.println("未找到该书。");
    }}

AddOperation (add Books)

package operation;import book.Book;import book.BookList;import java.util.Scanner;/**
 * User: gu&#39;jiu
 * Date: 2022-05-18
 * Time: 15:04
 * Description:新增书籍
 */public class AddOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println();
        System.out.println("添加图书");
        System.out.println("------------------------");
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入书名:");
        String name = scanner.nextLine();
        System.out.print("请输入作者:");
        String author = scanner.nextLine();
        System.out.print("请输入书的类型:");
        String type = scanner.nextLine();
        System.out.print("请输入价格:");
        double price = scanner.nextDouble();

        Book book = new Book(name, author, price, type);
        bookList.setBooks(bookList.getUsedSize(), book);//将书放入书架

        bookList.setUsedSize(bookList.getUsedSize()+1);//书籍数量+1
    }}

DelOperation (delete books)

package operation;import book.Book;import book.BookList;import java.util.Scanner;/**
 * User: gu&#39;jiu
 * Date: 2022-05-18
 * Time: 15:05
 * Description:删除书籍
 */public class DelOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println();
        System.out.println("删除图书");
        System.out.println("------------------------");
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要删除的书名:");
        String name = scanner.nextLine();

        //获取书架中现在有几本书
        int size = bookList.getUsedSize();
        int i = 0;
        //根据书名找到这个本书的下标
        for (i = 0; i < size; i++) {
            Book book = bookList.getBooks(i);
            if (book.getName().equals(name)) {
                break;
            }
        }
        if (i == size) {
            System.out.println("删除失败,未找到该书。");
            return;
        }
        //通过前移将书删除
        for (i = 0; i < size - 1; i++) {
            bookList.setBooks(i,bookList.getBooks(i + 1));
        }
        bookList.setUsedSize(bookList.getUsedSize()-1);//书架中图书数量-1
        System.out.println("删除成功。");
    }}

BorrowOperation (borrow books)

package operation;import book.Book;import book.BookList;import java.util.Scanner;/**
 * User: gu&#39;jiu
 * Date: 2022-05-18
 * Time: 15:05
 * Description:借阅书籍
 */public class BorrowOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println();
        System.out.println("借阅图书");
        System.out.println("------------------------");
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要借书的名称:");
        String name = scanner.nextLine();

        //获取书架中现在有几本书
        int size = bookList.getUsedSize();
        for (int i = 0; i < size; i++) {
            Book book = bookList.getBooks(i);
            //判断在书架中是否有这本书
            if (book.getName().equals(name)) {
                //判断书是否被借走
                if (!book.isState()) {
                    System.out.println("借阅成功!");
                    book.setState(true);//将书的状态改为已借出
                    return;
                } else {
                    System.out.println("借阅失败,该书已被别人借走。");
                    return;
                }
            }
        }
        System.out.println("借阅失败,未找到该书。");
    }}

ReturnOperation (return books)

package operation;import book.Book;import book.BookList;import java.util.Scanner;/**
 * User: gu&#39;jiu
 * Date: 2022-05-18
 * Time: 15:10
 * Description:归还书籍
 */public class ReturnOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println();
        System.out.println("归还图书");
        System.out.println("------------------------");
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要还书的名称:");
        String name = scanner.nextLine();

        //获取书架中现在有几本书
        int size = bookList.getUsedSize();
        for (int i = 0; i < size; i++) {
            Book book = bookList.getBooks(i);
            //判断在书架中是否有这本书
            if (book.getName().equals(name)) {
                //判断书是否已被借走
                if (book.isState()) {
                    System.out.println("归还成功!");
                    book.setState(false);//将书的状态改为未借出
                    return;
                } else {
                    System.out.println("归还失败,该书已还未被借走。");
                    return;
                }
            }
        }
        System.out.println("归还失败,未找到该书。");
    }}

DisplayOperation (print book information )

package operation;import book.Book;import book.BookList;/**
 * User: gu&#39;jiu
 * Date: 2022-05-18
 * Time: 15:06
 * Description:打印全部书籍信息
 */public class DisplayOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println();
        System.out.println("显示全部图书");
        System.out.println("------------------------");
        int size = bookList.getUsedSize();
        for (int i = 0; i < size; i++) {
            Book book = bookList.getBooks(i);
            System.out.println(book);
        }
    }}

ExitOperation (exit the system)

import book.BookList;/**
 * User: gu&#39;jiu
 * Date: 2022-05-18
 * Time: 15:08
 * Description:退出系统
 */public class ExitOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println();
        System.out.println("退出系统。");
        System.out.println("------------------------");
        System.exit(0);
    }}

user (user package)

User (user abstract class)

package user;import book.BookList;import operation.IOperation;/**
 * User: gu&#39;jiu
 * Date: 2022-05-18
 * Time: 15:11
 * Description:使用者
 */abstract public class User {
    protected String userName;//使用者姓名
    protected IOperation[] iOperations;//功能数组

    public User(String userName) {
        this.userName = userName;
    }

    public abstract int menu();
    
    //输入选择,调用不同的功能
    public void doOperation(int choice, BookList bookList) {
        this.iOperations[choice].work(bookList);//动态绑定
    }}

AdminUser (Administrator)

package user;import operation.*;import java.util.Scanner;/**
 * User: gu&#39;jiu
 * Date: 2022-05-18
 * Time: 15:13
 * Description:管理员
 */public class AdminUser extends User{
    public AdminUser(String userName) {
        super(userName);
        //管理员功能
        this.iOperations = new IOperation[] {
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DisplayOperation()
        };
    }

    @Override
    public int menu() {
        System.out.println();
        System.out.println("hello " + this.userName + " 欢迎来到图书馆");
        while(true) {
            System.out.println("------------------------");
            System.out.println("1.查找图书");
            System.out.println("2.新增图书");
            System.out.println("3.删除图书");
            System.out.println("4.显示全部图书");
            System.out.println("0.退出系统");
            System.out.println("------------------------");
            System.out.print("请输入你的操作:");
            Scanner scanner = new Scanner(System.in);
            int choice = scanner.nextInt();
            //保证输入数字有效
            if (choice > 4 || choice < 0) {
                System.out.println("输入有误请重新输入。");
            } else {
                return choice;
            }
        }
    }}

NormalUser (Normal user)

package user;import operation.*;import java.util.Scanner;/**
 * User: gu&#39;jiu
 * Date: 2022-05-18
 * Time: 15:13
 * Description:学生
 */public class NormalUser extends User{
    public NormalUser (String userName) {
        super(userName);
        //用户功能
        this.iOperations = new IOperation[] {
                new ExitOperation(),
                new FindOperation(),
                new BorrowOperation(),
                new ReturnOperation(),
        };
    }

    @Override
    public int menu() {
        System.out.println();
        System.out.println("hello "+this.userName+" 欢迎来到图书馆");
        while(true) {
            System.out.println("------------------------");
            System.out.println("1.查找图书");
            System.out.println("2.借阅图书");
            System.out.println("3.归还图书");
            System.out.println("0.退出系统");
            System.out.println("------------------------");
            System.out.print("请输入你的操作:");
            Scanner scanner = new Scanner(System.in);
            int choice = scanner.nextInt();
            //保证输入数字有效
            if (choice > 3 || choice < 0) {
                System.out.println("输入有误请重新输入。");
            } else {
                return choice;
            }
        }
    }}

Test class

import book.BookList;import user.AdminUser;import user.NormalUser;import user.User;import java.util.Scanner;/**
 * User: gu&#39;jiu
 * Date: 2022-05-18
 * Time: 15:20
 * Description:图书管理系统
 */public class Test {
    public static User login() {
        System.out.println("欢迎使用图书管理系统");
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入您的姓名:");
        String name = scanner.nextLine();

        while(true){
            System.out.println("-----------------------------");
            System.out.println("请选择您的身份:1>管理员 2>普通用户");

            System.out.print("请输入:");
            int choice = scanner.nextInt();

            //保证输入数字有效
            if (choice == 1) {
                return new AdminUser(name);
            } else if (choice == 2) {
                return new NormalUser(name);
            } else {
                System.out.println("输入有误,请重新输入。");
            }
        }
    }
    public static void main(String[] args) {
        BookList bookList = new BookList();
        User user = login();//向上转型

        while(true){
            int choice = user.menu();
            user.doOperation(choice, bookList);
        }
    }}

4. Explanation of part of the code (doOperation)

The user.doOperation(choice, bookList); in the main function is difficult to understand. Let’s explain it1.

user.

may refer to two objects
2. When instantiates
this object, in the constructor, we have Prepare iOperations[].
3. Access the corresponding object according to the input subscript
(for example: 2), and then call the work method.
Recommended study: "

java video tutorial

"

The above is the detailed content of Detailed explanation of Java graphics and text to implement a library management system. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete