Java实现简单的图书管理系统

项目分布

在这里插入图片描述
Book类: 定义了书的属性(书名,作者,价格,分类,状态)并且定义了属性的get、set方法
Library类: 写了登录函数(1、普通用户,2、管理员,3、退出系统),记录Book的数据。
Person类:定义的人的属性(姓名,性别,年龄)并且写了属性的get、set方法。
operate接口:操作的接口,操作方法:查询/查阅,删除/借阅,增加/还书,显示书籍列表
Root类:继承了Person类,实现operate(查阅,删除,增加,显示书籍列表)接口
User类:继承了Person类,实现operate(查询,借阅,还书,显示书籍列表)接口
Main类:Main中的主函数开启整个项目。

模型图

在这里插入图片描述

代码展示

1.Book类
class Book {
    private String name;//书名
    private String author;//作者
    private double price;//价格
    private String category;//分类
    private boolean state;//状态 true-未借出 false-已借出

    //通过构造函数给出书的属性
    Book(String name,String author,double price,String category,boolean state){
        this.name = name;
        this.author = author;
        this.price = price;
        this.category = category;
        this.state = state;
    }
    //属性的获取和设置
    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 boolean isState() {
        return state;
    }
    public void setState(boolean state) {
        this.state = state;
    }
    public String getCategory() {
        return category;
    }
    public void setCategory(String category) {
        this.category = category;
    }

}

2.operate接口
import java.util.List;

public interface operate {
    void select(List<Book> books);
    void delete(List<Book> books);
    void add(List<Book> books);
    void list(List<Book> books);
}

3.Person类
import java.util.List;

abstract class Person {
    private String name;//姓名
    private String sex;//性别
    private int age;//年龄

    Person(String name,String sex,int age) {
        this.age = age;
        this.name = name;
        this.sex = sex;
    }


    public String getName() {
        return name;
    }

    public String getSex() {
        return sex;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public abstract void operate(List<Book> books, int i);
}
4.Root类
import java.util.*;

import static java.util.Arrays.sort;

public class Root extends Person implements operate{
    Root(String name, String sex, int age) {
        super(name, sex, age);
    }

    Scanner sc = new Scanner(System.in);

    @Override
    public void operate(List<Book> books, int i) {
        switch (i) {
            case 1://整理
                sort(books);
                break;
            case 2://select(books);
                break;
            case 3://add(books);
                break;
            case 4://delete(books);
                break;
            case 5://列表
                list(books);
                break;
            default:
                System.out.println("输入有误!");
        }
    }
    public void sort(List<Book> books) {
        System.out.println("图书馆中的书按价格整理:");
        class BookComparator implements Comparator<Book>{

            @Override
            public int compare(Book o1, Book o2) {
                return (int)(o1.getPrice() - o2.getPrice());
            }
        }
        Collections.sort(books, new BookComparator());
        System.out.println("整理结束!");

    }

    @Override
   public void select(List<Book> books) {
        System.out.println("请输入书名进行查询:");
        String name = sc.next();
        if(name != null) {
            for (Book book : books) {
                if (book.getName().equals(name)) {
                    System.out.println("有此书籍!");
                    System.out.println("书名:"+book.getName()+"   作者:"+book.getAuthor()+ "   价格:"+book.getPrice()+"   分类:"+book.getCategory()+"   状态:"+book.isState());
                    return;
                }
            }
            System.out.println("暂时没有此书!");
        }
    }
    @Override
    public void delete(List<Book> books) {
        System.out.println("请输入要删除的书名:");
        String str = sc.next();
        if(str != null) {
            for(Book book : books) {
                if(book.getName().equals(str)) {
                    books.remove(book);
                    System.out.println("删除成功!");
                    return;
                }
            }
            System.out.println("无此书籍!");
        }
    }

    @Override
    public void add(List<Book> books) {
        System.out.println("请输入书名:");
        String name = sc.next();
        System.out.println("请输入作者:");
        String author = sc.next();
        System.out.println("请输入价格:");
        double price = sc.nextDouble();
        System.out.println("请输入分类:");
        String category = sc.next();

        books.add(new Book(name,author,price,category,true));

    }

    @Override
    public void list(List<Book> books) {
        System.out.println("图书列表如下:");  //打印Book数组
        for (Book book : books) {
                System.out.println("书名:"+book.getName()+"   作者:"+book.getAuthor()+ "   价格:"+book.getPrice()+"   分类:"+book.getCategory()+"   状态:"+book.isState());
        }
    }
}

5.User类
import java.util.List;
import java.util.Scanner;

class User extends Person implements operate {

    User(String name,String sex,int age){
        super(name,sex,age);
    }

    Scanner sc =  new Scanner(System.in);

