springcloud+vue实现图书管理系统

一、前言:

今天我们来分享一下一个简单的图书管理系统
我们知道图书馆系统可以有两个系统,一个是管理员管理图书的系统,管理员可以(1)查找某一本图书情况、(2)增加新的图书、(3)删除旧的图书、(4)查看图书馆有哪些图书、(5)图书类别管理
(6)读者管理 (7)借阅管理
另一个就是作为学生的我们去借书的系统,我们去图书馆可以(1)查找某一本图书的情况、(2)借阅某一本书、(3)归还某一本书、(4)退出管理系统。

二、部分代码实现

1、代码的类、抽象类及接口

(1)book
这个包就是字面意识用来存放书的信息。

(2)operation
这个包存放的是一些操作的实现,如查找图书,退出系统等等(容我慢慢道来)。

(3)user
这个包是用于区分两种不同使用者,而去实现相应的操作。

(4)Main
将以上所说的东西结合起来,从而实现这个图书馆管理系统。

2、代码的具体实现
(1)book
Book类:用于设置一本书的书名、作者、价格、类型、是否被借出的情况

package book;
 
public class Book {
    private String name;//书名
    private String author;//作者
    private int price;//价格
    private String type;//类型
    private boolean isBorrowed;//是否被借出
    
// Book构造方法
    public Book(String name, String author, int price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }
//个个变量的get和set方法
    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 int getPrice() {
        return price;
    }
 
    public void setPrice(int 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==true)? "已借出":"未借出")
                + '}';
    }
}

BookList类:一个书架,初始存放三本书,可以添加,删除,查找。

package book;
 
public class BookList {
 
    private Book[] books =new Book[10];//创建一个Book类的书组,用来放书
 
    private int usedSize;//记录book有多少本书
 
    //BookList的构造方法,存放所以书的内容
    public BookList(){
        books[0] = new Book("三国演义","罗贯中",19,"小说");
        books[1] = new Book("西游记","吴承恩",29,"小说");
        books[2] = new Book("红楼梦","曹雪芹",9,"小说");
        usedSize = 3;
    }
 
    /**
     *
     * @param pos pos位置一定是合法的
     * @return 一本书
     */
    public Book getBook(int pos) {
        return books[pos];
    }
 
    /**
     *
     * @param pos pos位置一定是合法的
     * @param book 你要放的书
     */
    public void setBooks(int pos,Book book) {
        books[pos] = book;
    }
 
    /**
     * 实时获取当前的 书的个数
     * @return
     */
    public int getUsedSize() {
        return usedSize;
    }
 
    /**
     * 实时的修改当前书架上的书的个数
     */
    public void setUsedSize(int size) {
        usedSize = size;
    }
 
}

(2)operation
IOperation接口:给operation通过work抽象方法

package operation;
 
import book.BookList;
 
//因为每个操作类都要实现work抽象方法,所以创建一个接口,提供work方法
public interface IOperation {
        void work(BookList bookList) ;
}
AddOperation类:进行添加操作 

package operation;
 
import book.BookList;
import book.Book;
 
import java.util.Scanner;
 
public class AddOperation implements IOperation{
    //重写work方法,添加书籍的信息
    @Override
    public void work(BookList bookList) {
        System.out.println("新增图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入图书的名字:");
        String name = scanner.nextLine();
        System.out.println("请输入图书的作者:");
        String author = scanner.nextLine();
        System.out.println("请输入图书的类型:");
        String type = scanner.nextLine();
        System.out.println("请输入图书的价格:");
        int price = scanner.nextInt();
 
//new一个Book的对象,保持新添加书籍的信息
        Book book = new Book(name,author,price,type);
 
//重新设置书架书的数量的值
        int currentSize = bookList.getUsedSize();
 
        bookList.setBooks(currentSize,book);
 
        bookList.setUsedSize(currentSize+1);
 
        System.out.println("新增书籍成功!");
    }
}
 BorrowOperation类:进行借书操作

package operation;
 
import book.Book;
import book.BookList;
 
import java.util.Scanner;
 
public class BorrowOperation implements IOperation{
    //重写work方法
    @Override
    public void work(BookList bookList) {
        Scanner sc=new Scanner(System.in);
 
//给借书的人查看所有图书的信息,方便借阅
        System.out.println("我们图书馆有:");
        for (int i=0;i< bookList.getUsedSize();i++)
        {
            Book book=bookList.getBook(i);
            System.out.println(book);
        }
        System.out.println("请问你要借的图书是:");
        String name = sc.nextLine();
 
//判断书籍是否可以借阅
        for (int i=0;i< bookList.getUsedSize();i++)
        {
            Book book=bookList.getBook(i);
            if (book.getName().equals(name))
            {
                System.out.println("找到图书!");
                if(!book.isBorrowed())
                {
                    System.out.println("该书未被借出,借书成功!");
                    book.setBorrowed(true);
                    System.out.println(book);
                    break;
                }
            }
            if (i== bookList.getUsedSize()-1)
              System.out.println("该书已被借出,借书失败!");
        }
    }
}

DelOperation类:进行删除操作

package operation;
 
import book.Book;
import book.BookList;
 
import java.util.Scanner;
 
