图书管理系统

  • 1. 描述
    • a> 角色
    • b> 操作
  • 2. 实现
    • a> Book 类
    • b> BookList 类
    • c> IOperation 操作接口
    • d> AddBook 类
    • e> DeleteBook 类
    • f> UpdateBook 类
    • g> FindBook 类
    • h> BorrowBook 类
    • i> ReturnBook 类
    • j> DisplayBook 类
    • k> Exit 类
    • l> User 类
    • m> Admin 类
    • n> NormalUser 类
    • o> Main 类
  • 3. 测试结果
    • a> 管理员
    • b> 普通用户

1. 描述

a> 角色

图书管理系统有两个角色对书进行操作, 分别是普通用户类和管理员类.

b> 操作

操作可划分为: 增添图书, 删除图书, 更新图书, 查找图书, 借阅图书, 归还图书, 退出系统

2. 实现

a> Book 类

package java0126;/*** @author FMM* @version 7.0* @date 2021/1/26 12:37*/
public class Book {private String name;private String author;private int price;private String type;// 表示没有被借private boolean isBorrowed = false;public Book(String name, int price, String author, String type) {this.name = name;this.price = price;this.author = author;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) {this.isBorrowed = borrowed;}public void bookImformation() {System.out.println(this.name + " " + this.price + " "+ this.author + " " + this.type + " " + this.isBorrowed);}
}

b> BookList 类

package java0126;import java.util.Scanner;/*** @author FMM* @version 7.0* @date 2021/1/26 12:37*/
public class BookList {private Book[] books = new Book[100] ;private int size;// 图书管理系统的关闭和开启条件private boolean isOpen = true;public BookList() {this.books[this.size++] = new Book("三国演义",100, "罗贯中","历史小说");}public void addBook(String name, int price, String author, String type) {this.books[size++] = new Book(name, price, author, type);}public Book getBook(int index) {if (!checkIndex(index)) {return null;}return this.books[index];}public void setSize(int size) {this.size = size;}public boolean isOpen() {return isOpen;}public void setOpen(boolean open) {this.isOpen = open;}public int getSize() {return this.size;}public void borrowBook(int index) {if (!checkIndex(index)) {return;}if (!this.books[index].isBorrowed()) {this.books[index].setBorrowed(true);}}public void displayBook() {if (this.books == null) {System.out.println("没有书籍");return;}System.out.println("  书名  " + " 价格 " + " 作者 " + "  类型  " + " 是否被借");for (int i = 0; i < this.size; i++) {this.books[i].bookImformation();}}public void deleteBook(int index) {if (!checkIndex(index)) {return;}for (int i = index; i < this.size - 1; i++) {this.books[i] = this.books[i + 1];}this.size--;}public void updateBook(int index) {if (!checkIndex(index)) {return;}Scanner scanner = 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("5. 书的状态");int choice = scanner.nextInt();switch (choice) {case 1:System.out.println("请输入修改后的书名: ");String name = scanner.next();this.books[index].setName(name);break;case 2:System.out.println("请输入修改后的作者: ");String author = scanner.next();this.books[index].setAuthor(author);break;case 3:System.out.println("请输入修改后的类型: ");String type = scanner.next();this.books[index].setType(type);break;case 4:System.out.println("请输入修改后的价格: ");int price = scanner.nextInt();this.books[index].setPrice(price);break;case 5:System.out.println("请输入修改后的书的状态(是否被借): ");boolean isBorrowed = scanner.hasNextBoolean();this.books[index].setBorrowed(isBorrowed);break;}}public boolean checkIndex(int index) {if (index < 0 && index >= this.size) {System.out.println("输入有误, 您输入的下标不存在!");return false;}return true;}
}

c> IOperation 操作接口

package java0126.Operation;import java0126.BookList;/*** @author FMM* @version 7.0* @date 2021/1/26 12:46*/
public interface IOperation {public void work(BookList bookList);
}

d> AddBook 类

package java0126.Operation;import java0126.BookList;import java.util.Scanner;/*** @author FMM* @version 7.0* @date 2021/1/26 12:42*/
public class AddBook implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("添加书籍");Scanner scanner = new Scanner(System.in);System.out.println("请输入书的名字:");String name = scanner.next();System.out.println("请输入书的价格:");int price = scanner.nextInt();System.out.println("请输入书的类型:");String type = scanner.next();System.out.println("请输入书的作者:");String author = scanner.next();bookList.addBook(name, price, author, type);}
}

e> DeleteBook 类

package java0126.Operation;import java0126.BookList;import java.util.Scanner;/*** @author FMM* @version 7.0* @date 2021/1/26 12:43*/
public class DeleteBook implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("删除书籍");Scanner scanner = new Scanner(System.in);System.out.println("请输入要删除的书的下标");int index = scanner.nextInt();bookList.deleteBook(index);}
}