    @Override
    public void operate(List<Book> books, int i) {
        switch(i){
            case 1:
                select(books);
                break;
            case 2:
                delete(books);
                break;
            case 3:
                add(books);
                break;
            case 4:
                list(books);
                break;
            default:
                System.out.println("输入有误!");
        }
    }

    @Override
    public void select(List<Book> books) {
        System.out.println("请输入书名查询:");
        String name = sc.next();
        if(name != null){
            for(Book book : books){
                if(book.getName().equals(name)){
                    System.out.println("有此书籍!");
                    System.out.println("书名:"+book.getName()+"   作者:"+book.getAuthor()+ "   价格:"+book.getPrice()+"   分类:"+book.getCategory()+"   状态:"+book.isState());
                    return;
                }
            }
            System.out.println("暂时没有此书籍!");
        }
    }

    @Override
    public void delete(List<Book> books) {
        System.out.println("请输入要借阅的书名:");
        String name = sc.next();
        if (name != null) {
            for (Book book : books) {
                if (book.getName().equals(name)) {
                   if(book.isState()){
                        book.setState(false);
                        System.out.println("借阅成功!");
                        break;
                   } else{
                       System.out.println("已被借阅!");
                       break;
                   }
                } else {               //没书
                    System.out.println("没有此书!");
                    break;
                }
            }
        }
    }

    @Override
    public void add(List<Book> books) {
        System.out.println("请输入要还的书名:");
        String name = sc.next();

        if (name != null) {
            for (Book book : books) {
                if (book.getName().equals(name) && !book.isState()) {
                    book.setState(true);
                    System.out.println("还书成功!");
                    return;
                }
            }
            System.out.println("还书错误!");
        }
    }

