快来看看你学校的图书管理系统的底层代码吧

目录

1.知识结合

2.系统使用效果 

2.1管理员系统

 2.2普通用户使用系统

3.图书存储类

4.创建用户相关的类

4.1在user包里面先创建一个User 类,这是一个抽象类

4.2创建管理员类 AdmiUser,是User 的子类

5.创建操作相关的类

5.1各个类的接口 IOperation

5.2新增图书类AddOperation

5.3借阅图书类BorrowOperation

5.4删除图书类DelOperation

5.5打印图书类DisplayOperation

5.6查找图书类FindOperation

5.7归还图书类ReturnOperation

5.8退出系统类ExitOperation

6.Main 类和main 方法


1.知识结合

知识点:类,抽象类,封装,继承,多态,接口等。

熟悉类与类之间的关系

掌握抽象类,接口,继承,封装等知识点的应用
下图为用到的包和类

2.系统使用效果 

2.1管理员系统

查找图书

 新增图书和显示图书

 2.2普通用户使用系统

查找图书

 借阅图书的归还图书

3.图书存储类

1.创建一个book包,用来表示存储书的文件

在book包里创建Book类,作为一本书

package book;

public class Book {
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String type;//类型
    private boolean isBorrowed;//是否借出

    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;

    }

    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;
    }

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

在book包里创建BookList 类,用来存储书

package book;

public class BookList {
    private Book[] books = new Book[10];
    private int usedSize;
    public BookList() {
        books[0] = new Book("平凡的世界","路遥",34.0,"小说");
        books[1] = new Book("百万英镑","马克.吐温",20.0,"小说");
        books[2] = new Book("追风筝的人","胡塞尼",30.0,"小说");
        this.usedSize = 3;
    }

    public int getUsedSize() {
        return usedSize;
    }

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

    /**
     * 获取到pos 位置的一本书
     * @param pos
     * @return
     */

    public Book getPos(int pos) {
        return this.books[pos];
    }

    /**
     * 设置下标为一本书
     * @param pos
     * @param book
     */

    public void setBooks(int pos,Book book) {
        this.books[pos] = book;
    }

}

4.创建用户相关的类

创建一个user包

4.1在user包里面先创建一个User 类,这是一个抽象类

package user;

import book.BookList;
import operation.IOperation;

public abstract class User {
    protected String name;

    protected IOperation[] iOperations;

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

    public abstract int menu();
    public void doWork(int choice, BookList bookList) {
        iOperations[choice].work(bookList);
    }

}

4.2创建管理员类 AdmiUser,是User 的子类

package user;

import operation.*;

import java.util.Scanner;

