【Java简单实现图书管理系统】
文章目录
- 一、图书管理系统要实现哪些功能
- 二、怎么去实现这些功能?
- 三、程序框架图
- 四、具体实现
- 1.Book
- Book
- BookList
- 2.User
- User
- NormallUser
- AdminUser
- 3.operation
- IOoperation
- AddOperation
- BorrowOperation
- DelOperation
- DisplayOperation
- FindOperation
- ReturnOperation
- ExitOperation
- 4.Main
- 五、效果展示
- 管理员效果展示
- 普通用户效果展示
- 总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、图书管理系统要实现哪些功能
1.图书管理系统分为图书管理员,普通用户
2.既然分为两类用户就要实现与其相对应的菜单
3.管理员我们要实现查找图书、增添图书、删除图书、显示图书、以及退出系统
4.普通用户我们要实现查找图书、借阅图书、归还图书、以及退出系统
以上就是我们要实现的一些简单功能
二、怎么去实现这些功能?
1.首先我们是图书管理系统,我们要抽象出图书Book这个类,并且加上图书名称、作者、价格、类型、以及借出的状态这些属性。
2.我们还要想到我们的书应该放在哪里,所以抽象出书架BookList这个类,然后在一个数组中存放我们的书。
3.因为我们分为两种用户,所以可以抽象User这个类,将这个类作为普通用户NormallUser,管理员Adminuser的父类
4.最重要的就是如何实现我们的逻辑操作,我们创建一个operation的包,实现IOperation的这个接口,然后我们分别让查找,增添,删除,显示,借阅,归还,退出系统分别实现这个接口。
5.最后要在Main这个包下面,实现登录的操作利用循环打印对应的菜单
三、程序框架图
四、具体实现
1.Book
Book
package Book;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:23*/
public class Book {private String name; //书名private String author;//代表作者private int price;//价格private String type;//类型private boolean isBorrowed;//是否被借出 //默认是未被借出的public Book(String name, String author, int 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 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 boolean isBorrowed() {return isBorrowed;}public void setBorrowed(boolean borrowed) {isBorrowed = borrowed;}@Overridepublic String toString() {return "BookList{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +((isBorrowed==true) ? "已经借出":"未借出")+'}';}
}
BookList
package Book;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:24*/
//书架
public class BookList {//最多放10本书private Book[] books = new Book[10];private int usedSize; //实时记录 当前books这个数组中有多少本书public BookList(){books[0]=new Book("三国演义","罗贯中",19,"小说");books[1]=new Book("西游记","吴承恩",39,"小说");books[2]=new Book("红楼梦","曹雪芹",59,"小说");usedSize =3;}//此时pos位置一定是合法的//获取这本书public Book getBook(int pos){return books[pos];}//此时pos位置一定是合法的 book是你要放的书public void setBooks(int pos,Book book){books[pos]=book;}//实时获取当前书的数量public int getUsedSize(){return usedSize;}//实时的修改书的数量(例如增加和删除书的时候)public void setUsedSize(int size){usedSize = size;}}
2.User
User
package user;import Book.BookList;
import operation.IOoperation;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:57*/
public abstract class User {protected String name;//用户名protected IOoperation[]iOoperations;//没有初始化大小和分配public User(String name) {this.name = name;}public abstract int menu();public void doOperation(int choice, BookList bookList){this.iOoperations[choice].work(bookList);//最关键 灵魂的一步}
}
NormallUser
package user;import operation.ExitOperation;
import operation.BorrowOperation;
import operation.FindOperation;
import operation.IOoperation;
import operation.ReturnOperation;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:59*/
public class NormallUser extends User {public NormallUser(String name) {super(name);this.iOoperations =new IOoperation[]{new ExitOperation(), //0下标是退出系统new FindOperation(), //根据数字定义该操作位于数组下标几的位置new BorrowOperation(),new ReturnOperation(),};}public int menu(){System.out.println("hello "+this.name+" 欢迎进入图书管理系统!");System.out.println("1.查找图书!");System.out.println("2.借阅图书!");System.out.println("3.归还图书!");System.out.println("0.退出系统!");System.out.println("请输入你的操作:");Scanner scanner =new Scanner(System.in);int choice =scanner.nextInt();return choice;}
}
AdminUser
package user;import operation.ExitOperation;
import operation.*;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:59*/
public class AdminUser extends User {public AdminUser(String name) {super(name);this.iOoperations =new IOoperation[]{new ExitOperation(), //0下标是退出系统new FindOperation(),new AddOperation(), //根据数字定义该操作位于数组下标几的位置new DelOperation(),new DisplayOperation()};}public int menu(){System.out.println("hello "+this.name+" 欢迎进入图书管理系统!");System.out.println("1.查找图书!");System.out.println("2.新增图书!");System.out.println("3.删除图书!");System.out.println("4.显示图书!");System.out.println("0.退出系统!");System.out.println("请输入你的操作:");Scanner scanner =new Scanner(System.in);int choice =scanner.nextInt();return choice;}
}
3.operation
IOoperation
package operation;import Book.BookList;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:47*/
public interface IOoperation {void work(BookList bookList);
}
AddOperation
package operation;import Book.Book;
import Book.BookList;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:48*/
public class AddOperation implements IOoperation{@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("请输入图书的类型:");String type =scanner.nextLine();System.out.println("请输入图书的价格:");int price = scanner.nextInt();Book book =new Book(name,author,price,type);int currentSize = bookList.getUsedSize();bookList.setBooks(currentSize,book);bookList.setUsedSize(currentSize+1);System.out.println("新增图书成功!");}}
BorrowOperation
package operation;import Book.Book;
import Book.BookList;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:54*/
public class BorrowOperation implements IOoperation{@Overridepublic void work(BookList bookList) {System.out.println("借阅图书!");Scanner scanner =new Scanner(System.in);System.out.println("请输入借阅图书的名称:");String name =scanner.nextLine();int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book =bookList.getBook(i);if(book.getName().equals(name)){book.setBorrowed(true);System.out.println("借阅成功!");return;}}}
}
DelOperation
package operation;import Book.Book;import java.util.Scanner;
import Book.BookList;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:50*/
public class DelOperation implements IOoperation {@Overridepublic void work(BookList bookList) {System.out.println("删除图书!");System.out.println("请输入你要删除图书的名字:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();int index = 0;int currentSize = bookList.getUsedSize();int i = 0;for (; i < currentSize; i++) {Book book = bookList.getBook(i);if(book.getName().equals(name)) {index = i;break;}}//1、遇到了break 2、没有找到 结束了for循环if(i == currentSize) {System.out.println("没有你要删除的图书!");return;}for (int j = index; j < currentSize-1; j++) {//bookList[j] = bookList[j+1];Book book =bookList.getBook(j+1);bookList.setBooks(j,book);}bookList.setBooks(currentSize-1,null);bookList.setUsedSize(currentSize-1);System.out.println("删除结束");}
}
DisplayOperation
package operation;import Book.Book;
import Book.BookList;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:51*/
public class DisplayOperation implements IOoperation{@Overridepublic void work(BookList bookList) {System.out.println("显示图书!");int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book =bookList.getBook(i);System.out.println(book);}}}
FindOperation
package operation;import Book.Book;
import Book.BookList;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:49*/
public class FindOperation implements IOoperation {@Overridepublic void work(BookList bookList) {System.out.println("查找图书!");Scanner scanner =new Scanner(System.in);System.out.println("请输入图书的名称:");String name =scanner.nextLine();int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book =bookList.getBook(i);if(book.getName().equals(name)){System.out.println("找到了这本书!");System.out.println(book);return;}}//说明没有找到System.out.println("没有你要找的图书!");}}
ReturnOperation
package operation;import Book.Book;
import Book.BookList;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:55*/
public class ReturnOperation implements IOoperation {@Overridepublic void work(BookList bookList) {System.out.println("归还图书!");Scanner scanner =new Scanner(System.in);System.out.println("请输入归还图书的名称:");String name =scanner.nextLine();int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book =bookList.getBook(i);if(book.getName().equals(name)){book.setBorrowed(false);System.out.println("归还成功!");return;}}}
}
ExitOperation
package operation;import Book.BookList;
import operation.IOoperation;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 21:52*/
public class ExitOperation implements IOoperation {@Overridepublic void work(BookList bookList) {System.out.println("退出系统!");System.exit(0);}
}
4.Main
package Main;import Book.BookList;
import user.AdminUser;
import user.NormallUser;
import user.User;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: 刘尚辉* Date: 2022-05-18* Time: 22:12*/
public class Main {//实现登录的方法public static User login(){System.out.println("请输入你的姓名:");Scanner scanner =new Scanner(System.in);String name =scanner.nextLine();System.out.println("请输入你的身份:1:--》管理员,0--》普通用户");int choice= scanner.nextInt();if(choice==1){return new AdminUser(name);}else{return new NormallUser(name);}}public static void main(String[] args) {BookList bookList =new BookList();//准备图书//登录-->user这个引用引用那个对象 看返回值User user = login();//打印菜单while (true){int choice = user.menu();//动态绑定user.doOperation(choice,bookList);}}
}
五、效果展示
管理员效果展示
普通用户效果展示
总结
提示:以上就是简单实现图书管理系统的简单实现
【Java简单实现图书管理系统】相关推荐
- Java—简单的图书管理系统
简单的图书管理系统 通过数据源和DAO对象访问数据库.其中JavaBeans实现模型,访问数据库,Servlet实现控制器,JSP页面实现视图. • 模型包括2个JavaBean:BookBean用于 ...
- java简单的图书管理系统(只用java代码不用数据库和可视化界面,一个管理员表和图书表)
java控制台输入图书管理系统信息,(不用数据库和可视化界面,java学习新手秒懂)使用多层框架实现功能 图书管理系统需求: 一. 登录页面 1.管理员通过输入用户名和密码能够进入后台进行操作 2.可 ...
- 简单用java做一个图书管理系统
简单用java做一个图书管理系统 首先,我们创建一个View类当做它的视图页 package view;import service.BookService; import service.UserS ...
- javaweb JAVA JSP图书管理图书系统 图书管理系统实现简单的图书管理系统源码
javaweb JAVA JSP图书管理图书系统 图书管理系统实现简单的图书管理系统源码 protected void doGet(HttpServletRequest req, HttpServle ...
- java实现简单的图书管理系统(以及代码中用了特殊注释TODO,XXX,FIXME),compare接口
参考来自 java实现简单的图书管理系统_Jewel's blog-CSDN博客_java图书管理系统一.项目分布Book类: 定义了书的一些属性(书名,作者,价格,分类,状态)并且写了属性的get. ...
- java简单图书管理系统的代码,java编写的图书管理系统源代码
<java编写的图书管理系统源代码>由会员分享,可在线阅读,更多相关<java编写的图书管理系统源代码(6页珍藏版)>请在人人文库网上搜索. 1.用户登陆数据库代码:impor ...
- Java集合案例图书管理系统
请实现一个简单的图书管理系统,要求如下: 1)定义图书类Book,具有属性账号id,书名name.作者author 和价格price,在创建图书对象时要求通过构造器进行创建,一次性将四个属性全部赋值, ...
- java用spring图书管理系统_基于Java + SpringMVC的图书管理系统
需求分析 基于Java+SpringMVC的图书管理系统, 实现读者和管理员登陆,图书的增删改查,读者的增删改查,借还图书,密码修改,卡号挂失,超期提醒等功能 本站提供了其他类型的 图书管理系统源代码 ...
- JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能。
JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能. 代码有一丢丢小多,最后有图解,讲的不对的地方希望各位大佬指出,对您有帮助的话请点个小小的赞. 题目与 ...
最新文章
- Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]
- SAP S4 OP/Cloud大乱斗
- 我对图像金字塔的理解及OpenCV下的实现代码
- bootstrap栅格分5等分
- Linux 3.10 新特性
- php 取oracle图片,在PHP中将图片存放ORACLE中_php
- 坐标轨迹计算_三坐标测量机控制系统功能介绍
- python下载股票数据_如何下载股票历史数据?
- 实用免费的SNMP网管工具-sugarnmsTool
- Matlab画图相关知识
- 画出清明上河图的代码_怎样用一串代码画出《清明上河图》?
- Excel查看多列重复项
- 美国密歇根州立大学计算机专业,密歇根州立大学计算机科学与工程系
- 组合数学 —— 母函数
- 密码主页jQuery插件的应用(注册时的验证)
- android ps2 模拟器,手机目前安卓系统PS2模拟器最好用的是一款叫做呆萌PS2模拟器的APP!这一款竟然是国产的!...
- c语言 验证用户名密码
- python 根据身份证号计算年龄和性别_excel如何根据身份证号计算男女出生日期、性别和年龄?分享了!...
- 如何支持RTSP播放H.265(HEVC)流
- 自动化 Google 以图搜图
热门文章
- JQuery 动画滑动显示和隐藏方式 slideDown\slideUp\slideToggle
- Flir Blackfly S 工业相机:配置多个摄像头进行同步拍摄
- WorldFirst个人能开户吗?亚马逊收款WorldFirst你了解吗?
- ios中使用SegmentedControl来切换视图
- Python学习日记(十一) 内置函数
- Ruby‘s Adventrue游戏制作笔记(十一)Unity角色攻击——发射子弹
- 你听我说-HandyControl源码编译
- 如何解决Vivado仿真时提示:另一个程序正在使用此文件 behavxsimsimulate.log
- Ansible 之 Playbook详解
- Ethereum在txpool中的Pending transaction监测方法