图书管理系统(Java简单版)(完整代码+详解)

这篇具有很好参考价值的文章主要介绍了图书管理系统(Java简单版)(完整代码+详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

详解: 

BookList类:

InOperation接口 

User类(父类) 和 Main类(这俩要一起看)

完整代码 

book包 

Book类 

BookList类

operation包 

 AddBook类

BorrowBook类

DeleteBook类

FindBook类

PrintBook类

ReturnBook类

Exit类

InOperation接口

user包 

Domestic类

Administrator类

User类 

Main类 


详解: 

图书管理系统(Java简单版)(完整代码+详解)

按照上图逻辑来写, 因为要运行,所以要有个main函数

图书管理系统(Java简单版)(完整代码+详解)

接下来我们来串联整个思路 

图书管理系统(Java简单版)(完整代码+详解)

 接下来细说BookList类,InOperation接口和User类

BookList类:

1.先创建一个Book类 类型的数组(private 封装) 

 图书管理系统(Java简单版)(完整代码+详解)

2.再创建个书的个数的变量 (private 封装),然后创建构造方法,初始化成员(图书)(实例化BookList时直接就运行书架里的内容)(实例化一个Book对象,有参类型,所以Book类哪里要先创建有参的构造方法)

图书管理系统(Java简单版)(完整代码+详解)

既然封装了就要有Getter和Setter (下面系统自动生成步骤)

图书管理系统(Java简单版)(完整代码+详解)

当然自动生成的和我们要的还是有点差别的,我们要稍微改动一下 

图书管理系统(Java简单版)(完整代码+详解)

图书管理系统(Java简单版)(完整代码+详解)

InOperation接口 

因为每一个操作功能都要有对应的工作,所以干脆创建个接口 ,对代码更好的规范

图书管理系统(Java简单版)(完整代码+详解)

User类(父类) 和 Main类(这俩要一起看)

各个包类都创建好了,但是他们如果串联运行呢,要有main才能运行起来,怎么搞,往下看 

图书管理系统(Java简单版)(完整代码+详解)

(上面可能看不太清,可以对着下面看一下,或者对着代码看) 

图书管理系统(Java简单版)(完整代码+详解)

图书管理系统(Java简单版)(完整代码+详解)

剩下的方法实现起来都蛮简单的,对比着代码看看就能懂,不多说了 😊😊文章来源地址https://www.toymoban.com/news/detail-477034.html

完整代码 

book包 

Book类 

package book;

public class Book {
    private String name;
    private String author;
    private double price;
    private String type;
    private boolean borrowed;//默认false
    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        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 double getPrice() {
        return price;
    }

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

    public String getType() {
        return type;
    }

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

    public boolean isBorrowed() {
        return borrowed;
    }

    public void setBorrowed(boolean borrowed) {
        this.borrowed = borrowed;//借出true
                                 //未被借出false
    }

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

BookList类

package book;

public class BookList {
    //创建数组存放书
    private Book[] books = new Book[10];



    private int book_size;//书的个数
    //构造方法,初始化成员(图书)(示例化BookList时直接就运行书架里的内容)
    public BookList() {
        this.books[0] = new Book("三国演义", "罗贯中", 23.1, "小说");//实例化一个Book对象,有参类型,所以Book类哪里要先创建有参的构造方法
        this.books[1] = new Book("西游记", "吴承恩", 45.1, "小说");
        this.books[2] = new Book("红楼梦", "曹雪芹", 33.2, "小说");
        this.books[3] = new Book("水浒传", "施耐庵", 23.2, "小说");
        this.book_size = 4;
    }

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

    public void setBooks(int pos, Book book) {
        this.books[pos] = book;//新增图书需要
    }

    public int getBook_size() {
        return book_size;
    }

    public void setBook_size(int book_size) {
        this.book_size = book_size;
    }

}

operation包 

 AddBook类

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class AddBook implements InOperation{

    @Override
    public void work(BookList bookList) {
        System.out.println("新增图书");
        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();
        scanner.nextLine();
        System.out.println("请输入图书的类型:>");
        String type = scanner.nextLine();

        Book book = new Book(name, author, price, type);//实例化Book对象,存新增的书
        int currentSize = bookList.getBook_size();//当前剩下的书的数量
        for(int i = 0; i < currentSize; i++){
            Book book1 = bookList.getBooks(i);
            if(book1.getName().equals(name)){
                System.out.println("书架已有此书,不必添加");
            }
            return;
        }
        bookList.setBooks(currentSize, book);
        bookList.setBook_size(currentSize + 1);
        System.out.println("添加成功!!!");
    }
}

BorrowBook类

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class BorrowBook implements InOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("借阅图书");
        System.out.println("请输入所借图书名字");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentSize = bookList.getBook_size();

        for(int i = 0; i < currentSize; i++){
            Book book = bookList.getBooks(i);
            if(book.getName().equals(name)){
                if(book.isBorrowed() == false) {
                    book.setBorrowed(true);
                    System.out.println("存在该书,欢迎借阅");
                }else {
                    System.out.println("该书不存在,对不起");
                }
                return;
            }

        }
    }
}

