package com.youjiuye.bms;/*** @author 丢了风筝的线* 2019-12-2* 图书管理系统的入口*/
import com.youjiuye.service.Tool;public class Bms {public static void main(String[] args) {Tool.Wellcome();Tool.systemOperation();}
}
package com.youjiuye.service;import com.youjiuye.bean.Book;/*** * @author 丢了风筝的线 2019-12-2 图书管理系统的服务类/功能模块*/
public class Service {// 根据书籍类型查看图书public Book[] getBooksByType(String type, Book[] books) {Book[] books1 = new Book[20];int index = 0;// 查找相关类型的书并且存在books1for (int i = 0; i < books.length; i++) {if (books[i] != null && books[i].getType() == type) {// 存储到books1中books1[index++] = books[i];}}return books1;}// 展示书籍public boolean showBooks(Book[] books) {boolean bo = false;for (int i = 0; i < books.length; i++) {if (books[i] != null) {System.out.println(books[i]);bo = true;}}return bo;}/*** 借书操作* * @param book*            所借的书籍* @param books*            图书馆里的图书 每借一本,图书馆里的图书减少一本,并且自己的借阅书库中添加一本*/public void borrowBook(Book book, Book[] lbooks, Book[] userBooks) {if (book != null) {for (int i = 0; i < lbooks.length; i++) {// 如果该容器中的这本书不是null 才进行判断if (lbooks[i] != null) {// 容器中书的idString id1 = lbooks[i].getId();// 要借的书的idString id2 = book.getId();// 基本数据类型的等值判断用==,引用类型的等值判断用方法if (id1.equals(id2)) {lbooks[i] = null;System.out.println("借阅成功!");break;}}}for (int i = 0; i < userBooks.length; i++) {if (userBooks[i] == null) {userBooks[i] = book;break;}}}}// 还书public void returnBook(Book book, Book[] Lbooks, Book[] userBooks) {if (book != null) {for (int i = 0; i < Lbooks.length; i++) {if (Lbooks[i] == null) {Lbooks[i] = book;break;}}for (int i = 0; i < userBooks.length; i++) {if (userBooks[i] != null && userBooks[i].getId().equals(book.getId())) {userBooks[i] = null;}}}}// 修改书籍类型public boolean changeBookType(Book book, String type, Book[] books) {boolean bo = false;if (book != null) {for (int i = 0; i < books.length; i++) {if (books[i] != null) {if (books[i].getId().equals(book.getId())) {// 修改藏书中的书籍类型books[i].setType(type);break;}}}}return bo;}// 添加书籍信息public void addBook(Book[] books, Book book) {if (book != null) {for (int i = 0; i < books.length; i++) {if (books[i] == null) {books[i] = book;System.out.println("添加成功!");break;}}}}/*** 跟据图书的编号生成图书对象* * @param id*            书的编号* @param books*            图书馆里的图书* @return 一个book对象*/public Book getBook(String id, Book[] books) {Book bo = null;for (int i = 0; i < books.length; i++) {if (books[i] != null && books[i].getId().equals(id)) {bo = books[i];}}return bo;}// 判断当前的书库是否为空public boolean judegIsEmpty(Book[] b) {boolean bo = false;for (int i = 0; i < b.length; i++) {if (b[i] != null) {bo = true;}}return bo;}}
package com.youjiuye.service;import java.util.Scanner;import com.youjiuye.bean.Book;
import com.youjiuye.bean.Library;
import com.youjiuye.bean.Users;/*** * @author 丢了风筝的线 2019-12-2 用来给用户进行一些操作提示,并判断用户的输入*/
public class Tool {// 欢迎页public static void Wellcome() {System.out.println("***********************************");System.out.println("\t欢迎来到何老板图书馆                        ");System.out.println("***********************************");}// 获取用户输入身份信息public static Users inputIdentityInfo(Users u) {Scanner sc = new Scanner(System.in);System.out.println("请输入您的姓名:");String name = sc.next();System.out.println("请选择您的身份(用户/管理员):");String identity = sc.next();System.out.println("请输入密码:");String password = sc.next();if (identityCheck(identity, password)) {System.out.println("登录成功!");u = new Users(name, identity);System.out.println("欢迎 " + identity + " " + name + " 来到系统");hint(identity);} else {System.out.println("您输入的信息有误,请重新输入!");u = inputIdentityInfo(u);}return u;}// 验证用户的身份public static boolean identityCheck(String name, String password) {boolean bo = false;if (name.equals("用户")) {if (password.equals("123")) {bo = true;}} else if (name.equals("管理员")) {if (password.equals("111")) {bo = true;}}return bo;}// 系统功能提示public static void hint(String identity) {System.out.println("请选择您想要的服务");if (identity.equals("用户")) {System.out.println("1、借书\t2、查看已借书籍\t3、还书");} else if (identity.equals("管理员")) {System.out.println("1、添加书籍\t2、修改书籍信息");}}// 确认用户选择的操作public static int judgeChoseOperation() {Scanner sc = new Scanner(System.in);int chose = sc.nextInt();return chose;}// 借阅书籍public static boolean borrow(Service s, Library l, Users u) {boolean bo = true;while (bo) {System.out.println("当前图书馆中藏书:");s.showBooks(l.getBooks());System.out.println("请输入要借阅的图书编号:");Scanner sc = new Scanner(System.in);String bookid = sc.next();Book boo = s.getBook(bookid, l.getBooks());s.borrowBook(boo, l.getBooks(), u.getBos());System.out.println("当前已成功借阅书籍:");s.showBooks(u.getBos());System.out.println("是否继续借阅书籍(y/n):");boolean b = false;bo = judgeOperationCon(b);}return bo;}// 系统操作public static void systemOperation() {Users u0 = null;Users u = inputIdentityInfo(u0);if (u.getIdentity().equals("用户")) {int chose = judgeChoseOperation();userOperationDetail(u, chose);} else {int chose = judgeChoseOperation();adminOperationDetail(u, chose);}}// 用户操作// 管理员操作public static void adminOperationDetail(Users u, int chose) {Service s = new Service();Library l = new Library("和老板图书馆");switch (chose) {case 1:// 添加书籍addBook(s, l);System.out.println("是否进行其他操作(y/n):");boolean boo = false;if (judgeOperationCon(boo)) {hint(u.getIdentity());adminOperationDetail(u, judgeChoseOperation());}break;case 2:// 修改书籍modifyBook(s, l);System.out.println("是否进行其他操作(y/n):");boolean booo = false;if (judgeOperationCon(booo)) {hint(u.getIdentity());adminOperationDetail(u, judgeChoseOperation());}break;default:System.out.println("进行正确 的输入!");System.out.println("1、添加书籍\t2、修改书籍信息");int rchose = judgeChoseOperation();adminOperationDetail(u, rchose);break;}}// 添加书籍信息public static void addBook(Service s, Library l) {boolean b = true;while (b) {System.out.println("当前图书馆中藏书:");s.showBooks(l.getBooks());System.out.println("请输入要还书的编号:");Scanner sc = new Scanner(System.in);String bookid = sc.next();System.out.println("请输入要还书的名字:");String bookName = sc.next();System.out.println("请输入要还书的作者:");String bookAuthor = sc.next();System.out.println("请输入要还书的类型:");String bookType = sc.next();Book book = new Book(bookid, bookName, bookType, bookAuthor);s.addBook(l.getBooks(), book);System.out.println("当前图书馆中的图书:");s.showBooks(l.getBooks());System.out.println("是否继续添加书籍(y/n):");boolean bo = false;b = judgeOperationCon(bo);}}// 修改书籍信息public static void modifyBook(Service s, Library l) {boolean b = true;while (b) {System.out.println("当前图书馆中藏书:");s.showBooks(l.getBooks());System.out.println("请输入要修改的图书的编号:");Scanner sc = new Scanner(System.in);String bookid = sc.next();Book book = s.getBook(bookid, l.getBooks());if (book != null) {s.addBook(l.getBooks(), book);System.out.println("当前图书馆中的图书:");s.showBooks(l.getBooks());System.out.println("是否继续添加书籍(y/n):");boolean bo = false;b = judgeOperationCon(bo);} else {System.out.println("对不起,当前书库中没有该图书");System.out.println("是否继续修改(y/n):");boolean bo = false;b = judgeOperationCon(bo);}}}// 用户操作public static void userOperationDetail(Users u, int chose) {Service s = new Service();Library l = new Library("和老板图书馆");switch (chose) {case 1:// 借阅书籍if (!borrow(s, l, u)) {System.out.println("是否进行其他操作(y/n):");boolean bo = false;if (judgeOperationCon(bo)) {hint(u.getIdentity());userOperationDetail(u, judgeChoseOperation());}}break;case 2:// 查阅已借阅的书籍if (!s.showBooks(u.getBos())) {System.out.println("您当前还没有已借阅的书籍,请选择其他操作");hint(u.getIdentity());userOperationDetail(u, judgeChoseOperation());} else {System.out.println("是否进行其他操作(y/n):");boolean bo = false;if (judgeOperationCon(bo)) {hint(u.getIdentity());userOperationDetail(u, judgeChoseOperation());}}break;case 3:// 还书returnBook(u, s, l);break;default:System.out.println("进行正确 的输入!");System.out.println("1、借书\t2、查看已借书籍\t3、还书");int rchose = judgeChoseOperation();userOperationDetail(u, rchose);break;}}// 还书private static void returnBook(Users u, Service s, Library l) {if (s.judegIsEmpty(u.getBos())) {System.out.println("已借阅的书籍:");s.showBooks(u.getBos());System.out.println("请输入要还书的编号:");Scanner sc = new Scanner(System.in);String bookid = sc.next();Book book = s.getBook(bookid, u.getBos());s.returnBook(book, l.getBooks(), u.getBos());System.out.println("还书成功");if (s.judegIsEmpty(u.getBos())) {System.out.println("是否继续还书(y/n):");boolean b = false;if (judgeOperationCon(b)) {returnBook(u, s, l);} else {System.out.println("是否进行其他操作(y/n):");boolean bo = false;if (judgeOperationCon(bo)) {hint(u.getIdentity());userOperationDetail(u, judgeChoseOperation());}}} else {System.out.println("您已没有已借阅的图书了,是否选择其他操作(y/n):");boolean bo = false;if (judgeOperationCon(bo)) {hint(u.getIdentity());userOperationDetail(u, judgeChoseOperation());}}} else {System.out.println("您目前还没有已借阅的书籍,请选择其他操作!");hint(u.getIdentity());userOperationDetail(u, judgeChoseOperation());}}// 判断是否继续操作public static boolean judgeOperationCon(boolean b) {String yn = "";Scanner sc = new Scanner(System.in);yn = sc.next();if (yn.equals("y")) {b = true;} else if (yn.equals("n")) {b = false;} else {System.out.println("请进行正确的输入!");judgeOperationCon(b);}return b;}}
package com.youjiuye.bean;/*** * @author 丢了风筝的线 2019-12-2 图书基本类*/
public class Book {private String id;private String bookName;private String author;private String type;public Book(String id) {this.id = id;}public Book(String id, String bookName, String type, String author) {this.id = id;this.bookName = bookName;this.type = type;this.author = author;}@Overridepublic String toString() {return "[ 图书编号 =" + getId() + "\t 书名=" + getBookName() + "\t 作者=" + getAuthor() + "\t 类型=" + getType() + " ]";}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getType() {return type;}public void setType(String type) {this.type = type;}}
package com.youjiuye.bean;public class Library {private String name;// 图书馆的藏书private static Book[] books = new Book[20];// 初始化图书馆static {books[0] = new Book("001", "java", "编程类", "和老板");books[1] = new Book("002", "html", "编程类", "江南");books[2] = new Book("003", "流浪地球", "科幻类", "爪哇");books[3] = new Book("004", "天龙八部", "武侠类", "金庸");books[4] = new Book("005", "一千零一夜", "儿童类", "安徒生");books[5] = new Book("006", "霸道总裁", "言情类", "萌妹");books[6] = new Book("007", "射雕英雄传", "武侠类", "金庸");}public Library(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Book[] getBooks() {return books;}}
package com.youjiuye.bean;public class Users {private String name;private String identity;private String password;// 存放借阅的图书private Book[] bos = new Book[10];public Users() {}public Users(String name, String identity) {this.name = name;this.identity = identity;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getIdentity() {return identity;}public void setIdentity(String identity) {this.identity = identity;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Book[] getBos() {return bos;}public void setBos(Book[] bos) {this.bos = bos;}@Overridepublic String toString() {return "Users [name=" + getName() + "identity=" + getIdentity() + ", password=" + getPassword() + "]";}}

图书管理系统完整代码相关推荐

  1. Ajax图书管理系统-完整代码与细节部分详细讲解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.知识储备 二.样式代码 三,·此案例需要了解的东西 3.1 简单接口文档的读法 3.2 jq中的事件委托 3.2. ...

  2. javaweb 图书管理系统完整代码_群晖 + Docker + Calibre-Web 搭建电子书管理系统

    自从有了群晖生活方便了很多,想看的书也越来越多, 给管理带来了挑战,想着有没有什么高大上一点的系统能帮我管理这些电子书籍,就像Ds Video一样,界面养眼的同时还能激发我看书的欲望. 我在百度用各种 ...

  3. javaweb 图书管理系统完整代码_基于Java web的图书管理系统

    源码编号:B-E00029点击查看(分类规则) 项目类型:Java EE项目(非开源) 项目名称:基于Java web的图书管理系统(library_system) 当前版本:V2.0.2版本 难度等 ...

  4. javaweb 图书管理系统完整代码_Java Web安全代码审计(一)

    点击上方"凌天实验室"可订阅哦! 信息安全的75%发生在web应用而非网络层. 本篇内容涉及Java Web安全-代码审计,非战斗人员速速离开. 1JavaWeb 安全基础 1. ...

  5. javaweb 图书管理系统完整代码_看一名Java开发人员以红队思维五分钟审计一套代码(续)...

    前言 上篇文章的发布引起了很多读者的浏览,有很多读者也催更希望读到续集,作者也收获到读者的鼓励,说明这条路线对大家有帮助,是有意义的.所以,今天作者将继续阐述在审计Java代码时的思路. 概述 上篇文 ...

  6. javaweb 图书管理系统完整代码_Thymeleaf+SpringBoot+Mybatis实现的家庭财务管理系统

    项目简介 项目来源于: https:// gitee.com/darlingzhangs h/graduation_project 本系统是基于Thymeleaf+SpringBoot+Mybatis ...

  7. Python分分钟实现图书管理系统(含代码)

    Python分分钟实现图书管理系统(含代码) 废话不多说,直接上代码. import sys# 打印书库中的所有书的函数 def book_detail(books):for book_name, b ...

  8. C++阶段02笔记【通讯录管理系统 完整代码(系统需求、创建项目、添加/显示/删除/查找/修改/清空)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 01.系统需求 02.创建项目 2.1 创建项目 2.2 添加文件 03.菜单功能 04.退出功能 05.添加联系人 5.1 设 ...

  9. 图书管理系统jsp代码_【程序源代码】使用Java开发的图书管理系统

    关键字:java 管理系统  正文 | 内容 01 - [概述] 使用Java开发的图书管理系统,读者可以注册登录,登录时会判断账号类型再分别跳到各自对应的页面,读者可以查找,借阅,还书,查看历史借阅 ...

  10. 图书管理系统python代码课程设计报告_python代码实现图书管理系统

    本文实例为大家分享了python代码实现图书管理系统的具体代码,供大家参考,具体内容如下 图书管理系统 功能简介 添加图书时,图书ID不能重复,图书名可重复 删除,查询,修改功能,输入图书名之后提供所 ...

最新文章

  1. 【转】“无法在Web服务器上启动调试。您不具备调试此应用程序的权限,此项目的URL位于Internet区域”错误提示的解决...
  2. 海思芯片硬件java加速_海思Hi3719C V100芯片简介
  3. pandans导出Excel并将数据保存到不同的Sheet表中
  4. 缓存机制 java_缓存机制:java中缓存的原理
  5. html移除click事件绑定,带你了解JQuery中绑定事件(bind())和移除事件(unbind())...
  6. java学习——equals()和==的比较
  7. textaligncenter仍然不居中_5个word你不知道的功能
  8. Vue使用Mint-ui的Popup, Picker组件报错问题
  9. python写入文件没反应_Python write 函数写文件失败
  10. h0004.双倍 (10 分)
  11. 视频编码中CBR和VBR的区别
  12. MySQL查询7天内过生日的用户 查询生日是今天的用户 解决跨年问题
  13. Matplotlib可视化练习
  14. 1072:鸡尾酒疗法(C C++)
  15. 转:.NET程序的序列号控制
  16. 怎么使用python语言,两个文件的对比
  17. 深入浅出学习透析Nginx服务器的基本原理和配置指南「初级实践篇 」
  18. VB的无解,变现为首,质量其次,就这样了?
  19. E题:变流器负载试验中的能量回馈装置(本科)--2018年TI杯大学生电子设计竞赛
  20. 【visum工作笔记】之四

热门文章

  1. 搭建Demo验证在一次Socket请求中有借助缓冲区处理数据
  2. CRT、Windows API、C/C++标准库、 ATL
  3. GDI GDI+ 的区别
  4. 如何配置RadASM
  5. 关于"舆情监测"关键词在百度搜索中的相关数分析
  6. matlab求解数学题,MATLABR2013a求解数学问题
  7. 数学建模应用系列之经济问题
  8. 七雄争霸mysql修改_七雄争霸单机版游戏
  9. Church's Coupon Performance Test Script
  10. linux 驱动学习