目录

一、该图书管理系统涉及Java的知识点

二、该图书管理系统包含的功能


一、该图书管理系统涉及Java的知识点,如下:

  1. 数组的增删查
  2. 抽象类
  3. 接口
  4. 面向对象的封装、继承和多态

二、该图书管理系统包含的功能,如下:

  1. 图书管理系统的使用人群分为两种:①管理人员,②普通用户
  • 具体实现:抽象类的继承

User类(父类):

public abstract class User {protected String name;protected IOperation[] iOperations;public User(String name){this.name=name;}public abstract int  menu();public void doWork(int choice, BooklList booklList){iOperations[choice].work(booklList);}
}

AdminUser类(管理员)

public class AdminUser extends User {public AdminUser(String name){super(name);this.iOperations=new IOperation[] {new ExitOperation(),new FindOperation(),new AddOperation(),new DelOperation(),new DisplayOperation()};}public int  menu(){System.out.println("========管理员菜单========");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;}
}

 NormalUser类(普通用户类)

public class NormalUser extends User {public NormalUser(String name){super(name);this.iOperations=new IOperation[]{new ExitOperation(),new FindOperation(),new BorrowOperation(),new ReturnOperation()};}public int menu(){System.out.println("========普通用户菜单========");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;}
}

注:需要把上述的三各类放在同一个包里

 2. 设计一个Book类存放书的属性,设计一个BookList类存放书的位置

具体实现:在Book类中给所有的私有属性提供了公共的接口,在BookList类中创建了一个名为books的数组并存放三本图书另外设计了一个BookList的成员名为UsedSize来表示在books数组中存放书的数量。

Book类

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 "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +((isBorrowed==true)?" 已经被借出 ":" 未被借出 ")+'}';}
}

BookList类

public class BooklList {private Book[] books=new Book[1024];private int usedSize;public BooklList(){books[0]=new Book("数据库应用原理","张三",45,"计算机");books[1]=new Book("红楼梦","曹雪芹",56,"小说");books[2]=new Book("唐诗三百首","孙洙",35,"古诗词");this.usedSize=3;}public int getUsedSize() {return usedSize;}public void setUsedSize(int usedSize) {this.usedSize = usedSize;}/*** 获得pos位置的一本书* @param pos* @return*/public Book getPos(int pos){if(pos>=0&&pos<books.length){return this.books[pos];}elseSystem.out.println("pos位置不合法");return this.books[pos];}/*** 添加pos下标的一本书* @param pos* @param book*/public void setBook(int pos,Book book){this.books[pos]=book;}
}

注: 需要把上述两个类放在当一个包里

3.  分别设计了七个类,每一个类实现一种功能;设计了一个接口把七个类串接起来

具体实现:AddOperation(增加操作)、BorrowOperation(借阅操作)、DelOperation(删除操作)、DisplayOperation(显示操作)、ExitOperation(退出系统)、FindOperation(查找操作)、ReturnOperation(归还操作)和接口IOperation

AddOperation(增加操作)

public class AddOperation implements IOperation{public void work(BooklList booklList){System.out.println("新增图书!");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();scanner.nextLine();Book book=new Book(name,author,price,type);int size=booklList.getUsedSize();booklList.setBook(size,book);booklList.setUsedSize(size+1);System.out.println("新增图书成功!");}
}

BorrowOperation(借阅操作)

public class BorrowOperation implements IOperation {public void work(BooklList booklList) {System.out.println("借阅图书!");System.out.println("请输入你想借阅的图书名字");String name = scanner.nextLine();int size = booklList.getUsedSize();for (int i = 0; i < size; i++) {Book book = booklList.getPos(i);if (name.equals(book.getName())) {book.setBorrowed(true);System.out.println("借阅成功!!!");System.out.println("借阅图书信息如下:" + book);return;}}System.out.println("没有找到你要借阅的图书!!!");}
}

DelOperation(删除操作)

public class DelOperation implements IOperation {public void work(BooklList booklList) {System.out.println("删除图书!");System.out.println("请输入你要删除的图书的名字");String name = scanner.nextLine();int currentSize = booklList.getUsedSize();int index = 0;int i = 0;for (; i < currentSize; i++) {Book book=booklList.getPos(i);if (book.getName().equals(name)){index=i;break;}}if (i>=currentSize){System.out.println("没有找打你要删除的图书!!!");return;}for (int j = index; j <currentSize-1 ; j++) {Book book=booklList.getPos(j+1);booklList.setBook(j,book);}booklList.setBook(currentSize-1,null);booklList.setUsedSize(currentSize-1);System.out.println("删除成功!!!");}}

DisplayOperation(显示操作)


public class DisplayOperation implements IOperation{public void work(BooklList booklList){System.out.println("打印图书!");int size=booklList.getUsedSize();for (int i = 0; i <size ; i++) {Book  book=booklList.getPos(i);System.out.println(book);}}
}

ExitOperation(退出系统)

public class ExitOperation implements IOperation{public void work(BooklList booklList){System.out.println("退出系统!");System.exit(0);}
}

FindOperation(查找操作)

public class FindOperation implements IOperation{public void work(BooklList booklList){System.out.println("查找图书!");System.out.println("请输入你要查找的图书名字");String  name=scanner.nextLine();int size=booklList.getUsedSize();for (int i = 0; i <size ; i++) {Book book=booklList.getPos(i);if (name.equals(book.getName())) {System.out.println("找到了这本书,信息如下:");System.out.println(book);return;}}System.out.println("没有找到你需要借阅的图书!!!");}
}