public class DelOperation implements IOperation{
//重写work方法
    @Override
    public void work(BookList bookList) {
        System.out.println("删除图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要删除图书的名字:");
        String name = scanner.nextLine();
        int j=0;
        for (int i=0;i< bookList.getUsedSize();i++)
        {
            Book book=bookList.getBook(i);
            if (book.getName().equals(name))
            {
                j=i;
                break;
            }
        }
        
//重新编排书籍的序号
        for (int i=j;i< bookList.getUsedSize()-1;i++)
        {
            Book book=bookList.getBook(i+1);
            bookList.setBooks(i,book);
        }
        
//更改书籍数量信息
        int currentSize=bookList.getUsedSize();
        bookList.setUsedSize(currentSize-1);
        System.out.println("删除成功!");
    }
}

DisplayOperation类:进行展示操作 

package operation;
 
import book.Book;
import book.BookList;
 
public class DisplayOperation implements IOperation{
    
//重写work方法
    @Override
    public void work(BookList bookList) {
        System.out.println("显示图书:");
        for (int i=0;i< bookList.getUsedSize();i++)
        {
            Book book=bookList.getBook(i);
            System.out.println(book);
        }
    }
}

 ExitOperation类:进行退出操作

package operation;
 
import book.BookList;
 
public class ExitOperation implements IOperation{
 
//重写work方法
    public void work(BookList bookList) {
        System.out.println("退出系统!");
 
//终止当前运行的Java虚拟机。 参数作为状态代码,为零则终止程序
        System.exit(0);
    }
}
 FindOperation类:进行查找操作

package operation;
 
import book.Book;
import book.BookList;
 
import java.util.Scanner;
 
public class FindOperation implements IOperation{
    
    //重写work方法
    @Override
    public void work(BookList bookList) {
        System.out.println("查找图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入图书的名字:");
        String name = scanner.nextLine();
        
//查找图书
        for (int i=0;i< bookList.getUsedSize();i++)
        {
            Book book=bookList.getBook(i);
            if (book.getName().equals(name))
            {
                System.out.println("找到图书!该图书"+((book.isBorrowed())? "已借出":"未借出"));
                System.out.println(book);
                break;
            }
            if (i== bookList.getUsedSize()-1)
            {
                System.out.println("未找到该图书!");
                break;
            }
 
        }
    }
}

ReturnOperation:归还图书

package operation;
 
import book.BookList;
import book.Book;
import java.util.Scanner;
 
public class ReturnOperation implements IOperation{
    
    //重写work类
    @Override
    public void work(BookList bookList) {
        System.out.println("归还图书!");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入归还图书的名字:");
        String name = scanner.nextLine();
 
        int currentSize = bookList.getUsedSize();
//修改图书状态,是否被借出
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBook(i);
            if(book.getName().equals(name)) {
                book.setBorrowed(false);
                System.out.println("归还成功!");
                return;
            }
        }
    }
}

(3)user
AdminUsers类:用于实现组合管理员用户的功能

package user;
 
import operation.*;
 
import java.util.Scanner;
 
public class AdminUsers extends User {
 
//AdminUsers构造方法
    public AdminUsers(String name) {
        super(name);
        this.operations =new IOperation[]{
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DisplayOperation(),
        };
    }
    
//设计管理员用户的菜单,实现他们的功能
    public int menu(){
        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,提出系统!");
        Scanner sc=new Scanner(System.in);
        int choice=sc.nextInt();
        return choice;
    }
}

NormalUsers类:用于实现组合普通用户的功能

package user;
 
import operation.*;
 
import java.util.Scanner;
 
//继承User类,使得User类可以分别去满足两种不同用户的需求
public class NormalUsers extends User {
 
//NormalUsers构造方法
    public NormalUsers(String name) {
        super(name);
        this.operations =new IOperation[]{
                new ExitOperation(),
                new FindOperation(),
                new BorrowOperation(),
                new ReturnOperation()
        };
    }
 
//设计管理员用户的菜单,实现他们的功能
    public int menu(){
        System.out.println("hello "+this.name+"欢迎来到图书馆!");
        System.out.println("1,查找图书!");
        System.out.println("2,借阅图书!");
        System.out.println("3,归还图书!");
        System.out.println("0,退出系统!");
        Scanner sc=new Scanner(System.in);
        int choice=sc.nextInt();
        return choice;
    }
 
 
 
}

User类: 该类是user包中另两个类的父类,通过此类来判断用户类型,并加以实现

package user;
 
import book.BookList;
import operation.IOperation;
 
public abstract class User {
    
//两个变量:保存您的姓名 并创建一个IOperation的数组,用于实现相应的操作
    protected String name;
    protected IOperation[] operations;
 
    public User(String name) {
        this.name = name;
    }
 
//通过用户类型来打印相应的菜单
    public abstract int menu();
 
//选择你想进行的操作
    public void doOperation(int choice, BookList bookList) {
        this.operations[choice].work(bookList);
    }
}

(4)Main函数

import book.BookList;
import user.AdminUsers;
import user.NormalUsers;
import user.User;
 
import java.util.Scanner;
 
public class Main {
 
//判断你的用户类型
    public static User login(){
        Scanner sc=new Scanner(System.in);
 
        System.out.println("请输入你的姓名:");
        String name =sc.nextLine();
 
        System.out.println("请确认你的身份:1-》管理员,0-》普通用户");
        int choice=sc.nextInt();
 
        if (choice==1)
            return new AdminUsers(name);
        else
            return new NormalUsers(name);
 
    }
 
    public static void main(String[] args) {
        BookList bookList=new BookList();
 
        User user=login();
 
//实现你想进行的操作
        while (true){
            int choice = user.menu();
            user.doOperation(choice,bookList);
        }
    }
}

3、效果展示

在这里插入图片描述
在这里插入图片描述

4、项目源码

分前端和后端,有需要的可私信拿取

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值