图书管理系统2

简介: 图书管理系统

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、效果展示

(1)AdminUsers


7433584e16cc4a21aa6316977de751ff.png



8a98c25376ed4dfb9c757e2c1bee87c1.png




476edf5ff59f491b8b193a17f604739d.png

(2) NormalUser


90b73adcf4584e23bd48b57a33223fc5.png




f18eb1295d60481987e4f02b81fcea0d.png

3、结语

图书管理系统还可以有更多的功能,如果大家感兴趣可以去研究研究,更加完善这个系统。

大家如果发现有什么错误评论区点评,谢谢支持!

目录
相关文章
|
2月前
|
C++
图书管理系统(C++)
图书管理系统(C++)
18 0
|
2月前
图书管理系统
图书管理系统
40 0
|
2月前
|
存储 Java
学生成绩管理系统
学生成绩管理系统
48 5
|
2月前
|
存储 安全 Java
图书管理系统的设计与实现
图书管理系统的设计与实现
|
11月前
|
C# 数据库
C#图书管理系统
C#图书管理系统
62 0
|
11月前
|
存储 程序员 C#
基于C#实现的学生成绩管理系统
基于C#实现的学生成绩管理系统
129 0
图书管理系统1
图书管理系统
139 1
简易版 图书管理系统
简易版 图书管理系统
111 0
简易版 图书管理系统
|
C++
使用C++实现的学生成绩管理系统(附完整代码)
使用C++实现的学生成绩管理系统(附完整代码)
1321 0
使用C++实现的学生成绩管理系统(附完整代码)
|
前端开发 Java 关系型数据库
基于SSM实现图书管理系统
基于SSM实现图书管理系统
244 0
基于SSM实现图书管理系统