图书管理系统-Java

简介: 图书管理系统-Java

一、图书管理系统样式



管理系统效果图:

da89da24c5954e239ae923daa2e2a769.png

通过效果图我们可以看到,首先要实现登录,得到用户姓名和身份,依据用户的身份不同,其菜单栏和用户可以执行的操作不同


二、图书管理系统具体实现



主要设置以下包和类:

9bbed4a8a7ca47b48cdcbb5f9be10d6c.png


其中book包存放有关书的信息,operation包存放有关用户执行的各种操作 ,user存放有关用户的信息,Main是测试类。


  2.1 book包


c5fbb57f94644af2931a4210f420abee.png


Book类用来存放有关一本书的详细信息和操作方法,BookList是书架类,记录存放的书。


public class Book {
    private String name;//书名
    private String author;//作者
    private int price;//价格
    private String type;//类型
    private boolean isborrowed;//是否借出
    //书的初始化
    public Book(String name, String author, int price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }
    //打印书的信息
    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +"图书状态:"+
                ((isborrowed==true)? "已被借出":"未被借出")+
                '}';
    }
    //获取书名
    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 isIsborrowed() {
        return isborrowed;
    }
    //设置书的状态
    public void setIsborrowed(boolean isborrowed) {
        this.isborrowed = isborrowed;
    }
}
public class BookList {
    //书架存放的书(许多本)
    private Book[] books;
    //当前书架上书的数量
    int NowSize;
    //初始化书架
    public BookList() {
         this.books=new Book[20];
         //最初存放三本书
         books[0]=new Book("三国演义","罗贯中",13,"小说");
         books[1]=new Book("西游记","吴承恩",15,"小说");
         books[2]=new Book("红楼梦","曹雪芹",12,"小说");
         NowSize=3;
    }
    //知书的位置(数组下标)从书架获取一本书
    public Book getBook(int pos){
        return books[pos];
    }
    //在书架相应位置放置一本书
    public void SetBook(int pos,Book book){
        books[pos]=book;
    }
    //获取当前书架上书的数量
    public int getNowSize() {
        return NowSize;
    }
    //设置当前书架上书的数量
    public void setNowSize(int nowSize) {
        NowSize = nowSize;
    }
}


 2.2 user包


79488158f42d43349c8280bb6f26b7e7.png


User类是所有类型用户的父类,AdminUser是管理员类型的用户,NormalUser是普通用户类型的用户。


//抽象类
public abstract class User {
    //用户名字
    protected String name;
    //用户的多种操作
    protected Ioperation[] ioperations;
    //用户初始化
    public User(String name) {
        this.name = name;
    }
    //用户的菜单
    public  abstract int menu();
    //用户要执行的操作
    public void doperation(int choice, BookList bookList){
        ioperations[choice].work(bookList);
    }
}


//管理员用户
public class AdminUser extends User{
    public AdminUser(String name) {
        super(name);
        //用户的具体操作
        this.ioperations=new Ioperation[]{
                new ExitOperation(),    //退出系统
                new SearchOperation(),  //查找图书
                new AddOperation(),     //增加图书
                new DeleteOperation(),  //删除图书
                new ShowOperation(),    //查看所有图书
        };
    }
    //管理员用户菜单
    @Override
    public int menu() {
        System.out.println("********************");
        System.out.println("hello "+name+" "+"欢迎来到管理员菜单");
        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.println("请输入你的选择:");
        Scanner scanner=new Scanner(System.in);
        //用户输入操作选项
        int choice=scanner.nextInt();
        return choice;
    }
}


//普通用户
public class NormalUser extends User{
    public NormalUser(String name) {
        super(name);
        //普通用户具体操作
        this.ioperations=new Ioperation[]{
                new ExitOperation(),    //退出系统
                new SearchOperation(),  //查找图书
                new BorrowOperation(),  //借用图书
                new ReturnOperation(),  //归还图书
        };
    }
    //普通用户菜单
    @Override
    public int menu() {
        System.out.println("********************");
        System.out.println("hello "+name+" 欢迎来到普通用户菜单");
        System.out.println("1. 查找图书");
        System.out.println("2. 借阅图书");
        System.out.println("3. 归还图书");
        System.out.println("0. 退出系统");
        System.out.println("********************");
        System.out.println("请输入你的选择:");
        Scanner scanner=new Scanner(System.in);
        //用户操作选项
        int choice=scanner.nextInt();
        return choice;
    }
}


2.3 Main类


//测试类
public class Main {
    //用户登录
    public static User logn(){
        System.out.println("请输入你的名字:");
        Scanner scanner=new Scanner(System.in);
        String name=scanner.nextLine();
        System.out.println("请输入你的身份:1:管理员  2:普通用户");
        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=logn();
        while (true){
            int choice=user.menu();
            System.out.println("choice :"+choice);
            //根据choice确定执行哪个对象的特定操作
            user.doperation(choice,bookList);
        }
    }
}

52a8b9bdb8554435984a67793837d0d3.png


2.4 operation包


a9b2ffe32f1e46c0b2fea7a5ef70f296.png


AddOperation增加图书操作,BorrowOperation借出图书操作,DeleteOperation删除图书操作,ExitOperation退出系统操作,ReturnOperation归还操作,SearchOperation查找操作,ShowOperation查看所有图书操作,所有的操作针对书架进行,因此建Ioperation一个接口,声明操作书架的方法,每个类实现这个接口。