f> UpdateBook 类

package java0126.Operation;import java0126.BookList;import java.util.Scanner;/*** @author FMM* @version 7.0* @date 2021/1/26 12:43*/
public class UpdateBook implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("更新书籍信息");Scanner scanner = new Scanner(System.in);System.out.println("请输入要更新的书的下标:");int index = scanner.nextInt();bookList.updateBook(index);}
}

g> FindBook 类

package java0126.Operation;import java0126.Book;
import java0126.BookList;import java.util.Scanner;/*** @author FMM* @version 7.0* @date 2021/1/26 12:43*/
public class FindBook implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("查找书籍");Scanner scanner = new Scanner(System.in);System.out.println("请输入要找的输的下标");int index = scanner.nextInt();Book book = bookList.getBook(index);book.bookImformation();}
}

h> BorrowBook 类

package java0126.Operation;import java0126.BookList;import java.util.Scanner;/*** @author FMM* @version 7.0* @date 2021/1/26 15:48*/
public class BorrowBook implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("借书");Scanner scanner = new Scanner(System.in);System.out.println("请输入要借的书的下标: ");int index = scanner.nextInt();// 该书存在 并且 书的状态是 false 未被借if (bookList.checkIndex(index) && !bookList.getBook(index).isBorrowed()) {// 借书, 将书的状态改为 true 表示已被借阅bookList.getBook(index).setBorrowed(true);}}
}

i> ReturnBook 类

package java0126.Operation;import java0126.BookList;import java.util.Scanner;/*** @author FMM* @version 7.0* @date 2021/1/26 21:45*/
public class ReturnBook implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("还书");Scanner scanner = new Scanner(System.in);System.out.println("请输入要借的书的下标: ");int index = scanner.nextInt();if (bookList.checkIndex(index) && bookList.getBook(index).isBorrowed()) {bookList.getBook(index).setBorrowed(false);}}
}

j> DisplayBook 类

package java0126.Operation;import java0126.BookList;/*** @author FMM* @version 7.0* @date 2021/1/26 14:12*/
public class DisplayBook implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("显示书籍");bookList.displayBook();}
}

k> Exit 类

package java0126.Operation;import java0126.BookList;/*** @author FMM* @version 7.0* @date 2021/1/26 14:19*/
public class Exit implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("退出");bookList.setOpen(false);}
}

l> User 类

package java0126;import java0126.Operation.IOperation;/*** @author FMM* @version 7.0* @date 2021/1/26 12:51*/
public abstract class User {protected String name;protected IOperation[] userOperation;public abstract int menu();public void doOperation(int choice, BookList bookList) {this.userOperation[choice - 1].work(bookList);}
}

m> Admin 类

package java0126;import java0126.Operation.*;import java.util.Scanner;/*** @author FMM* @version 7.0* @date 2021/1/26 12:51*/
public class Admin extends User {public Admin(String name) {this.name = name;userOperation = new IOperation[]{new FindBook(),new AddBook(),new DeleteBook(),new UpdateBook(),new DisplayBook(),new Exit()};}@Overridepublic int menu() {System.out.println("=====================");System.out.println("1.查找书籍");System.out.println("2.添加书籍");System.out.println("3.删除书籍");System.out.println("4.更新书籍信息");System.out.println("5.显示书籍信息");System.out.println("6.退出");System.out.println("=====================");Scanner scanner = new Scanner(System.in);System.out.print("请输入你的选择的操作: ");int choice = scanner.nextInt();return choice;}
}

n> NormalUser 类

package java0126;import java0126.Operation.*;import java.util.Scanner;/*** @author FMM* @version 7.0* @date 2021/1/26 12:51*/
public class NormalUser extends User{public NormalUser(String name) {this.name = name;userOperation = new IOperation[]{new FindBook(),new BorrowBook(),new ReturnBook(),new DisplayBook(),new Exit()};}@Overridepublic int menu() {System.out.println("=====================");System.out.println("1.查找书籍");System.out.println("2.借阅书籍");System.out.println("3.归还书籍");System.out.println("4.显示书籍信息");System.out.println("5.退出");System.out.println("=====================");Scanner scanner = new Scanner(System.in);System.out.print("请输入你的选择的操作: ");int choice = scanner.nextInt();return choice;}
}

o> Main 类

package java0126;import java.util.Scanner;/*** @author FMM* @version 7.0* @date 2021/1/26 12:49*/
public class Main {public static void main(String[] args) {//        1. 初始化书籍BookList bookList = new BookList();
//        2. 登录User user = login();
//        3. 执行相关操作while (bookList.isOpen() == true) {int choice = user.menu();user.doOperation(choice, bookList);}}public static User login() {System.out.println("0.管理员");System.out.println("1.用户");System.out.print("请输入您的选择:");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();System.out.print("请输入用户名:");String name = scanner.next();if (choice == 1) {return new NormalUser(name);}return new Admin(name);}
}

3. 测试结果

a> 管理员

管理角色测试结果



b> 普通用户

用户角色测试结果

java----图书管理系统 (用户和管理员)相关推荐

