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

article/2025/10/11 0:06:09

图书管理系统

  • 简介
    • 知识点
      • 封装
      • 继承
      • 接口
      • 多态
  • 创建书(Book)
  • 书架(BookList)
  • 主函数(Main)
  • 用户(User)
    • 管理员(Administrator)
      • 接口(IOperation)
      • 查(FinOperation)
      • 增(AddOperation)
      • 删(DelOperation)
      • 显示(DisOperation)
      • 退出(ExiOperation)
    • 学生(Ordinary)
      • 查(FinOperation)
      • 借(BorrOperation)
      • 归(RetOperation)
      • 显示(DisOperation)
      • 退出(ExiOperation)
  • 管理员运行截图
  • 学生运行结果

简介

通过登录确认自己的身份,如果是管理员,对图书进行增,删,查,显示等,如果是学生,则实现借阅,归还,查找等功能。
在这里插入图片描述
在这里插入图片描述

知识点

链接: link.

封装

链接: link.

链接: link.

继承

链接: link.

接口

链接: link.

多态

链接:link.

创建书(Book)

package book;public class Book {/*一本书的属性包括书名,作者,价格,类型,编号,以及状态*/private String name;private String author;private int price;private String type;private int num;private boolean status;//提供构造方法public Book(String name, String author, int price, String type, int num) {this.name = name;this.author = author;this.price = price;this.type = type;this.num = num;}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 int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public String getType() {return type;}public void setType(String type) {this.type = type;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}public boolean isStatus() {return status;}public void setStatus(boolean status) {this.status = status;}//toString 方法打印@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +", num=" + num +((status == true) ? " 已借出 " : " 未借出 ") +'}';}
}

书架(BookList)

这里提前往书架放了三本书

package book;public class BookList {//书都是同一类型的元素,创建一个Book类型的数组private Book[] books;private int size;//先给书架放三本书public BookList() {this.books = new Book[10];books[0] = new Book("张","小张",10,"小说",1);books[1] = new Book("王","小王",23,"小说",3);books[2] = new Book("李","小李",20,"小说",2);this.size = 3;}public int getSize() {return size;}public void setSize(int size) {this.size = size;}public void setBooks(int pos, Book book) {this.books[pos] = book;}public Book getBook(int pos) {return this.books[pos];}
}

主函数(Main)