//接口
public interface Ioperation {
    void work(BookList bookList);
}


//增加图书
public class AddOperation implements Ioperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("增加图书");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入name:");
        String name=scanner.nextLine();
        System.out.println("请输入author:");
        String author=scanner.nextLine();
        System.out.println("请输入price:");
        int price=scanner.nextInt();
        scanner.nextLine();
        System.out.println("请输入type:");
        String type=scanner.nextLine();
        Book book=new Book(name,author,price,type);
        //判断书架是否已满
        if(bookList.getNowSize()==Max_book_count){
            System.out.println("书架满了");
            return;
        }else {
            for (int i = 0; i <bookList.getNowSize(); i++) {
                //判断书架是否已有此书
                if((bookList.getBook(i).getName()).equals(name)){
                    System.out.println("书架里已有此书,不需再添加");
                    return;
                }
            }
            //放置书
            bookList.SetBook(bookList.getNowSize(), book);
            //书的数量加1
            int count= bookList.getNowSize();
            bookList.setNowSize(++count);
            System.out.println("添加图书成功");
        }
    }
}


//借出图书
public class BorrowOperation implements Ioperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("借出图书");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入name:");
        String name=scanner.nextLine();
        for (int i = 0; i < bookList.getNowSize(); i++) {
            //判断存在此书
            if ((bookList.getBook(i).getName()).equals(name)){
                bookList.getBook(i).setIsborrowed(true);
                System.out.println("借阅图书成功");
                return;
            }
        }
        System.out.println("借阅的书不存在");
    }
}


//删除图书
public class DeleteOperation implements Ioperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("删除图书");
        System.out.println("请输入要删除的书名:");
        Scanner scanner=new Scanner(System.in);
        String name=scanner.nextLine();
        for (int i = 0; i < bookList.getNowSize(); i++) {
            //存在此书
            if ((bookList.getBook(i).getName()).equals(name)){
                for (int j = i; j < bookList.getNowSize()-1; j++) {
                    bookList.SetBook(j,bookList.getBook(j+1));
                }
                //最后一本书置空
                bookList.SetBook(bookList.getNowSize(),null);
                //书的数量减1
                int count=bookList.getNowSize();
                bookList.setNowSize(--count);
                System.out.println("删除图书成功");
                return;
            }
        }
        System.out.println("此书不存在");
    }
}


//归还图书
public class ReturnOperation implements Ioperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还图书");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入name:");
        String name=scanner.nextLine();
        for (int i = 0; i < bookList.getNowSize(); i++) {
            //存在图书
            if ((bookList.getBook(i).getName()).equals(name)){
                bookList.getBook(i).setIsborrowed(false);
                System.out.println("归还图书成功");
                return;
            }
        }
        System.out.println("归还的图书不存在");
    }
}
//查找图书
public class SearchOperation implements Ioperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("查找图书");
        Scanner scanner=new Scanner(System.in);
        String name=scanner.nextLine();
        for (int i = 0; i <bookList.getNowSize();i++) {
            //图书存在
            if ((bookList.getBook(i).getName()).equals(name)){
                System.out.println(bookList.getBook(i));
                return;
            }
        }
        System.out.println("书库里没有此书");
    }
}
//查找所有图书
public class ShowOperation implements Ioperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("打印图书");
        for (int i = 0; i < bookList.getNowSize(); i++) {
            Book book=bookList.getBook(i);
            System.out.println(book);
        }
    }
}
//退出系统
public class ExitOperation implements Ioperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统");
        System.exit(0);
    }
}
目录
相关文章
|
6月前
|
JavaScript Java 测试技术
基于Java的图书管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的图书管理系统的设计与实现(源码+lw+部署文档+讲解等)
174 1
|
6月前
|
Java 关系型数据库 MySQL
java和mysql数据库实现的图书管理系统
java和mysql数据库学生信息管理系统
102 1
|
6月前
|
Java 数据安全/隐私保护
java图书管理系统
java图书管理系统
|
6月前
|
存储 Java 关系型数据库
图书管理系统【GUI/Swing+MySQL】(Java课设)
图书管理系统【GUI/Swing+MySQL】(Java课设)
44 0
|
6月前
|
Java
JAVA实现图书管理系统(思路,和完整代码)
JAVA实现图书管理系统(思路,和完整代码)
779 0
|
2月前
|
存储 Java
Java——图书管理系统
该文档详细介绍了一个图书管理系统的设计与实现。系统包含普通用户和管理员两种角色,通过书架操作图书,如添加、查找、借阅、归还及删除图书等功能。文档展示了各个功能的具体代码实现,并使用继承和接口等方式优化了系统结构。通过多态技术实现了不同用户角色调用相应功能。整体设计清晰,逻辑严谨,便于理解和实现。
102 17
Java——图书管理系统
|
5月前
|
前端开发 JavaScript Java
计算机Java项目|图书大厦图书管理系统的设计与实现
计算机Java项目|图书大厦图书管理系统的设计与实现
|
6月前
|
Java
Java实现图书管理系统
Java实现图书管理系统
66 0
|
6月前
|
JavaScript Java 测试技术
Java项目基于ssm+vue.js图书管理系统的附带文章和源代码设计说明文档ppt
Java项目基于ssm+vue.js图书管理系统的附带文章和源代码设计说明文档ppt
52 0
|
6月前
|
Java
<Java> 图书管理系统. 课程设计之经典
<Java> 图书管理系统. 课程设计之经典
41 0