图书管理系统-Java

目录

一、book包

1.1 Book

1.2 BookCase

二、Main

三、operation包

3.1 AddOperation

3.2 BorrowedOperatioin

3.3 DelOperation

3.4 DisplayOperation

3.5 ExitOperation

3.6 FindOperation

3.7 IOperation

3.8 ReturnOperation

四、user

4.1 AdminUser

4.2 NormalUser

4.3 User


一、book包

1.1 Book

package book;

/**
 * Created with IntelliJ IDEA.
 * Description: 图书
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 9:28
 */
public class Book {
    private String bookName;
    private String author;
    private String type;
    private double price;
    private boolean isLend;//是否被借出

    //new Book的同时利用构造方法初始化这本书的属性
    //isLend不用初始化,因为它默认时false
    public Book(String bookName, String author, String type, double price) {
        this.bookName = bookName;
        this.author = author;
        this.type = type;
        this.price = price;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public double getPrice() {
        return price;
    }

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

    public boolean getIsLend() {
        return isLend;
    }

    public void setIsLend(boolean isLend) {
        this.isLend = isLend;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bookName='" + bookName + '\'' +
                ", author='" + author + '\'' +
                ", type='" + type + '\'' +
                ", price=" + price +
                (isLend ? ", 已借出" : ", 未借出") +
                '}';
    }
}

1.2 BookCase

package book;

/**
 * Created with IntelliJ IDEA.
 * Description: 书架
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 9:28
 */
public class BookCase {
    private Book[] books;
    private int usedSize;//有效数据个数

    //初始化书架大小,并默认放入三本书
    public BookCase() {
        this.books = new Book[4];
        books[0] = new Book("三国演义","罗贯中","小说",32.89);
        books[1] = new Book("西游记","吴承恩","小说",22.55);
        books[2] = new Book("红楼梦","曹雪芹","小说",54.34);
        this.usedSize = 3;
    }

    public void changeDel(int pos) {//注意🙀
        int i = pos;
        for (; i < this.usedSize - 1; i++) {
            this.books[i] = this.books[i + 1];
        }
        this.books[i] = null;
    }

    public boolean isFull() {
        if (this.books.length == this.usedSize) {
            return true;
        } else {
            return false;
        }
    }

    public Book getBooks(int pos) {
        if (pos >= 0 && pos < this.usedSize) {
            return this.books[pos];
        } else {
            throw new NullPointerException();//运行时异常可以不去处理
        }
    }

    public void setBooks(Book book) {
        this.books[this.usedSize] = book;
    }

    public void setBooks(int pos, Book book) {//注意🙀
        if (pos >= 0 && pos <= this.usedSize) {
            this.books[pos] = book;
        }
    }

    public int getUsedSize() {
        return usedSize;
    }