    @Override
    public void list(List<Book> books) {
        System.out.println("图书列表如下:");  //打印Book数组
        for (Book book : books) {
            System.out.println("书名:"+book.getName()+"   作者:"+book.getAuthor()+ "    价格:"+book.getPrice()+"  分类:"+book.getCategory()+"   状态:"+book.isState());
        }
    }
}

6.Library类
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Library {
    private List<Book> books = new ArrayList<>(){
        {
           add(new Book("西游记", "吴承恩", 10, "名著", true));
           add(new Book("红楼梦", "曹雪芹", 20, "名著", true));
           add(new Book("三国演义", "罗贯中", 15, "名著", true));
           add(new Book("小茗同学", "小明", 5, "杂志", true));
        }};
    Scanner sc = new Scanner(System.in);
    public void login(){
        int count = 0;
        Person p = null;
        while(count<2){
            System.out.println("==================图书管理系统==================");
            System.out.println("请登录:1.普通用户  2.管理员   3.退出系统");

            int n = sc.nextInt();
            if(n == 3){
                return;
            }
            switch(n){
                case 1:
                    System.out.println("请输入姓名:");
                    String Uname = sc.next();
                    System.out.println("请输入性别:");
                    String Usex = sc.next();
                    System.out.println("请输入年龄:");
                    int Uage = sc.nextInt();

                    p = new User(Uname,Usex,Uage); //构造普通用户对象

                    System.out.println("登录成功!");
                    System.out.println("当前用户为普通用户:"+"姓名:" + p.getName() + " "+"性别:" + p.getSex() + " "+"年龄"+ p.getAge());
                    //普通用户循环操作
                    while (true) {
                        System.out.println("请输入你的操作: 1.查询书籍 2.借阅书籍 3.归还书籍 4.显示书籍列表 5.退出");
                        int i = sc.nextInt();
                        if (i == 5) {
                            System.out.println("您已成功退出!");
                            break;
                        }else {
                            p.operate(books,i);  //调用普通用户的操作方法
                        }
                    }
                    break;
                case 2:
                    System.out.println("请输入管理员姓名:");
                    String Rname = sc.next();
                    System.out.println("请输入性别:");
                    String Rsex = sc.next();
                    System.out.println("请输入年龄:");
                    int Rage = sc.nextInt();

                    p = new Root(Rname,Rsex,Rage);//构造管理员对象

                    System.out.println("登录成功!");
                    System.out.println("当前管理员:"+"姓名:" + p.getName() + " "+"性别:" + p.getSex() + " "+"年龄" + p.getAge());
                    while (true) {
                        System.out.println("请输入你的操作: 1.整理书籍 2.查阅书籍 3.增加书籍 4.删除书籍 5.显示书籍列表 6.退出");
                        int j = sc.nextInt();
                        if (j == 6) {
                            System.out.println("您已成功退出!");
                            break;
                        }else{
                            p.operate(books,j);//调用管理员的操作方法
                        }
                    } break;
            }
        }
    }
}

7.Main类
public class Main {
    public static void main(String[] args) {
        Library library = new Library(); //构造Library对象
        library.login(); //调用对象的登录方法。
    }
}

结果展示

1.普通用户

在这里插入图片描述

2.管理员

在这里插入图片描述
如有问题欢迎在评论指正!
本文在Coder米博主的Java实现简单的图书管理系统的基础上改进而来。
原文链接

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我可以帮你介绍一下 Java 实现简单图书管理系统的步骤。 步骤如下: 1. 定义图书类 Book,包括属性:书名,作者,出版社,价格,数量等。 2. 定义一个图书管理类 BookManager,包括方法:添加图书,删除图书,修改图书信息,查找图书信息等。 3. 创建一个主程序类 Main,实例化 BookManager 对象,通过调用 BookManager 对象中的方法,实现图书信息的管理。 4. 在 Main 类中,通过控制台输入输出,实现用户与系统之间的交互。 示例代码如下: ``` // Book 类 public class Book { private String name; // 书名 private String author; // 作者 private String publisher; // 出版社 private double price; // 价格 private int quantity; // 数量 // 构造函数 public Book(String name, String author, String publisher, double price, int quantity) { this.name = name; this.author = author; this.publisher = publisher; this.price = price; this.quantity = quantity; } // getter 和 setter 方法 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 String getPublisher() { return publisher; } public void setPublisher(String publisher) { this.publisher = publisher; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getQuantity() { return quantity; } public void setQuantity(int quantity) { this.quantity = quantity; } } // BookManager 类 import java.util.ArrayList; import java.util.Scanner; public class BookManager { private ArrayList<Book> bookList; // 图书列表 // 构造函数 public BookManager() { bookList = new ArrayList<Book>(); } // 添加图书 public void addBook() { Scanner input = new Scanner(System.in); System.out.print("请输入书名:"); String name = input.next(); System.out.print("请输入作者:"); String author = input.next(); System.out.print("请输入出版社:"); String publisher = input.next(); System.out.print("请输入价格:"); double price = input.nextDouble(); System.out.print("请输入数量:"); int quantity = input.nextInt(); Book book = new Book(name, author, publisher, price, quantity); bookList.add(book); System.out.println("添加成功!"); } // 删除图书 public void deleteBook() { Scanner input = new Scanner(System.in); System.out.print("请输入要删除的书名:"); String name = input.next(); for (int i = 0; i < bookList.size(); i++) { Book book = bookList.get(i); if (book.getName().equals(name)) { bookList.remove(i); System.out.println("删除成功!"); return; } } System.out.println("未找到该书!"); } // 修改图书信息 public void modifyBook() { Scanner input = new Scanner(System.in); System.out.print("请输入要修改的书名:"); String name = input.next(); for (int i = 0; i < bookList.size(); i++) { Book book = bookList.get(i); if (book.getName().equals(name)) { System.out.print("请输入新的作者:"); String author = input.next(); System.out.print("请输入新的出版社:"); String publisher = input.next(); System.out.print("请输入新的价格:"); double price = input.nextDouble(); System.out.print("请输入新的数量:"); int quantity = input.nextInt(); book.setAuthor(author); book.setPublisher(publisher); book.setPrice(price); book.setQuantity(quantity); System.out.println("修改成功!"); return; } } System.out.println("未找到该书!"); } // 查找图书信息 public void searchBook() { Scanner input = new Scanner(System.in); System.out.print("请输入要查找的书名:"); String name = input.next(); for (int i = 0; i < bookList.size(); i++) { Book book = bookList.get(i); if (book.getName().equals(name)) { System.out.println("书名:" + book.getName()); System.out.println("作者:" + book.getAuthor()); System.out.println("出版社:" + book.getPublisher()); System.out.println("价格:" + book.getPrice()); System.out.println("数量:" + book.getQuantity()); return; } } System.out.println("未找到该书!"); } } // Main 类 public class Main { public static void main(String[] args) { BookManager bookManager = new BookManager(); Scanner input = new Scanner(System.in); while (true) { System.out.println("请输入数字选择操作:"); System.out.println("1. 添加图书"); System.out.println("2. 删除图书"); System.out.println("3. 修改图书信息"); System.out.println("4. 查找图书信息"); System.out.println("5. 退出"); int choice = input.nextInt(); switch (choice) { case 1: bookManager.addBook(); break; case 2: bookManager.deleteBook(); break; case 3: bookManager.modifyBook(); break; case 4: bookManager.searchBook(); break; case 5: System.out.println("谢谢使用!"); System.exit(0); default: System.out.println("输入有误,请重新输入!"); } } } } ``` 以上就是一个简单图书管理系统Java 实现方法,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值