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

article/2025/10/10 23:38:47

目录

详解: 

BookList类:

InOperation接口 

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

完整代码 

book包 

Book类 

BookList类

operation包 

 AddBook类

BorrowBook类

DeleteBook类

FindBook类

PrintBook类

ReturnBook类

Exit类

InOperation接口

user包 

Domestic类

Administrator类

User类 

Main类 


 

详解: 

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

 

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

 

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

BookList类:

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

 

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

 

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

 

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

 

 

InOperation接口 

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

 

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

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

 

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

 

 

剩下的方法实现起来都蛮简单的,对比着代码看看就能懂,不多说了 😊😊

完整代码 

book包 

Book类 

package book;public class Book {private String name;private String author;private double price;private String type;private boolean borrowed;//默认falsepublic 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}@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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{@Overridepublic 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()//记得都要实例化对象才能用,因为他们都是类};}@Overridepublic 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()};}@Overridepublic 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);}}
}


http://chatgpt.dhexx.cn/article/7ui0d96e.shtml

相关文章

用java实现图书管理系统。

在学完java基础篇的时候&#xff0c;安排做了一个综合版的java基础项目&#xff0c;可以把之前学到的知识综合运用。 图书管理系统。 一.项目设计到的知识1.MVC设计模式思想&#xff08;分包&#xff09;>项目分包>MVC简单介绍 2.GUI&#xff08;图形化界面&#xff09;3…

Java实现简易版的【图书管理系统】

目录 &#x1f30e;1.分析图书管理系统的功能 &#x1f30d; 2.在IDEA中进行功能类的创建 &#x1f984;2.1 创建一个名为book的包&#xff0c;里面存放书相关的 &#x1f984; 2.2 创建一个名为Operation的包&#xff0c;里面存放对书的所有操作 &#x1f30e; 3.进行用户…

Java图书管理系统(代码及详解)

图书管理系统在C、C、Java学习中我们都会进行练习来串联我们学习的一些知识以及使用场景&#xff0c;这里跟着我我带大家敲Java版本&#xff01; 结果展示&#xff1a; 这是我们最终实现的图书管理系统&#xff0c;下面我们慢慢来 思路&#xff1a; Java是面向对象的语言特点…

JAVA实现简易的图书管理系统(含过程)

目录 设计背景 成果展示 设计思路 详细代码 book包 Book类 BookList类 operation包 IOperation接口 AddOperation类 BorrowOperation类 DelOperation类 DisplayOperation类 ExitOperation类 ReturnOperation类 user包 User类 Admin类 NormalUser类 Test类…

图书管理系统(Java实现)[附完整代码]

作者&#xff1a;爱塔居的博客_CSDN博客-JavaSE领域博主 专栏&#xff1a;JavaSE 作者专栏&#xff1a;大三学生&#xff0c;希望跟大家一起进步&#xff01; 文章目录 目录 文章目录 一、图书管理系统菜单 二、实现基本框架 三、实现业务 3.1 打印所有图书 3.2 退出系统 3.3 查…

JAVA->实现图书管理系统

目录 一、图书管理系统展示 1.管理员 2.普通用户 ​编辑3.操作 二、图书管理系统基本实现思路 book --- 包 1.Book类 注意&#xff1a; 2.BookList类 注意&#xff1a; Opreration --- 包 Operration接口 1.AddOperation -- 增加图书 注意&#xff1a; 2. BorrowO…

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

图书管理系统 简介知识点类封装包继承接口多态 创建书&#xff08;Book&#xff09;书架&#xff08;BookList&#xff09;主函数&#xff08;Main&#xff09;用户&#xff08;User&#xff09;管理员&#xff08;Administrator&#xff09;接口&#xff08;IOperation&#x…

Java基础之图书管理系统

一&#xff1a;建立信息表 为图书管理人员编写一个图书管理系统&#xff0c;图书管理系统的设计主要是实现对图书的管理和相关操作&#xff0c;包括3个表&#xff1a; 图书信息表——存储图书的基本信息&#xff0c;包括书号、书名、作者、出版社、出版日期、存馆数量、定价等…

Java实现简单图书管理系统

目录 利物浦是冠军&#xff01; 一、图书管理系统的功能 二、图书管理系统的基本实现思路 1、Book包 2、user包 3、operation包 4、利用Main函数来连接所有包 三、图书管理系统的具体实现 1、Book包 &#xff08;1&#xff09;book类 &#xff08;2&#xff09;bookL…