    public void setUsedSize(int usedSize) {
        this.usedSize = usedSize;
    }
}

二、Main

import book.Book;
import book.BookCase;
import user.AdminUser;
import user.NormalUser;
import user.User;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 9:29
 */
public class Main {
    public static User login() {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入您的姓名:");
        String userName = scan.nextLine();
        while (true) {
            System.out.println("请输入您的身份:1.管理员  2.普通用户");
            int choice = scan.nextInt();
            if (choice == 1) {
                AdminUser adminUser = new AdminUser(userName);
                return adminUser;
            } else if (choice == 2) {
                NormalUser normalUser = new NormalUser(userName);
                return normalUser;
            } else {
                System.out.println("输入有误,请重试");
            }
        }
    }

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

三、operation包

3.1 AddOperation

package operation;

import book.Book;
import book.BookCase;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 10:03
 */
public class AddOperation implements IOperation {
    @Override
    public void work(BookCase bookCase) {
        Scanner scan = new Scanner(System.in);
        System.out.println("*******新增图书*******");

        boolean isFull = bookCase.isFull();
        if (isFull) {
            System.out.println("书架已满,无法新增!");
            return;
        }
        System.out.println("请输入新增图书书名:");
        String curBookName = scan.nextLine();
        System.out.println("请输入新增图书作者名:");
        String curAuthor = scan.nextLine();
        System.out.println("请输入新增图书类型:");
        String curType = scan.nextLine();
        System.out.println("请输入新增图书价格:");
        double curPrice = scan.nextDouble();

        Book book = new Book(curBookName,curAuthor,curType,curPrice);
        bookCase.setBooks(book);
        int curUsedSize = bookCase.getUsedSize();
        bookCase.setUsedSize(curUsedSize+1);
    }
}

3.2 BorrowedOperatioin

package operation;

import book.Book;
import book.BookCase;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 10:05
 */
public class BorrowedOperation implements IOperation {
    @Override
    public void work(BookCase bookCase) {
        Scanner scan = new Scanner(System.in);
        System.out.println("*******借阅图书*******");
        System.out.println("请输入您要借阅的图书书名:");
        String bookName = scan.nextLine();
        System.out.println("请输入您要借阅的图书作者名:");
        String author = scan.nextLine();

        int curUsedSize = bookCase.getUsedSize();

        for (int i = 0; i < curUsedSize; i++) {
            Book book = bookCase.getBooks(i);
            String curBookName = book.getBookName();
            String curAuthor = book.getAuthor();

            if (curBookName.equals(bookName) && curAuthor.equals(author)) {
                if (book.getIsLend()) {
                    System.out.println("本书已被借阅!");
                } else {
                    book.setIsLend(true);
                    System.out.println("借阅成功!");
                }
                return;
            }
        }
        System.out.println("书架上没有这本书!");
    }
}

3.3 DelOperation

package operation;

import book.Book;
import book.BookCase;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 10:05
 */
public class DelOperation implements IOperation {
    @Override
    public void work(BookCase bookCase) {
        Scanner scan = new Scanner(System.in);
        System.out.println("*******删除图书*******");
        System.out.println("请输入您要删除的图书书名:");
        String bookName = scan.nextLine();
        System.out.println("请输入您要删除的图书作者名:");
        String author = scan.nextLine();

        int curUsedSize = bookCase.getUsedSize();

        for (int i = 0; i < curUsedSize; i++) {
            Book book = bookCase.getBooks(i);
            String curBookName = book.getBookName();
            String curAuthor = book.getAuthor();

            if (curBookName.equals(bookName) && curAuthor.equals(author)) {
                bookCase.changeDel(i);
                bookCase.setUsedSize(curUsedSize - 1);
                return;
            }
        }
        System.out.println("书架上没有这本书!");
    }
}

3.4 DisplayOperation

package operation;

import book.Book;
import book.BookCase;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 10:06
 */
public class DisplayOperation implements IOperation {
    @Override
    public void work(BookCase bookCase) {
        System.out.println("*******显示图书*******");
        int usedSize = bookCase.getUsedSize();

        for (int i = 0; i < usedSize; i++) {
            Book book = bookCase.getBooks(i);
            System.out.println(book);
        }
    }
}

3.5 ExitOperation

package operation;

import book.Book;
import book.BookCase;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 10:05
 */
public class ExitOperation implements IOperation {
    @Override
    public void work(BookCase bookCase) {
        System.out.println("*******退出系统*******");
        int usedSize = bookCase.getUsedSize();
        for (int i = 0; i < usedSize; i++) {
            bookCase.setBooks(i,null);
        }
        System.exit(0);
    }
}

3.6 FindOperation

package operation;

import book.Book;
import book.BookCase;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 10:03
 */
public class FindOperation implements IOperation {
    @Override
    public void work(BookCase bookCase) {
        Scanner scan = new Scanner(System.in);
        System.out.println("*******查找图书*******");
        System.out.println("请输入您要查找的图书书名:");
        String bookName = scan.nextLine();
        System.out.println("请输入您要查找的图书作者名:");
        String author = scan.nextLine();

        int usedSize = bookCase.getUsedSize();

        for (int i = 0; i < usedSize; i++) {
            Book book = bookCase.getBooks(i);
            String curBookName = book.getBookName();
            String curAuthor = book.getAuthor();

            if (curBookName.equals(bookName) && curAuthor.equals(author)) {
                System.out.println(book);
                return;
            }
        }
        System.out.println("书架上没有这本书!");
    }
}

3.7 IOperation

package operation;

import book.BookCase;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 10:04
 */
public interface IOperation {
    void work(BookCase bookCase);
}

3.8 ReturnOperation

package operation;

import book.Book;
import book.BookCase;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 10:06
 */
public class ReturnOperation implements IOperation {
    @Override
    public void work(BookCase bookCase) {
        Scanner scan = new Scanner(System.in);
        System.out.println("*******归还图书*******");
        System.out.println("请输入您要归还的图书书名:");
        String bookName = scan.nextLine();
        System.out.println("请输入您要归还的图书作者名:");
        String author = scan.nextLine();

        int curUsedSize = bookCase.getUsedSize();

        for (int i = 0; i < curUsedSize; i++) {
            Book book = bookCase.getBooks(i);
            String curBookName = book.getBookName();
            String curAuthor = book.getAuthor();

            if (curBookName.equals(bookName) && curAuthor.equals(author)) {
                if (book.getIsLend()) {
                    book.setIsLend(false);
                    System.out.println("归还成功!");
                } else {
                    System.out.println("本书已归还过!");
                }
                return;
            }
        }
        System.out.println("书架上没有这本书!");
    }
}

四、user

4.1 AdminUser

package user;

import operation.*;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 9:28
 */
public class AdminUser extends User {
    public AdminUser(String userName) {
        super(userName);
        super.iOperations = new IOperation[] {
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DisplayOperation()
        };
    }