public class AdminUser extends User{
    public AdminUser(String name) {
        super(name);
        this.iOperations = new IOperation[] {
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DisplayOperation(),

        };
    }
    public int menu() {
        System.out.println("-----------------管理员菜单-----------------");
        System.out.println("hello "+ this.name +" 欢迎来到图书管理系统");
        System.out.println("1.查找图书");
        System.out.println("2.新增图书");
        System.out.println("3.删除图书");
        System.out.println("4.显示图书");
        System.out.println("0.退出系统");
        System.out.println("------------------------------------------");

        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

4.3创建普通用户使用类 NormalUser ,是User 的子类

package user;

import operation.*;

import java.util.Scanner;

public class NormalUser extends User{

    public NormalUser(String name) {
        super(name);
        this.iOperations = new IOperation[] {
                new ExitOperation(),
                new FindOperation(),
                new BorrowOperation(),
                new ReturnOperation(),
        };
    }

    public int menu() {
        System.out.println("-----------------普通用户菜单-----------------");
        System.out.println("hello "+ this.name +" 欢迎来到图书使用系统");
        System.out.println("1.查找图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("0.退出系统");
        System.out.println("------------------------------------------");

        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

5.创建操作相关的类

先创建一个operation包,然后在包里面创建操作类

5.1各个类的接口 IOperation

package operation;

import book.BookList;

import java.util.Scanner;

public interface IOperation {

    Scanner scanner = new Scanner(System.in);
    void work(BookList bookList);
}

5.2新增图书类AddOperation

package operation;

import book.Book;
import book.BookList;

public class AddOperation implements IOperation{

    public void work(BookList bookList) {
        System.out.println("新增图书!");
        System.out.println("请输入图书的名字: ");
        String name = scanner.nextLine();
        System.out.println("请输入图书的作者:");
        String author = scanner.nextLine();
        System.out.println("请输入图书的类型:");
        String type = scanner.nextLine();
        System.out.println("请输入图书的价格:");
        double price = scanner.nextDouble();

        Book book = new Book(name,author,price,type);
        int size = bookList.getUsedSize();
        bookList.setBooks(size,book);
        bookList.setUsedSize(size+1);
        System.out.println("新增图书成功");

    }

}

5.3借阅图书类BorrowOperation

package operation;

import book.Book;
import book.BookList;

public class BorrowOperation implements IOperation{

    public void work(BookList bookList) {

        System.out.println("借阅图书");
        System.out.println("请输入你要借阅的图书名:");
        String name = scanner.nextLine();
        int size = bookList.getUsedSize();
        for (int i = 0; i < size; i++) {
            Book book = bookList.getPos(i);
            if (name.equals(book.getName())) {
                book.setBorrowed(true);
                System.out.println("借阅成功");
                System.out.println(book);
                return;
            }
        }
        System.out.println("查无此书,请重新查找");
    }

}

5.4删除图书类DelOperation

package operation;

import book.Book;
import book.BookList;

public class DelOperation implements IOperation{

    public void work(BookList bookList) {
        System.out.println("删除图书!");
        //根据书名找到书的位置 index
        System.out.println("请输入你要删除的图书名");
        String name = scanner.nextLine();
        int currentSize = bookList.getUsedSize();
        int index = 0;//存储找到的下标
        int i = 0;
         for (;i < currentSize; i++) {
             Book book = bookList.getPos(i);
             if (book.getName().equals(name)) {
                 index = i;
                 break;
             }
         }
         if (i >= currentSize) {
             System.out.println("没有你要删除的书");
             return;
         }
         //2.进行删除
        for (int j = index; j < currentSize - 1; j++) {
            Book book = bookList.getPos(j+1);
            bookList.setBooks(j,book);//把书往前移一步
        }
        bookList.setBooks(currentSize,null);
        bookList.setUsedSize(currentSize-1);
        System.out.println("删除成功!");

    }
}

5.5打印图书类DisplayOperation

package operation;

import book.Book;
import book.BookList;

public class DisplayOperation implements IOperation{

    public void work(BookList bookList) {
        System.out.println("打印图书!");
        int size = bookList.getUsedSize();
        for (int i = 0; i < size; i++) {
            Book book = bookList.getPos(i);
            System.out.println(book);
        }

    }

}

5.6查找图书类FindOperation

package operation;

import book.Book;
import book.BookList;
import com.sun.media.jfxmediaimpl.HostUtils;

public class FindOperation implements IOperation{

    public void work(BookList bookList) {
        System.out.println("查找图书!");
        System.out.println("请输入你要查找的书名");
        String name = scanner.nextLine();
        int size = bookList.getUsedSize();
        for (int i = 0; i < size; i++) {
            Book book = bookList.getPos(i);
            if (book.getName().equals(name)) {
                System.out.println("找到的书信息如下");
                System.out.println(book);
                return;
            }
        }
        System.out.println("查无此书");

    }
}

5.7归还图书类ReturnOperation

package operation;

import book.Book;
import book.BookList;

public class ReturnOperation implements IOperation{

    public void work(BookList bookList) {
        System.out.println("归还图书!");
        System.out.println("请输入你要归还的图书名:");
        String name = scanner.nextLine();
        int size = bookList.getUsedSize();
        for (int i = 0; i < size; i++) {
            Book book = bookList.getPos(i);
            if (name.equals(book.getName())) {
                book.setBorrowed(false);
                System.out.println("归还成功!");
                System.out.println(book);
                return;
            }
        }
        System.out.println("你要归还的图书不属于改系统");

    }
}

5.8退出系统类ExitOperation

package operation;

import book.BookList;

public class ExitOperation implements IOperation{

    public void work(BookList bookList) {
        System.out.println("退出系统!");
        System.exit(0);

    }
}

6.Main 类和main 方法

import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;

import java.util.Scanner;

/**
 * 整个程序的入口
 */
public class Main {

    public static User login() {
        System.out.println("请输入你的姓名");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        System.out.println("请输入你的身份:1.管理员    0.普通用户");
        int choice = scanner.nextInt();
        if(choice == 1) {
            return new AdminUser(name);
        }else {
            return new NormalUser(name);
        }

    }

    public static void main(String[] args) {
        BookList bookList = new BookList();
        User user = login();//向上转型

        while (true) {
            int choice = user.menu();//发生了动态绑定--多态
            user.doWork(choice,bookList);

        }

    }
}

猜你喜欢

转载自blog.csdn.net/m0_60494863/article/details/121895674