文章目录

  • 一、图书管理系统要实现哪些功能
  • 二、怎么去实现这些功能?
  • 三、程序框架图
  • 四、具体实现
    • 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简单实现图书管理系统】相关推荐

  1. Java—简单的图书管理系统

    简单的图书管理系统 通过数据源和DAO对象访问数据库.其中JavaBeans实现模型,访问数据库,Servlet实现控制器,JSP页面实现视图. • 模型包括2个JavaBean:BookBean用于 ...

  2. java简单的图书管理系统(只用java代码不用数据库和可视化界面,一个管理员表和图书表)

    java控制台输入图书管理系统信息,(不用数据库和可视化界面,java学习新手秒懂)使用多层框架实现功能 图书管理系统需求: 一. 登录页面 1.管理员通过输入用户名和密码能够进入后台进行操作 2.可 ...

  3. 简单用java做一个图书管理系统

    简单用java做一个图书管理系统 首先,我们创建一个View类当做它的视图页 package view;import service.BookService; import service.UserS ...

  4. javaweb JAVA JSP图书管理图书系统 图书管理系统实现简单的图书管理系统源码

    javaweb JAVA JSP图书管理图书系统 图书管理系统实现简单的图书管理系统源码 protected void doGet(HttpServletRequest req, HttpServle ...

  5. java实现简单的图书管理系统(以及代码中用了特殊注释TODO,XXX,FIXME),compare接口

    参考来自 java实现简单的图书管理系统_Jewel's blog-CSDN博客_java图书管理系统一.项目分布Book类: 定义了书的一些属性(书名,作者,价格,分类,状态)并且写了属性的get. ...

  6. java简单图书管理系统的代码,java编写的图书管理系统源代码

    <java编写的图书管理系统源代码>由会员分享,可在线阅读,更多相关<java编写的图书管理系统源代码(6页珍藏版)>请在人人文库网上搜索. 1.用户登陆数据库代码:impor ...

  7. Java集合案例图书管理系统

    请实现一个简单的图书管理系统,要求如下: 1)定义图书类Book,具有属性账号id,书名name.作者author 和价格price,在创建图书对象时要求通过构造器进行创建,一次性将四个属性全部赋值, ...

  8. java用spring图书管理系统_基于Java + SpringMVC的图书管理系统

    需求分析 基于Java+SpringMVC的图书管理系统, 实现读者和管理员登陆,图书的增删改查,读者的增删改查,借还图书,密码修改,卡号挂失,超期提醒等功能 本站提供了其他类型的 图书管理系统源代码 ...

  9. JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能。

    JDBC+MYSQL图书馆,简单迷你图书管理系统练习小项目,实现查询,新增,修改,删除,退出功能. 代码有一丢丢小多,最后有图解,讲的不对的地方希望各位大佬指出,对您有帮助的话请点个小小的赞. 题目与 ...

最新文章

  1. Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]
  2. SAP S4 OP/Cloud大乱斗
  3. 我对图像金字塔的理解及OpenCV下的实现代码
  4. bootstrap栅格分5等分
  5. Linux 3.10 新特性
  6. php 取oracle图片,在PHP中将图片存放ORACLE中_php
  7. 坐标轨迹计算_三坐标测量机控制系统功能介绍
  8. python下载股票数据_如何下载股票历史数据?
  9. 实用免费的SNMP网管工具-sugarnmsTool
  10. Matlab画图相关知识
  11. 画出清明上河图的代码_怎样用一串代码画出《清明上河图》?
  12. Excel查看多列重复项
  13. 美国密歇根州立大学计算机专业,密歇根州立大学计算机科学与工程系
  14. 组合数学 —— 母函数
  15. 密码主页jQuery插件的应用(注册时的验证)
  16. android ps2 模拟器,手机目前安卓系统PS2模拟器最好用的是一款叫做呆萌PS2模拟器的APP!这一款竟然是国产的!...
  17. c语言 验证用户名密码
  18. python 根据身份证号计算年龄和性别_excel如何根据身份证号计算男女出生日期、性别和年龄?分享了!...
  19. 如何支持RTSP播放H.265(HEVC)流
  20. 自动化 Google 以图搜图

热门文章

  1. JQuery 动画滑动显示和隐藏方式 slideDown\slideUp\slideToggle
  2. Flir Blackfly S 工业相机:配置多个摄像头进行同步拍摄
  3. WorldFirst个人能开户吗?亚马逊收款WorldFirst你了解吗?
  4. ios中使用SegmentedControl来切换视图
  5. Python学习日记(十一) 内置函数
  6. Ruby‘s Adventrue游戏制作笔记(十一)Unity角色攻击——发射子弹
  7. 你听我说-HandyControl源码编译
  8. 如何解决Vivado仿真时提示:另一个程序正在使用此文件 behavxsimsimulate.log
  9. Ansible 之 Playbook详解
  10. Ethereum在txpool中的Pending transaction监测方法