ReturnOperation(归还操作)

public class ReturnOperation implements IOperation {public void work(BooklList booklList) {System.out.println("归还图书!");System.out.println("请输入你要图书的名字");String name = scanner.nextLine();int size = booklList.getUsedSize();for (int i = 0; i < size; i++) {Book book = booklList.getPos(i);if (name.equals(book.getName())) {book.setBorrowed(false);System.out.println("归还成功!!!");System.out.println("归还图书信息如下:"+book);return;}}System.out.println("没有你要归还的图书!!!");}
}

接口IOperation

public interface IOperation {void work(BooklList booklList);Scanner scanner=new Scanner(System.in);
}

注:上述的七个类和一个接口需要放在同一个包里

                                               

3. 主类Main,包含一个静态方法Login

Main类

public class Main {public static User login(){System.out.println("请输入你的姓名");Scanner scanner=new Scanner(System.in);String name=scanner.nextLine();System.out.println("请输入你的身份:1——》管理员,2——》普通用户");int choice=scanner.nextInt();if(choice==1){return new AdminUser(name);}else {return new NormalUser(name);}}public static void main(String[] args) {BooklList booklList=new BooklList();User user=login();//向上转型while (true) {int choice = user.menu();//动态绑定,根据choice选择合适的操作user.doWork(choice, booklList);}}
}

4.结果图演示 

管理员功能演示

 普通用户功能演示

图书管理系统(简易版)相关推荐

  1. 【JavaEE】图书管理系统-简易版

    文章目录 book包 Book类 BookList类 operation包 AddOperation 类 BorrowOperation 类 DelOperation类 DisplayOperatio ...

  2. java图书管理系统目的_java_图书管理系统java版,本文的目的就是通过图书管理 - phpStudy...

    图书管理系统java版 本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出 ...

  3. c语言实现学生二科成绩的单链表,c++链表实现学生成绩管理系统(简易版)

    #include using namespace std; typedef struct student{ int id;//学号 string sex; string name; int cpp;/ ...

  4. python实现图书管理系统(简单版)

    简单实现图书管理系统 类和面向对象编程 """ 小钟图书管理系统 1. 查询 2. 增加 3. 借阅 4. 归还 5. 退出 """ cla ...

  5. java出版社系统_图书管理系统java版

    本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段. ...

  6. 自制小型图书管理系统 - 简单版(锻炼java基础语法的使用)

    文章目录 前言 1. 小型图书管理系统框架思想 2. 实现框架 2.1 构建书架:存放书籍 2.2 使用者的构建 - user 2.3 主函数构建 - Main 2.4 操作的构建 - operate ...

  7. 手撸图书管理系统!(java版)

    废话少说,上代码!!! 先写一个图书类.(我一般称这个类有手就行) package homework.test5;public class Book {private String booklist; ...

  8. 基于java SSM图书管理系统简单版设计和实现

    本项目演示链接地址 > 主要技术:后台采用技术: SSM框架(SpringMVC + Spring + Mybatis) 前台采用技术: div + css 功能比较简单.适合学习使用 主要功能 ...

  9. 使用VUE 实现图书管理系统 | 简版

    跟着黑马18年的教程敲的. 最终效果 最终效果:可以进行图书增加.删除.修改. 开发思路 Part1: 图书列表 实现静态列表效果 基于数据实现模板效果 处理每行的操作按钮 Part2: 添加图书 实 ...

最新文章

  1. Swift -布局框架SnapKit使用
  2. ASP.NET 3.5之屠龙刀
  3. mac怎么合并两个容器_PDF怎样合并?在Mac上合并PDF文件的最佳方法
  4. 谁能提供修改生产订单的Bapi?
  5. Nginx网站用户认证
  6. android studio入门
  7. 头像裁剪框html css,CSS3 clip-path实现的用户头像裁剪效果
  8. C++ 事件驱动型银行排队模拟
  9. Excel快捷键总结
  10. ESP8266开发之旅 网络篇④ Station——ESP8266WiFiSTA库的使用
  11. win7无法信息服务器安装程序,主编为你win7系统纯净版安装程序提示“microsoft注册服务器已停止工作”的解决方法...
  12. 信号处理趣学D4——利用谐波叠加对周期方波进行逼近
  13. Netbackup5230备份一体机重删率异常故障分析日志收集
  14. BH1621FVC-TR光环境传感器
  15. nginx 实现多端口转发
  16. 古琴怎么学,古琴入门,初学者应该这么练(二)
  17. 苹果屏幕尺寸_搭载 mini LED 屏幕的 iPad Pro 要来了?!
  18. python字符宽度_使用vars或\uyu dict的Python固定宽度字符串格式__
  19. [源码]Meepo路由
  20. arduino 驱动_Arduino驱动的My Little Pony捐款箱

热门文章

  1. 音乐代码 (DNF天空之城、欢乐颂)。
  2. 天冕数据开发平台通过信通院“大数据产品能力评测”
  3. 医学影像分割论文合集
  4. 21 Excel动态图表实现原理
  5. 含根式的定积分计算_定积分计算详细步骤
  6. 解决ffmpeg合成的视频格式浏览器无法播放问题
  7. 基于解决sci和ei等国外论文检索难等问题的辅助软件分析
  8. 【行业云说直播间】-智慧能源 低碳未来正式上线
  9. 计算机安全监察word,全国计算机统考押题计算机安全
  10. Oracle 12c的安装