Java实现图书管理系统(超详细解析)

图书管理系统简单实现。图书管理系统基于Java&#xff0c;页面使用jsp实现。 用户进入登录页面&#xff0c;输入账号密码&#xff0c;系统会自动检验账号和密码是否匹配&#xff0c;匹配成功则进入图书管理首页。首页查看图书信息&#xff0c;新增图书信息&#xff0c;删除不需…

Java实现简单的图书管理系统(讲解清晰,代码齐全,能正常运行)

目录 实现的样子 大致思路 代码 &#xff08;按照这个目录创建包&#xff09; 首先是book包下&#xff0c;有两个类 book类 bookList类 然后是operation包下&#xff0c;有7个类和1个接口 AddOperation类 BorrowOperation类 DelOperation类 DisplayOperation类 ExitO…

Java课程设计—— 图书管理系统

1系统需求分析 1.1功能需求分析 本课题根据图书信息管理综合分析&#xff0c;便出于方便管理考虑&#xff0c;将图书信息管理系统的功能总结起来&#xff0c;共需要实现以下几个方面功能: 1.1.1管理图书信息 管理所有图书的基本信息&#xff0c;对图书信息的操作包括添加、…

用Java实现简易的图书管理系统(超详细)

目录 1.设计背景 2.设计思路 3.模块展示及代码演示 3.1 Book类的实现 3.2 BookList类的实现(书架) 3.3 异常类的实现(OperationException) 3.4 用户类的实现 3.5 操作接口的实现(定义规范) 3.6 操作类的具体实现 3.6.1 增加操作 3.6.2 查找操作 3.6.3 删除操作 3.6…

mysql 数组函数_mysql数组函数知识讲解

MySQL的数组函数有很多种&#xff0c;今天给大家介绍的就是mysql数组中的mysql_fetch_array()函数&#xff0c;mysql_fetch_array()函数的代码编写有什么特点呢&#xff1f; MySQL中有很多功能强大的函数&#xff0c;下面为您介绍的函数mysql_fetch_array()属于MySQL数组函数&a…

MySQL聚合函数

一、聚合函数介绍 1、聚合函数作用于一组数据&#xff0c;并对一组数据返回一个值。 2、聚合函数类型 AVG() SUM() MAX() MIN() COUNT() 3、聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。 二、AVG和SUM函数 # AVG函数用于求一组数据的平均值&a…

MySql常用函数大全讲解

MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数&#xff0c;可以简化用户的操作。例如&#xff0c;字符串连接函数可以很方便的将多个字符串连接在一起。在这一讲中…

MySql统计函数COUNT详解

MySql统计函数COUNT详解 1. COUNT()函数概述2. COUNT()参数说明3. COUNT()判断存在4. COUNT()阿里开发规范 1. COUNT()函数概述 COUNT() 是一个聚合函数&#xff0c;返回指定匹配条件的行数。开发中常用来统计表中数据&#xff0c;全部数据&#xff0c;不为NULL数据&#xff0…

MYSQL窗口函数

文章目录 一、为何使用窗口函数二、什么是窗口函数三、窗口函数如何使用3.1 序号函数3.2 分布函数3.3 前后函数3.4 头尾函数3.5 其他函数3.6 聚类窗口函数 一、为何使用窗口函数 在日常工作中经常会遇到类似这样的需求&#xff1a; 怎么样得到各部门工资排名前N名的员工列表?…

MySQL常见函数

一、单行函数 1.1 字符函数 length(str)&#xff1a;统计字符串的字节数&#xff08;取决于编码方式&#xff0c;utf8汉字3字节&#xff0c;gbk汉字2字节&#xff09;concat(str1, str2)&#xff1a;拼接字符substr/substring(str, n1 [,n2])&#xff1a;切割字符&#xff0c…

MySQL常用函数大全(总结篇)

本篇文章讲解是是MySQL的函数方法&#xff0c;涵盖所有的MySQL常见的方法。下面是本篇文章的目录结构&#xff0c;可以根据自己需求点击右方目录查找&#xff1a; 一、数字函数二、字符串函数三、日期函数四、MySQL高级函数 &#xff08;一&#xff09;数字函数 1、ABS(x) 返…