    @Override
    public int menu() {
        Scanner scan = new Scanner(System.in);
        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.print("请选择:");
        int choice = scan.nextInt();
        return choice;
    }
}

4.2 NormalUser

package user;

import operation.*;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 9:29
 */
public class NormalUser extends User {
    public NormalUser(String userName) {
        super(userName);
        super.iOperations = new IOperation[]{
                new ExitOperation(),
                new FindOperation(),
                new BorrowedOperation(),
                new ReturnOperation()
        };
    }

    @Override
    public int menu() {
        Scanner scan = new Scanner(System.in);
        System.out.println("********普通用户菜单*******");
        System.out.println("1.查找图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("0.退出系统");
        System.out.println("*************************");
        System.out.print("请选择:");
        int choice = scan.nextInt();
        return choice;
    }
}

4.3 User

package user;

import book.BookCase;
import operation.IOperation;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: tangyuxiu
 * Date: 2024-08-04
 * Time: 9:28
 */
public abstract class User {
    private String userName;
    protected IOperation[] iOperations;//注意🙀

    //父类的成员变量初始化,要在父类中提供构造方法
    public User(String userName) {
        this.userName = userName;
    }

    public abstract int menu();

    //注意🙀
    public void workOperation(int choice, BookCase bookCase) {
        this.iOperations[choice].work(bookCase);
    }
}

本篇已完结 ......

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我们可以使用Java语言和SSM框架来实现图书管理系统。我们可以使用Spring框架中的IOC容器来解耦各组件,从而让系统的代码结构更加清晰,同时也可以使用Spring框架中的AOP技术来实现系统的权限控制和日志记录。此外,我们还可以使用Mybatis框架来实现数据库的操作,从而更加方便地实现图书管理系统的功能。 ### 回答2: 基于SSM(Spring+SpringMVC+MyBatis)框架实现图书管理系统需要以下步骤: 1. 环境搭建:安装Java开发环境、Maven项目管理工具、Tomcat服务器,引入SSM相关的依赖包。 2. 创建数据库:使用MySQL等数据库管理系统创建图书管理系统所需的数据库,包括图书、借阅记录等表。 3. 创建实体类:根据数据库表设计实体类,包括图书、借阅记录等。 4. 配置数据源:在Spring配置文件中配置数据源,连接数据库。 5. 创建Dao层:使用MyBatis的注解或XML配置方式实现图书相关的数据库操作,包括图书的增删改查。 6. 创建Service层:编写图书相关的业务逻辑代码,封装对Dao层的调用。 7. 创建Controller层:编写图书相关的请求处理代码,接收请求参数并调用相应的Service方法。 8. 创建视图层:使用JSP、HTML等技术实现前端页面,展示图书列表、借阅记录等信息。 9. 配置SpringMVC:在Spring配置文件中配置SpringMVC相关的视图解析器、控制器等。 10. 部署运行:将项目打包成war文件,部署到Tomcat服务器中运行。 通过以上步骤,我们就可以基于SSM框架成功实现图书管理系统。用户可以在系统中进行图书查询、借阅、归还等操作,管理员可以进行图书的管理和操作日志的查看。 ### 回答3: 基于SSM实现图书管理系统,可以分为以下几个步骤: 1. 设计数据库结构: 首先,需要设计数据库表的结构。可以创建几个表,如图书表、读者表、借阅记录表等。每个表都有相应的字段来存储不同的信息。 2. 搭建项目环境: 在Java开发工具中,搭建基于SSM框架的项目环境。SSM框架由Spring、SpringMVC和MyBatis组成,分别负责实现控制反转、Web层和数据持久层的功能。 3. 编写实体类: 根据数据库表的结构,编写对应的实体类。每个实体类对应数据库表的字段,并且有相应的成员变量和访问方法。 4. 配置MyBatis: 在项目的配置文件中,配置MyBatis的相关信息,如数据库连接、映射文件路径等。映射文件中定义了SQL语句与实体类之间的映射关系。 5. 编写数据访问层: 利用MyBatis框架,编写数据访问层的代码。主要负责与数据库进行交互,执行SQL语句,并将查询结果封装到实体类中。 6. 编写业务逻辑层: 在Spring框架的帮助下,编写业务逻辑层的代码。该层处理具体的业务逻辑,如图书的增删改查、读者的注册登录等功能。 7. 编写控制器: 利用SpringMVC框架,编写控制器的代码。该层负责接收前端请求,调用相应的业务逻辑处理,并返回结果给前端。 8. 编写前端页面: 使用HTML、CSS和JavaScript等技术,编写前端页面。可以根据需求设计图书借阅、读者管理等功能的界面,并与后端进行交互。 9. 测试和调试: 对整个系统进行测试和调试,验证功能的正确性和性能的优化。 10. 部署和上线: 将完成的系统部署到服务器上,并上线供用户使用。 以上就是基于SSM框架实现图书管理系统的大致步骤,通过这个系统,可以实现图书的增删改查、借阅归还等功能,方便用户管理图书馆的资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值