当前位置:   article > 正文

JavaSE: 实现图书管理系统_java图书管理系统

java图书管理系统

每日一言

Don’t be afraid to be yourself. Follow your own path.
不要害怕做与众不同的自己,走自己的路。


1. 实现过程:

1.1 理思路

你需要让用户输入姓名,并让用户选择身份,然后根据用户的身份展示出不同的菜单。比如管理员用户可以添加和删除图书;普通用户可以借阅图书。根据用户的选择来展示不同的功能。

以上只是一些大致的思路,具体的细节和实现我们可以边写边想。

1.2 写代码

要写程序,main方法必不可少,我们先在src中,新建一个Main类,并在其中写上main方法
在这里插入图片描述
在这里插入图片描述接着我们需要让用户输入姓名和身份,要实现图书管理系统,菜单必不可少,我们可以把这些东西写在一个方法中
在这里插入图片描述
接下来我们可以创建一个user包,用它来管理不同的用户。我们可以在user包下新建3个类:NormalUser、AdminUser、User(抽象类)。
在这里插入图片描述

有人要问了,为什么要多创建一个User抽象类呢? 这是因为普通用户和管理员用户有一些同样的成员变量和成员方法(如名字等等),我们可以把这两者的共性提取出来。实现代码的复用。

user抽象类:在这里插入图片描述
别忘了要让NormalUser、AdminUser类继承user类。
在这里插入图片描述
在这里插入图片描述

创建好后,我们回到Main类的menu方法中,修改一下返回值类型,并完善用户选择身份部分。
在这里插入图片描述

紧接着来写不同用户下的菜单,先在user抽象类中写上在这里插入图片描述
接着在NormalUser类、AdminUser类中完善菜单
在这里插入图片描述
在这里插入图片描述
以上都写好后,我们来检验一下我们写的是否能正常运行。
别忘了修改main函数在这里插入图片描述
运行结果:在这里插入图片描述
在这里插入图片描述

没问题ヾ(✿゚▽゚)ノ,我们继续来往下写。
既然是图书管理系统,没有书是说不过去滴
我们来新建一个book包来管理与书相关的功能
在这里插入图片描述
其中Book类来管理一本书,BookList类来管理存放书。
一本书要有书名、作者、价格、类型和是否被借出。
在Book中来创建以上的成员变量
在这里插入图片描述
鼠标右键,点击生成
在这里插入图片描述
在这里插入图片描述
按住Ctrl键全部选上
在这里插入图片描述
点击确定,将构造方法创建好
在这里插入图片描述
同样的我们来生成构造函数
在这里插入图片描述
这里就不选isLend函数了。
还是同样的方法,我们来重新toString函数
在这里插入图片描述

这样我们的Book类基本上就写好了
接下来我们来写BookList类
我们可以用数组来管理书本在这里插入图片描述
我们还需要知道书架已经放了几本书,我们可以定义一个变量来记录在这里插入图片描述
让我们在书架上预先放几本书吧ヾ(๑╹◡╹)ノ"
在这里插入图片描述
还是用之前的方法我们来生成Getter和Setter函数吧
在这里插入图片描述
但是它生成的setBooks和getBooks并不是我们想要的,让我们来修改一下
在这里插入图片描述
最后,我们还需要一个函数来判断书架是否已经满了在这里插入图片描述

关于书的代码写完了,接下来就是实现普通用户和管理员用户菜单中的功能了
为了方便管理,我们新建一个operation包,在它底下来实现菜单中的功能
功能的实现这里就不再赘述了,读者可以点击文章目录来寻找自己想看的代码。

功能写好后,接下来就是将功能实装到程序中了,
我们可以在User类中新建一个数组,它用来存放不同的功能,这样我们就可以根据用户的选项来运行不同的功能
在这里插入图片描述

在这里插入图片描述
在AdminUser类中填写数组元素:在这里插入图片描述

在NormalUser类中填写数组元素:在这里插入图片描述

在最后的最后别忘了修改main函数:
在这里插入图片描述

2. 全部代码:

2.1 Main

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

import java.util.Scanner;