DeleteBook类

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class DeleteBook implements InOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("删除图书");
        System.out.println("请输入你要删除的图书名字:>");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentSize = bookList.getBook_size();
        if(currentSize == 0){
            System.out.println("书架为空");
        }

        int flag = -1;
        for(int i = 0; i < currentSize; i++){
            Book book = bookList.getBooks(i);
            if(book.getName().equals(name)){
                flag = i;
                break;
            }
        }
        if(flag == -1){
            System.out.println("该书不存在");
            return;
        }

        //虽然这样访问不到最后一本书,但是书的数量减一了,这样就自然没了最后一本书
        for(int i = flag; i < currentSize - 1; i++) {
            bookList.setBooks(flag, bookList.getBooks(i + 1));
        }
        bookList.setBook_size(currentSize - 1);
        System.out.println("删除成功");
    }
}

FindBook类

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class FindBook implements InOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("寻找图书");
        System.out.println("输入图书名字;>");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();

        int currentSize = bookList.getBook_size();
        int index = -1;
        for(int i = 0; i < currentSize; i++){
            Book book = bookList.getBooks(i);
            if(book.getName().equals(name)) {
               index = i;
            }
        }
        if(index == -1){
            System.out.println("该书不存在");
            return;
        }
        Book book = bookList.getBooks(index);
        System.out.println(book);
    }
}

PrintBook类

package operation;

import book.Book;
import book.BookList;

public class PrintBook implements InOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("显示全部图书");
        int currentSize = bookList.getBook_size();
        for(int i = 0; i < currentSize; i++){
            Book book = bookList.getBooks(i);
            System.out.println(book);
        }
    }
}

ReturnBook类

package operation;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class ReturnBook implements InOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还图书");
        System.out.println("请输入图书名字");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentSize = bookList.getBook_size();
        for (int i = 0; i < currentSize; i++){
            Book book = bookList.getBooks(i);
            if(book.getName().equals(name)){
                book.setBorrowed(false);
                System.out.println("归还成功");
                return;
            }
        }
        System.out.println("没这本书");
    }
}

Exit类

package operation;

import book.BookList;

public class Exit implements InOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统");
        int currentSize = bookList.getBook_size();
        for(int i = 0; i < currentSize; i++){
            bookList.setBooks(i,null);
        }
        bookList.setBook_size(0);
        System.exit(0);
    }
}

InOperation接口

package operation;

import book.BookList;

public interface InOperation {
      void work(BookList bookList);//因为这些操作都是在书架上,所以传参位BookList类型
}

user包 

Domestic类

package user;

import operation.*;

import java.util.Scanner;

import book.BookList;

public class Domestic extends User{
    public Domestic(String name) {
        super(name);
        this.inOperations = new InOperation[]{
                new Exit(),
                new BorrowBook(),
                new ReturnBook(),
                new FindBook()//记得都要实例化对象才能用,因为他们都是类
        };
    }


    @Override
    public int menu() {
        System.out.println("**********当当当!!!欢迎来到普通用户的菜单~~ *********");
        System.out.println("1.借阅图书       2.归还图书 ");
        System.out.println("        3.查找图书       ");
        System.out.println("        0.退出系统         ");
        System.out.println("请输入你想要进行的操作所对应的数字~~");
        Scanner s = new Scanner(System.in);
        int input = s.nextInt();
        return input;
    }
}

Administrator类

package user;
import operation.*;

import java.util.Scanner;
public class Administrator extends User{
    public Administrator(String name) {
        super(name);
        this.inOperations = new InOperation[]{
          new Exit(),
          new AddBook(),
          new DeleteBook(),
          new FindBook(),
          new PrintBook()
        };
    }

    @Override
    public int menu() {
        System.out.println("**********当当当!!!欢迎来到管理员的菜单~~ *********");
        System.out.println("1.新增图书       2.删除图书 ");
        System.out.println("3.查找图书       4.显示全部图书 ");
        System.out.println("        0.退出系统         ");
        System.out.println("请输入你想要进行的操作所对应的数字~~");
        Scanner s = new Scanner(System.in);
        int input = s.nextInt();
        return input;
    }
}

User类 

package user;

import book.BookList;
import operation.InOperation;

public abstract class User {
    private String name;
    public InOperation[] inOperations;//用public哟,以便其他地方使用

    public User(String name) {
        this.name = name;
    }
    public abstract int menu();
    public void doOperation(int choice, BookList bookList){
        inOperations[choice].work(bookList);
        //找到了对应的操作功能    调用相应的work方法
    }
}

Main类 

import book.BookList;
import user.Administrator;
import user.Domestic;
import user.User;

