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实现简单的图书管理系统的基础上改进而来。
原文链接

实现一个简单图书管理系统,你可以按照以下步骤进行操作: 1. 数据库设计:需要定义几个表,比如图书表、读者表、借阅表等等。具体的表结构需要根据实际情况进行设计。 2. 编写Java代码:需要编写Java代码来实现对数据库的操作。比如添加图书、删除图书、借阅图书等等。 3. 用户界面设计:需要设计用户界面,让用户能够方便地使用系统。用户界面可以使用Swing或JavaFX等库来实现。 4. 整合代码:需要将Java代码和用户界面整合在一起,形成一个完整的系统。可以使用Maven或Gradle等工具来管理项目。 下面是一个简单的示例,仅供参考: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class BookManager { // 数据库连接信息 private static final String URL = "jdbc:mysql://localhost:3306/bookdb"; private static final String USER = "root"; private static final String PASSWORD = "123456"; // 添加图书 public void addBook(Book book) { Connection conn = null; PreparedStatement stmt = null; try { // 获取数据库连接 conn = DriverManager.getConnection(URL, USER, PASSWORD); // 执行SQL语句 String sql = "INSERT INTO book (id, name, author, price) VALUES (?, ?, ?, ?)"; stmt = conn.prepareStatement(sql); stmt.setString(1, book.getId()); stmt.setString(2, book.getName()); stmt.setString(3, book.getAuthor()); stmt.setDouble(4, book.getPrice()); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭数据库连接 try { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } // 删除图书 public void deleteBook(String id) { Connection conn = null; PreparedStatement stmt = null; try { // 获取数据库连接 conn = DriverManager.getConnection(URL, USER, PASSWORD); // 执行SQL语句 String sql = "DELETE FROM book WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, id); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭数据库连接 try { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } // 查询图书 public Book getBook(String id) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { // 获取数据库连接 conn = DriverManager.getConnection(URL, USER, PASSWORD); // 执行SQL语句 String sql = "SELECT * FROM book WHERE id = ?"; stmt = conn.prepareStatement(sql); stmt.setString(1, id); rs = stmt.executeQuery(); // 处理查询结果 if (rs.next()) { Book book = new Book(); book.setId(rs.getString("id")); book.setName(rs.getString("name")); book.setAuthor(rs.getString("author")); book.setPrice(rs.getDouble("price")); return book; } else { return null; } } catch (SQLException e) { e.printStackTrace(); return null; } finally { // 关闭数据库连接 try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } // Book类 class Book { private String id; private String name; private String author; private double price; // 省略getter和setter方法 } ``` 这个示例中,BookManager类包含了添加图书、删除图书、查询图书等操作的方法。我们使用JDBC连接MySQL数据库,并在方法中执行SQL语句。 当然,这只是一个简单的示例。实际上,要实现一个完整的图书管理系统,需要涉及到很多方面,比如权限管理、借阅管理、还书管理等等。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值