public class Main {
    public static User login() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("欢迎来到图书管理系统");
        System.out.println("请输入姓名:");
        String name = scanner.nextLine();
        System.out.println("请输入你的身份:1.管理员 2.普通用户");
        int choice = scanner.nextInt();
        if(1 == choice) {
            AdminUser adminUser = new AdminUser(name);
            return adminUser;
        }else {
            NormalUser normalUser = new NormalUser(name);
            return normalUser;
        }
    }

    public static void main(String[] args) {
        BookList bookList = new BookList();
        User user =login();
        while (true) {
            int choice = user.menu();
            user.doOperation(choice,bookList);
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

2.2 book 包

2.2.2 Book

package book;

public class Book {
    private String name;
    private String author;
    private String type;
    private int price;
    private boolean isLend;

    public String getType() {
        return type;
    }

    public void setType(String type) {
        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 int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public boolean isLend() {
        return isLend;
    }

    public void setLend(boolean lend) {
        isLend = lend;
    }

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

    @Override
    public String toString() {
        return "Book{" +
                "书名='" + name + '\'' +
                ", 作者='" + author + '\'' +
                ", 类型='" + type + '\'' +
                ", 价格=" + price +
                (isLend?",已借出":",未借出")+
                '}';
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68

2.2.2 BookList

package book;

public class BookList {
    private Book[] books = new Book[10];
    private int usedSize;

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

    public Book getBook(int pos) {
        return books[pos];
    }

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

    public int getUsedSize() {
        return usedSize;
    }

    public void setUsedSize(int usedSize) {
        this.usedSize = usedSize;
    }
    public Boolean hasFull() {
        return usedSize == books.length;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

2.3 operation 包

2.3.1 AddOperation

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class AddOperation implements IOperation{

    @Override
    public void work(BookList bookList) {
        System.out.println("添加图书....");

        if(bookList.hasFull()) {
            System.out.println("书架满了,添加失败!");
        }else {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入要添加的图书的书名:");
            String name = scanner.nextLine();
            System.out.println("请输入要添加的图书的作者:");
            String author = scanner.nextLine();
            System.out.println("请输入要添加的图书的价格:");
            int price = scanner.nextInt();
            System.out.println("请输入要添加的图书的类型:");
            String type = scanner.nextLine();
            Book book = new Book(name,author,price,type);
            bookList.setBook(bookList.getUsedSize(), book);
            bookList.setUsedSize(bookList.getUsedSize()+1);
            System.out.println("添加成功");
        }

    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

2.3.2 BorrowOperation

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class BorrowOperation implements IOperation{

    @Override
    public void work(BookList bookList) {
        System.out.println("借阅图书....");
        System.out.println("输入你要借阅的图书:");
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();

        for (int i = 0; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            if(book.getName().equals(str)) {
                book.setLend(true);
                System.out.println("成功借阅!");
                return;
            }
        }
        System.out.println("没有你要借的书!");
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

2.3.3 DelOperation

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class DelOperation implements IOperation{

    @Override
    public void work(BookList bookList) {
        System.out.println("删除图书....");
        System.out.println("请输入要删除的图书:");

        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        int i,j;
        for (i = 0; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            if(book.getName().equals(str)) {
                break;
            }
        }

        if(i >= bookList.getUsedSize()) {
            System.out.println("没有找到你要删除的书!");
            return;
        }
        for (j = i; j < bookList.getUsedSize() - 1; j++) {
            bookList.setBook(j,bookList.getBook(j+1));
        }
        bookList.setBook(j,null);
        bookList.setUsedSize(j);
        System.out.println("删除成功!");
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

2.3.4 ExitOperation

package operation;

import book.BookList;

public class ExitOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统....");
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            bookList.setBook(i,null);
        }

        System.exit(0);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

2.3.5 FindOperation

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class FindOperation implements IOperation{

    @Override
    public void work(BookList bookList) {
        System.out.println("查找图书....");
        System.out.println("请输入要查找的书名:");

        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            if(book.getName().equals(str)) {
                System.out.println("找到了");
                System.out.println(book);
            }
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

2.3.6 IOperation

package operation;

import book.BookList;

public interface IOperation {
    void work(BookList bookList);
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.3.7 ReturnOperation

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class ReturnOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还图书....");
        System.out.println("请输入要归还的图书:");

        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();

        for (int i = 0; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            if(book.getName().equals(str)) {
                book.setLend(false);
                System.out.println("归还成功");
                return;
            }
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

2.3.8 ShowOperation

package operation;

import book.Book;
import book.BookList;

public class ShowOperation implements IOperation{
    @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);
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

2.4 user 包

2.4.1 AdminUser

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 ShowOperation()};
    }

    @Override
    public int menu() {
        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.println("请输入你的操作:");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

2.4.2 NormalUser

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

    @Override
    public int menu() {
        System.out.println("****普通用户菜单****");
        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;
    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

2.4.3 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 doOperation(int choice, BookList bookList) {
        this.iOperations[choice].work(bookList);
    }
}



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/944041
推荐阅读
相关标签
  

闽ICP备14008679号