import book.BookList;
import user.Administrator;
import user.Ordinary;
import user.User;import java.util.Scanner;public class Main {public static User login() {Scanner sc = new Scanner(System.in);System.out.println("请输入姓名:");String name = sc.next();System.out.println("请确认您的身份:1 > 管理员  0 > 学生");int choice = sc.nextInt();if(choice == 1){return new Administrator(name);}else{return new Ordinary(name);}}public static void main(String[] args) {BookList bl = new BookList();//登录User user = login();//选择菜单while(true){int choice = user.menu();user.doOperation(choice,bl);}}
}

用户(User)

package user;import book.BookList;
import operation.IOperation;
//抽象类,主要为了被继承
public abstract class User {public String name;public IOperation[] operation;public User(String name) {this.name = name;}public abstract int menu();public void doOperation(int choice, BookList bl) {this.operation[choice].work(bl);}
}

管理员(Administrator)

package user;import operation.*;import java.util.Scanner;public class Administrator extends User{public Administrator(String name) {super(name);this.operation = new IOperation[]{new ExiOperation(),new FinOperation(),new AddOperation(),new DelOperation(),new DisOperation()};}@Overridepublic int menu() {System.out.println("欢迎" + this.name + "进入图书管理系统!");Scanner sc = 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("=============");int choice = sc.nextInt();return choice;}
}

接口(IOperation)

package operation;import book.BookList;public interface IOperation {void work(BookList bl);
}

查(FinOperation)

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class FinOperation implements IOperation{@Overridepublic void work(BookList bl) {System.out.println("查找书籍");Scanner sc = new Scanner(System.in);System.out.println("请输入要查找的书籍名字:");String name = sc.next();for (int i = 0; i < bl.getSize(); i++) {Book book = bl.getBook(i);if(book.getName().equals(name)){System.out.println("有此书籍!");System.out.println(book);return;}}System.out.println("未找的您需要的书籍!");}
}

增(AddOperation)

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class AddOperation implements IOperation {@Overridepublic void work(BookList bl) {Scanner sc = new Scanner(System.in);System.out.println("添加图书");System.out.println("请输入图书的名字:");String name = sc.nextLine();System.out.println("请输入图书的作者:");String author = sc.nextLine();System.out.println("请输入图书价格:");int price = sc.nextInt();System.out.println("请输入图书的类型:");String type = sc.next();System.out.println("请输入图书的编号:");int num = sc.nextInt();Book book = new Book(name,author,price,type,num);int curSize = bl.getSize();//拿到长度bl.setBooks(curSize,book);bl.setSize(curSize+1);System.out.println("添加成功!");}
}

删(DelOperation)

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class DelOperation implements IOperation{@Overridepublic void work(BookList bl) {System.out.println("删除图书");System.out.println("请输入需要删除的书籍名字:");Scanner sc = new Scanner(System.in);String name = sc.nextLine();int i = 0;for (; i < bl.getSize(); i++) {Book book = bl.getBook(i);if(book.getName().equals(name)){break;}}if(i >= bl.getSize()){System.out.println("没有找到此书籍");return;}int j = i;for(; j < bl.getSize() - 1; j++){Book book = bl.getBook(j + 1);bl.setBooks(j,book);}int cueSize = bl.getSize();bl.setSize(cueSize-1);System.out.println("成功删除此书籍!");}
}

显示(DisOperation)

package operation;import book.Book;
import book.BookList;public class DisOperation implements IOperation{@Overridepublic void work(BookList bl) {System.out.println("显示图书");for (int i = 0; i < bl.getSize(); i++) {Book book = bl.getBook(i);System.out.println(book);}}
}

退出(ExiOperation)

package operation;import book.BookList;public class ExiOperation implements IOperation{@Overridepublic void work(BookList bl) {System.out.println("退出系统");System.exit(1);}
}

学生(Ordinary)

package user;import operation.*;import java.util.Scanner;public class Ordinary extends User {public Ordinary(String name) {super(name);this.operation = new IOperation[]{new ExiOperation(),new FinOperation(),new BorrOperation(),new RetOperation(),new DisOperation()};}@Overridepublic int menu() {System.out.println("欢迎" + this.name + "同学进入图书管理系统!");Scanner sc = 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("==============");int choice = sc.nextInt();return choice;}
}

查(FinOperation)

同管理员

借(BorrOperation)

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class BorrOperation implements IOperation{@Overridepublic void work(BookList bl) {System.out.println("借阅书籍");System.out.println("请输入需要借阅的书籍名字:");Scanner sc = new Scanner(System.in);String name = sc.nextLine();for (int i = 0; i < bl.getSize(); i++) {Book book = bl.getBook(i);if(book.getName().equals(name)) {System.out.println("请取走您要的书籍!");book.setStatus(true);System.out.println(book);return;}}System.out.println("没有你需要的书籍!");}
}

归(RetOperation)

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class RetOperation implements IOperation{@Overridepublic void work(BookList bl) {System.out.println("归还图书");Scanner sc = new Scanner(System.in);System.out.println("请输入您要归还的书籍名字!");String name = sc.nextLine();for (int i = 0; i < bl.getSize(); i++) {Book book = bl.getBook(i);if(book.getName().equals(name)) {book.setStatus(false);System.out.println(book);return;}}}
}

显示(DisOperation)

同管理员

退出(ExiOperation)

同管理员

管理员运行截图

在这里插入图片描述

学生运行结果

在这里插入图片描述


http://chatgpt.dhexx.cn/article/Ebyk9Mwb.shtml

相关文章

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) 返…

MySQL常用函数大全(实例演示)

此博客主要包括如下类型函数&#xff1a; 一、数字函数 二、字符串函数 三、日期函数 四、MySQL高级函数 一、数字函数 1、ABS(x) 返回x的绝对值 SELECT ABS(-1); 结果&#xff1a; 2、AVG(expression) 返回一个表达式的平均值&#xff0c;expression 是一个字段 SELE…

MySql常用函数大全

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

MySQL函数大全

目录 &#xff08;一&#xff09;字符函数 ①length(str)函数 ②concat(str1,str2,...)函数 ③upper(str)、lower(str)函数 ④substr(str,start,len)函数 ⑤instr(str,要查找的子串)函数 ⑥trim(str)函数 ⑦lpad(str,len,填充字符)、rpad(str,len,填充字符)函数 ⑧rep…

MySQL函数(经典收藏)

MySQL函数&#xff08;经典收藏&#xff09; MySQL函数 MySQL数据库提供了很多函数包括&#xff1a; 数学函数&#xff1b;字符串函数&#xff1b;日期和时间函数&#xff1b;条件判断函数&#xff1b;系统信息函数&#xff1b;加密函数&#xff1b;格式化函数&#xff1b; …

MySql常用函数大全(详细)

一、数学函数 &#xff08;1&#xff09;ABS&#xff08;x&#xff09;返回绝对值&#xff1b;例&#xff1a; &#xff08;2&#xff09;PI&#xff08;&#xff09;返回圆周率的函数&#xff0c;默认值为小数后六位&#xff1b;例&#xff1a; &#xff08;3&#xff09;求函…

齐全且实用的MySQL函数使用大全

目录 一、MySQL函数介绍 二、MySQL函数分类 &#xff08;一&#xff09;单行函数 ①字符串函数 ②数学函数 ③日期函数 ④流程控制函数 ⑤系统信息函数 ⑥其他函数 &#xff08;二&#xff09;聚合函数 三、函数使用示例 &#xff08;一&#xff09;字符函数 ①le…

sql注入的小工具介绍

sql注入的小工具介绍 啊D注入工具&#xff1a; pangolin&#xff08;穿山甲&#xff09; 穿山甲&#xff1b;Pangolin&#xff08;中文译名为穿山甲&#xff09;一款帮助渗透测试人员进行Sql注入测试的安全工具&#xff0c;是深圳宇造诺赛科技有限公司(Nosec)旗下的网站安全测…