  1. 视频教程-手把手实现Java图书管理系统(附源码)-Java

    手把手实现Java图书管理系统(附源码) 南京大学软件工程硕士,曾就职于擎天科技.中软国际.华为等上市公司,擅长Java开发.Web前端.Python爬虫.大数据等领域技术. 全栈工程师,从事软件开发 ...

  2. [附源码]计算机毕业设计JAVA图书管理系统

    [附源码]计算机毕业设计JAVA图书管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Intell ...

  3. java图书管理系统源码

    java图书管理系统源码 系统主要功能 读者:登录注册,借阅还书,查询书籍,查看当前借阅信息以及历史借阅信息,查看.查询读者借阅榜以及借阅书籍借阅榜,问题反馈以及查询反馈结果等功能. 管理员:对图书. ...

  4. RFID课程设计-图书管理系统用户端设计

    RFID课程设计-图书管理系统用户端设计课程设计题目课程设计任务内容题目设计基本原理NFC开发概述标签调度系统如何将 NFC 标签映射到 MIME 类型和 URI如何将 NFC 标签分发到应用在 An ...

  5. Java图书管理系统练习程序(四)

    2019独角兽企业重金招聘Python工程师标准>>> Java图书管理系统练习程序(四) 本部分主要介绍List的基本操作与Java中泛型的使用. 一.Java中泛型的使用 泛型, ...

  6. java图书管理系统技术难度_Java图书管理系统练习程序(一)

    Java图书管理系统练习程序 第一部分 该部分主要实现命令行方式的界面与无数据库访问的练习,通过本练习.主要掌握Java的基础知识与面向对象程序设计思想.面向接口编程技术的知识与运用. 一.练习程序功 ...

  7. 我的第一个项目----Java图书管理系统

    项目参考自:http://www.java1234.com/a/yuanchuang/swing2/ 项目视频及代码下载地址:链接:http://pan.baidu.com/s/1pLpQw2J 密码 ...

  8. Java图书管理系统简化版期末考核作业

    1.设计思路 包分类:书籍book,操作operation[包含管理员和普通用户的操作集合],用户类User,主函数入口TestMain.java 分析: 书籍book包 Book类 创建的Book类 ...

  9. 基于JSP(java)图书管理系统的设计和实现(含源文件)

    获取项目源文件,联系Q:1225467431,可指导毕设,课设 摘 要 伴随着互联网的蓬勃发展,人们已经不再满足于信息的浏览和发布,而是渴望着能够充分享受网络所带来的更加多的便利.掌握计算机知识和应用 ...

最新文章

  1. 动态划分VLAN的方法中不包括(23)。【答案】C
  2. 多线程的几种实现方法
  3. 一般向量空间的基变换_从希尔伯特空间的角度看线性变换的一般思想和问题
  4. 【JavaSE02】Java基本语法-注意点
  5. For与Function进阶实战、Lazy的使用笔记总结
  6. Python学习week7-文件路径操作
  7. 如何基于asp.net core的Identity框架在mysql上作身份验证处理
  8. 使用 SAP WebIDE 将SAP UI5 应用部署到 SAP ABAP Netweaver 服务器上
  9. 局部遮荫光伏matlab,一种基于随机蛙跳全局搜索算法的局部阴影光伏阵列MPPT控制的制作方法...
  10. python图像处理大全
  11. oracle11g调整表空间和临时表空间大小
  12. java之xml编程
  13. Java疯狂讲义(第8章——泛型)(读书笔记)
  14. springboot中学成绩管理毕业设计源码100854
  15. 傅一平:业务流程的数字化到底是什么?
  16. HTML页面基本结构浅谈
  17. 加州ucla 计算机学校,UCLA的Electrical Engineering「加州大学洛杉矶分校电气工程系」...
  18. 到底什么是爬虫技术?简谈爬虫概念
  19. 写代码写到70岁,是一种什么样的体验?
  20. 学位认证上‘学位网’办理即可

热门文章

  1. 浏览器证书过期,你的时钟快了
  2. UE5 实现置顶游戏窗口的功能(Windows平台)
  3. 三极管放大电路的三种接法(转)
  4. 计算机基础 英语名称,计算机英语词汇:计算机基础知识
  5. TLS协议的兼容性测试
  6. Cisco思科命令速查
  7. Chrome浏览器中如何将开发者工具(F12)语言从英文设置成中文
  8. LeetCode 46. 全排列 Permutations
  9. C语言:scanf()语句错误读取
  10. ERP词汇中英文对照