import java.util.Scanner;
public class Main {
    public static User login(){
        System.out.println("********** ~~欢迎来到图书管理系统~~ **********");
        System.out.println("请登录/注册");
        System.out.println("请选择你的身份   1 ---> 管理员     0 ---> 普通用户");
        Scanner s = new Scanner(System.in);
        int choice = s.nextInt();
        System.out.println("请输入你的名字");

        String name = s.next();
        if(choice == 1){
            return new Administrator(name);
        }else {
            return new Domestic(name);
        }
    }

    public static void main(String[] args) {
        BookList bookList = new BookList();//实例化对象
        User user = login();//这个确定身份(管理员或者普通用户)
        while(true){
            int choice = user.menu();//这个确定进行什么操作
            user.doOperation(choice, bookList);
        }
    }
}

到了这里,关于图书管理系统(Java简单版)(完整代码+详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA图书管理系统详细代码

    代码主要分为四个大部分,主函数,图书相关函数,操作,以及使用者。分为三个包:book、operation、user和一个单独的主函数。 操作接口 对于每一个操作都有相近的一部分,刚好可以用接口,在User(使用者)中利用接口类型的数组来进行相关的操作。在下面的User中会具体说

    2024年02月09日
    浏览(43)
  • Java实现一个简单的图书管理系统(内有源码)

    哈喽哈喽大家好啊,之前作者也是讲了Java不少的知识点了,为了巩固之前的知识点再为了让我们深入Java面向对象这一基本特性,就让我们完成一个图书管理系统的小项目吧。 项目简介: 通过管理员和普通用户的两种操作界面,利用其中的方法以及对象之间的交互,来实现对

    2024年02月11日
    浏览(26)
  • 用Java开发一个简单的图书馆管理系统

    图书馆管理系统是一种用于管理图书馆材料、用户和借还书记录等信息的软件系统。Java是一种流行的编程语言,它可以用于开发图书馆管理系统。在本篇文章中,我们将介绍如何使用Java编写一个简单的图书馆管理系统。 在设计系统时,需要考虑到各种各样的因素,例如系统

    2024年02月08日
    浏览(43)
  • 33基于Java简单实现图书馆借书管理系统设计与实现

    本章节给大家介绍一个基于Java简单实现图书馆借书管理系统的设计与实现 项目总体分为俩种角色,分别是管理员和阅读者,管理员可以登录系统中,进行图书管理,上架下架图书,对用户进行管理、对读者进行管理、查看借阅记录管理等,读者角色可以登录系统查询图书信息

    2024年02月03日
    浏览(39)
  • 将Java与数据库连接起来(配置idea),实现一个简单的图书管理系统

    目录 1.通过connector连接Java和Mysql数据库 (1)首先配置idea (2)如何把java和mysql连接起来 1.简单连接 2.认识PrepareStatement 2.实现简单的图书管理系统 (1)创建数据库jdbc,并且创建出book表  (2)在idea中书写代码将mysql与java连接,实现基本的增删改查 1.JdbcUtiles类,一个使用jdbc的工具

    2024年02月11日
    浏览(34)
  • 基于java的图书借阅管理系统设计与实现(源代码+数据库+部署文档+部署视频)

           图书管理系统 该系统对数据进行保存、修改、删除等管理。为用户提供了一个友好、简单快捷的运行操作平台。该统对数据进行保存、修改、删除等管理,为用户提供了一个友好、简单快捷的运行操作平台。本系统的各界面设计友好、流程正确、功能也较为完善,

    2024年02月03日
    浏览(41)
  • 【Java】学生管理系统-登录、注册、CRUD(附完整代码)

    为学生管理系统书写一个登陆、注册、忘记密码的功能。 只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。 采取控制台的方式去书写学生管理系统。 属性:id、姓名、年龄、家庭住址 属性:用户名、密码、身份证号码、手机号码 1,用户名需要满足以

    2024年02月03日
    浏览(33)
  • 简单的图书管理系统(mysql)

     我的GitHub :GitHub - FunnyGuy525/LibraryManageSystem) 一、数据库结构设计 1.E-R图 2. 数据库创建语句 create database if not exists tsjy; use tsjy; 3. 表结构设计说明 借阅人表是一个实体表,它存储了借阅人的基本信息,如证件号、姓名、类别、已借数目和电话。证件号是借阅人表的主键,它可

    2024年02月08日
    浏览(49)
  • C++图书馆管理系统(简单版)

    实用的图书馆管理系统应该至少包括一下功能: 1、上传:新进图书以及基本信息的输入 2、删除:旧图书以及基本信息的删除 3、显示:显示图书馆已有的所有图书 4、查找:查询要借阅的图书信息 5、借阅:实现用户办理借阅手续 6、归还:实现用户办理归还手续 系统以菜单

    2024年02月09日
    浏览(38)
  • Python 基础 (十)Python实现简单的图书管理系统

    Python 基础 (一)Python基本认识与环境搭建 Python 基础 (一)Python基本认识与环境搭建 Python 基础 (二)Python变量与基本数据类型 Python 基础 (二)Python变量与基本数据类型 Python 基础 (三)Python基本语句与基本运算 Python 基础 (三)Python基本语句与基本运算 Python 基础 (四

    2024年02月04日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包