Java 小型图书馆管理系统


以下为小型图书馆管理系统模式图:

模式总体概述:
其中IBorrower接口确定Borrower类标准,Library类为单例设计模式,即图书馆只有一个。Book类为Borrower类的内部类,libraryBook类为Library类的内部类。最后利用PlatForm类进一步的封装。对于类方法中的核心,主要是数组的“增删查改”操作,本项目中三次运用了这些操作,分别在Borrower、Library、PlatForm类方法中。

IBorrower接口:
// package com.wu.demo;/**
*  @date  2020-10-30 10:08:48
*  @author  一夜星尘
*  @version  1.8.0*/// 图书借阅人标准
public interface IBorrower {public abstract void borrowBook(String bookName,String bookAuthor,float bookPrice,Library libary);public abstract void returnBook(String bookName,String bookAuthor,float bookPrice,Library libary);
}
Borrower类:
// package com.wu.demo;/**
*  @date  2020-10-30 10:11:00
*  @author  一夜星尘
*  @version  1.8.0*/
public class Borrower implements IBorrower{protected String borrowerName;protected long borrowerNumber;private int booksNumber;private static final int MAX_NUMBER_OF_BOOKS  = 4; //最大借书容量private Book[] books = new Book[MAX_NUMBER_OF_BOOKS];public Borrower(String borrowerName,long borrowerNumber) {this.borrowerName = borrowerName;this.borrowerNumber = borrowerNumber;this.booksNumber = 0;}private class Book{private String bookName;private String bookAuthor;private float bookPrice;public Book(String bookName,String bookAuthor,float bookPrice){Book.this.bookName = bookName;Book.this.bookAuthor  = bookAuthor;Book.this.bookPrice = bookPrice;}public String getName() {return Book.this.bookName;}public String getAuthor() {return Book.this.bookAuthor;}public float getPrice() {return Book.this.bookPrice;}}@Override/*** 借书操作*/public void borrowBook(String bookName,String bookAuthor,float bookPrice,Library library) {if(booksNumber>=MAX_NUMBER_OF_BOOKS) {System.out.println("超过最大借书容量");return;}books[booksNumber++] = new Book(bookName,bookAuthor,bookPrice);// 移除图书馆书籍,更新图书馆信息library.removeBook( bookName,bookAuthor, bookPrice);}@Override/*** 还书操作*/public void returnBook(String bookName,String bookAuthor,float bookPrice,Library library) {// 前提是有书的情况下if(booksNumber<=0) {return;}int index = -1;for(int i = 0 ; i < books.length ; i++) {if(books[i].bookName.equals(bookName) && books[i].bookAuthor.equals(bookAuthor) && books[i].bookPrice == bookPrice) {index = i;break;}}if(index < 0) {System.out.println("你并没有该书籍");return;}for(int i = 0; i < booksNumber-1 ; i++) {if(i>=index) {books[i] = books[i+1];}}booksNumber --;// 还入图书馆,更新图书馆信息library.addBook(bookName,bookAuthor,bookPrice);}/*** 借书人信息*/public void borrowerInfo() {int i = 0;System.out.println("------------------------------借阅人信息------------------------------");System.out.println("借阅人姓名:"+this.borrowerName);System.out.println("借阅人学号:"+this.borrowerNumber);for(;i < booksNumber ; i++) {System.out.println("第"+(i+1)+"本书: ");System.out.println("书籍名称:"+books[i].getName());System.out.println("书籍作者:"+books[i].getAuthor());System.out.println("书籍价格:"+books[i].getPrice());}System.out.println("当前借阅书本数为: "+booksNumber+"  剩余容量为: "+(MAX_NUMBER_OF_BOOKS-i));System.out.println("------------------------------------------------------------------------");}}
Library类:
// package com.wu.demo;
/**
*  @date  2020-10-30 10:32:42
*  @author  一夜星尘
*  @version  1.8.0*/
public class Library {private static final Library library = new Library();private static final int MAX_NUMBER_OF_BOOKS = 120; // 图书馆最大书容量private libraryBook[] books = new libraryBook[MAX_NUMBER_OF_BOOKS];protected static int booksNumber = 0;// 无参构造函数私有化private Library() {};private class libraryBook{private String bookName;private String bookAuthor;private float bookPrice;public libraryBook(String bookName,String bookAuthor,float bookPrice){libraryBook.this.bookName = bookName;libraryBook.this.bookAuthor = bookAuthor;libraryBook.this.bookPrice = bookPrice;}public void setName(String bookName) {libraryBook.this.bookName = bookName;}public void setAuthor(String bookAuthor) {libraryBook.this.bookAuthor = bookAuthor;}public void setPrice(float bookPrice) {libraryBook.this.bookPrice = bookPrice;}}// 唯一返回的单例static Library getLibrary() {return library;}/*** 增添书籍* @param bookName* @param bookAuthor* @param bookPrice*/public void addBook(String bookName,String bookAuthor,float bookPrice) {if(booksNumber>=MAX_NUMBER_OF_BOOKS) {System.out.println("超过图书馆书籍最大容量");return;}books[booksNumber++] = new libraryBook(bookName,bookAuthor,bookPrice);}/*** 删除书籍* @param bookName* @param bookAuthor* @param bookPrice*/public void removeBook(String bookName,String bookAuthor,float bookPrice) {int index = -1;for(int i = 0 ; i < booksNumber ; i++) {if(books[i].bookName.equals(bookName) && books[i].bookAuthor.equals(bookAuthor) &&books[i].bookPrice == bookPrice) {index = i;break;}}if(index < 0) {System.out.println("该图书未在库");return;}for(int i = 0;i < booksNumber - 1;i++) {if(index <= i) {books[i] = books[i+1];}}booksNumber --;}/*** 查找书籍* @param bookName* @param bookAuthor* @param bookPrice*/public void checkBook(String bookName,String bookAuthor,float bookPrice) {System.out.println("");for(int i = 0 ; i<booksNumber ; i++) {if(books[i].bookName.equals(bookName) && books[i].bookAuthor.equals(bookAuthor) &&books[i].bookPrice == bookPrice) {System.out.println("状态:书籍在库");return;}}System.out.println("状态:书籍未在库");System.out.println("");}/*** 更改书籍信息* @param bookName* @param bookAuthor* @param bookPrice*/public void changeBook(String bookName, String bookAuthor,float bookPrice,String newBookName,String newBookAuthor,float newBookPrice) {for(int i = 0 ;i<booksNumber;i++) {if(books[i].bookName.equals(bookName) && books[i].bookAuthor.equals(bookAuthor) &&books[i].bookPrice == bookPrice) {books[i].setName(newBookName);books[i].setAuthor(newBookAuthor);books[i].setPrice(newBookPrice);break;}}System.out.println("更改书籍完成");}/*** 查看当前图书馆书籍信息*/public void booksInfo() {System.out.println("-----------------------------图书馆书籍信息-----------------------------");for(int i = 0 ; i<booksNumber;i++) {System.out.println("在库书籍 "+(i+1)+" : ");System.out.println("书籍名称:"+books[i].bookName);System.out.println("书籍作者:"+books[i].bookAuthor);System.out.println("书籍价格:"+books[i].bookPrice);}System.out.println("在库书籍总数:"+booksNumber+"  剩余可借阅书籍总数:"+(MAX_NUMBER_OF_BOOKS-booksNumber));System.out.println("--------------------------------------------------------------------------");}
}
PlatForm类:
// package com.wu.demo;
import java.util.Scanner;/**
*  @date  2020-10-30 14:06:34
*  @author  一夜星尘
*  @version  1.8.0*/
// 进一步封装
public class PlatForm {private static final int MAX_NUMBER_OF_BORROWERS = 30; // 平台最多可注册30名借阅者private Borrower[] borrowers = new Borrower[MAX_NUMBER_OF_BORROWERS];private static int numberBorrowers = 0; private Library library = Library.getLibrary();public PlatForm() {Scanner input = new Scanner(System.in);// 初始化Borrower成员System.out.println("-----------------------------初始化借阅人-----------------------------");System.out.println("按任意键继续(按Q或q退出):");String exit = input.nextLine();System.out.println("以下输入可借阅人员信息");while(!exit.equalsIgnoreCase("q")) {System.out.print("姓名 学号:");String tempName = input.next();long tempNumber = input.nextLong();this.borrowers[numberBorrowers++] = new Borrower(tempName,tempNumber);// 回车输入舍弃input.nextLine();System.out.println("按任意键继续(按Q或q退出):");exit = input.nextLine();if(numberBorrowers >= MAX_NUMBER_OF_BORROWERS){System.out.println("已达到最大注册量");break;}}// 初始化图书馆信息System.out.println("---------------------------初始化图书馆图书信息------------------------");System.out.println("按任意键继续(按Q或q退出):");exit = input.nextLine();System.out.println("请输入原始书籍信息:");while(!exit.equalsIgnoreCase("q")) {System.out.print("书籍名称 作者 价格:");String tempName = input.next();String tempAuthor = input.next();float tempPrice = input.nextFloat();library.addBook(tempName,tempAuthor,tempPrice);// 回车输入舍弃input.nextLine();System.out.println("按任意键继续(按Q或q退出):");exit = input.nextLine();}System.out.println("-----------------------------------------------------------------------");input.close();} /*** 平台管理:增添用户* @param borrowerName* @param borrowerNumber*/public void addClient(String borrowerName,long borrowerNumber) {if(numberBorrowers >= MAX_NUMBER_OF_BORROWERS) {System.out.println("用户容量已达最大值");return;}this.borrowers[numberBorrowers++] = new Borrower(borrowerName,borrowerNumber);System.out.println("增添用户操作成功");}/*** 平台管理:移除用户* @param borrowerName* @param borrowerNumber*/public void removeClient(String borrowerName,long borrowerNumber) {int index = -1;for(int i = 0 ; i<numberBorrowers; i++) {if(borrowers[i].borrowerName.equals(borrowerName) && borrowers[i].borrowerNumber == borrowerNumber) {index = i;break;}}if(index<0) {System.out.println("未找到用户");return;}for(int i = 0 ; i < numberBorrowers-1;i++) {if(index <= i) {borrowers[i] = borrowers[i+1];}}numberBorrowers--;System.out.println("移除用户成功");}/*** 相应借阅人的信息* @param borrowerName* @param borrowerNumber*/public void platformBorrowerInfo(String borrowerName,long borrowerNumber) {for(int i = 0 ; i<numberBorrowers;i++) {if(borrowers[i].borrowerName.equals(borrowerName) && borrowers[i].borrowerNumber == borrowerNumber) {borrowers[i].borrowerInfo();return;}}System.out.println("该用户不存在");}/*** 相应借阅人借阅书籍* @param borrowerName* @param borrowerNumber* @param bookName* @param bookAuthor* @param bookPrice*/public void platformBorrowBook(String borrowerName,long borrowerNumber,String bookName,String bookAuthor,float bookPrice) {for(int i = 0 ; i<borrowers.length;i++) {if(borrowers[i].borrowerName.equals(borrowerName) && borrowers[i].borrowerNumber == borrowerNumber) {borrowers[i].borrowBook(bookName,bookAuthor, bookPrice, this.library);break;}}}/*** 相应借阅人归还书籍* @param borrowerName* @param borrowerNumber* @param bookName* @param bookAuthor* @param bookPrice*/public void platformRrturnBook(String borrowerName,long borrowerNumber,String bookName,String bookAuthor,float bookPrice){for(int i = 0 ; i<borrowers.length;i++) {if(borrowers[i].borrowerName.equals(borrowerName) && borrowers[i].borrowerNumber == borrowerNumber) {borrowers[i].returnBook(bookName,bookAuthor, bookPrice, library);break;}}} /*** 输出图书馆信息*/public void platformLibraryInfo() {library.booksInfo();} /*** 对图书馆增添书籍* @param bookName* @param bookAuthor* @param bookPrice*/public void platformLibraryAddBook(String bookName,String  bookAuthor,float bookPrice) {library.addBook(bookName,bookAuthor,bookPrice);}/*** 对图书馆移除书籍* @param bookName* @param bookAuthor* @param bookPrice*/public void platformLibraryRemoveBook(String bookName,String bookAuthor,float bookPrice) {library.removeBook(bookName,bookAuthor,bookPrice);}/*** 对图书馆检索书籍* @param bookName* @param bookAuthor* @param bookPrice*/public void platformLibraryCheckBook(String bookName,String bookAuthor,float bookPrice) {library.checkBook(bookName, bookAuthor, bookPrice);}/*** 对图书馆书籍更改* @param bookName* @param bookAuthor* @param bookPrice* @param newBookName* @param newBookAuthor* @param newBookPrice*/public void platformLibraryChangeBook(String bookName,String bookAuthor,float bookPrice,String newBookName,String newBookAuthor,float newBookPrice) {library.changeBook(bookName, bookAuthor, bookPrice,newBookName,newBookAuthor,newBookPrice);}
}
testDemo(测试):
// package com.wu.demo;
/**
*  @date  2020-10-30 10:51:21
*  @author  一夜星尘
*  @version  1.8.0*/
public class testDemo {public static void main(String[] args) {PlatForm platform = new PlatForm();// 以下为平台管理权限的测试platform.addClient("张三", 100000L);platform.addClient("李四", 100001L);platform.addClient("王五", 100002L);platform.addClient("赵六", 100003L);platform.platformBorrowerInfo("张三",100000L);platform.platformBorrowerInfo("李四",100000L); // 此时应该为不存在platform.platformBorrowerInfo("王五",100002L); platform.platformBorrowerInfo("赵六",100003L);platform.removeClient("王五", 100002L);platform.platformBorrowerInfo("王五",100002L); // 此时王五不是用户//以下为图书馆和借阅人的测试platform.platformLibraryAddBook("数据结构","匿名1",100.0F);platform.platformLibraryAddBook("网络基础","匿名2",90.0F);platform.platformLibraryAddBook("算法","匿名3",110.0F);platform.platformLibraryInfo(); // 当前图书馆里只有3本书platform.platformLibraryAddBook("java基础","匿名4",105.0F);platform.platformLibraryAddBook("深度学习","匿名5",129.0F);platform.platformLibraryAddBook("Linux基础","匿名6",104.0F);platform.platformLibraryAddBook("matlab基础","匿名7",123.0F);platform.platformLibraryAddBook("visual C++基础","匿名8",95.0F);platform.platformLibraryAddBook("HTML CSS JS","匿名9",99.0F);platform.platformLibraryAddBook("C++基础","匿名10",119.0F);platform.platformLibraryAddBook("python基础","匿名11",108.0F);platform.platformLibraryAddBook("数据库基础","匿名12",120.0F);platform.platformLibraryAddBook("操作系统基础","匿名13",106.0F);platform.platformLibraryInfo(); // 当前图书馆里有13本书platform.platformLibraryRemoveBook("visual C++基础","匿名8",95.0F);platform.platformLibraryInfo(); // 当前图书馆里有12本书platform.platformLibraryRemoveBook("Linux基础" ,"匿名6", 104.0F); // 检索图书 Linux基础 状态platform.platformLibraryChangeBook("python基础", "匿名11", 108.0F,"keras基础","匿名11",110.0F); // 变更图书馆书籍名称 python基础 为 keras基础platform.platformBorrowBook("张三", 100000L, "java基础", "匿名4", 105.0F); // 用户 张三 借了书籍 java基础platform.platformBorrowBook("张三", 100000L, "算法", "匿名3", 110.0F); // 用户 张三 又借了书籍 算法platform.platformBorrowBook("张三", 100000L, "C++基础", "匿名10", 119.0F); // 用户 张三 又借了书籍 C++基础platform.platformBorrowBook("张三", 100000L, "深度学习", "匿名5", 129.0F); // 用户 张三 又借了书籍 深度学习platform.platformBorrowBook("赵六", 100003L, "网络基础", "匿名2", 84.0F); // 用户 赵六 借了书籍 网络基础platform.platformBorrowBook("李四", 100001L, "HTML CSS JS", "匿名9", 119.0F); // 用户 李四 借了书籍 HTML CSS JSplatform.platformBorrowerInfo("张三", 100000L); // 查看用户 张三 借阅情况 当前用户 张三 有四本书 platform.platformBorrowerInfo("赵六", 100003L); // 查看用户 赵六 借阅情况 当前用户 赵六 有一本书platform.platformBorrowerInfo("李四", 100001L); // 查看用户 李四 借阅情况 当前用户 李四 有一本书platform.platformRrturnBook("张三", 100000L, "算法", "匿名3", 110.0F); // 用户 张三 还了书籍 算法platform.platformRrturnBook("张三", 100000L, "深度学习", "匿名5", 129.0F); // 用户 张三 又还了书籍 深度学习 platform.platformBorrowerInfo("张三", 100000L); // 查看用户 张三 借阅情况 当前用户 张三 只有两本书platform.platformLibraryRemoveBook("java基础" ,"匿名4", 105.0F); // 检索图书 java基础 状态 当前状态应该为 未在库}
}

测试结果显示:


Java 小型图书馆管理系统相关推荐

  1. java管理系统中期报告_基于Java的图书馆管理系统的设计-中期报告

    基于Java的图书馆管理系统的设计-中期报告 毕业设计(论文)中期报告 毕业设计(论文)题目:基于Java的图书馆管理系统的设计 专业:计算机 学生信息: 指导教师信息: 报告提交日期:2012年5月 ...

  2. jsp/java mysql图书馆管理系统毕业设计网站成品论文

    基于 jsp java mysql图书馆管理系统毕业设计网站成品,应用软件制作,系统包括会员模块.图书模块和借阅模块. 开发工具:Myeclips 数据库:Mysql 主要技术:Jsp+Servlet ...

  3. 计算机毕业设计Java小型酒店管理系统(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java小型酒店管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java小型酒店管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  4. 计算机毕业设计Java学校图书馆管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java学校图书馆管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java学校图书馆管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S ...

  5. Java 实现图书馆管理系统

    目录 一:创建对象 1.学生类对象Student : 2.图书类对象book : 3.管理员类对象OP: 二.创建主要交互界面MainMenu,并实现主界面功能 1.创建交互界面: 2.实现主界面功能 ...

  6. 基于Java的图书馆管理系统

    技术:Java.JSP等 摘要: 随着互联网技术的发展,我们所生存的整个社会的信息化进程逐步加快,互联网也成为了我们生活中所不可或缺的一个重要组成部分.原来系统的时效性.数据的正确性.操作的方便性上都 ...

  7. 【Java】图书馆管理系统

    下载链接 下载地址 文章目录 下载链接 Modeling the Library System What should we do Specification of the Library Syste ...

  8. Java web 课程设计——图书馆管理系统(SSM)

    题目要求 本网上图书馆系统应实现图书网上检索.预约和续借功能: 系统管理:定义读者类别并设置参数,添加.修改和删除读者信息. 图书续借和预约:实现图书的续借.预约等功能. 图书检索:按书名或作者等信息 ...

  9. java图书馆_java编写图书馆管理系统

    <java编写图书馆管理系统>由会员分享,可在线阅读,更多相关<java编写图书馆管理系统(88页珍藏版)>请在人人文库网上搜索. 1.面向对象课程设计报告课程设计题目:图书信 ...

  10. java毕业设计阿博图书馆管理系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计阿博图书馆管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计阿博图书馆管理系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B ...

最新文章

  1. 乐视视频 App 图标改为“欠 122 亿”,网友:我在别家分红包,却在你家随份子!...
  2. python爬虫赚钱的经历-聊一聊,这些年我用Python爬虫挣钱的那些事
  3. Java JDBC数据库 之 DBUtil 封装类
  4. android自定义url协议,Android自定义URL方案…?
  5. 类似系统的UIActivityViewController显示方式的开源代码:HYActivityView
  6. 三通道的黑白图(不同于单通道的普通的黑白图片)
  7. Ubuntu 12.04 用户安装Chromium
  8. Amazon亲儿子MXNet与其他框架有哪些不同?| 赠书
  9. 一个老测试给想入行测试行业新人的二十条建议
  10. 【重点】剑指offer——面试题27:二叉搜索树与双向链表
  11. PAT (Basic Level) Practice 1006 换个格式输出整数
  12. redis系列--深入哨兵集群
  13. 吴裕雄--天生自然 JAVASCRIPT开发学习:HTML DOM 集合(Collection)
  14. 《PIC微控制器项目设计:C语言》一导读
  15. APP开发流程,移动应用开发流程
  16. html毕业答辩ppt模板范文,答辩ppt模板|答辩总结范文
  17. 老版TP-Link路由器设置固定时间上网
  18. centos7/8配置secondary ip
  19. 3d模型计算机教室,大学教室3d模型
  20. Learn Git Branching 答案汇总

热门文章

  1. WKWebView OC与JS交互
  2. 测试基础-测试用例编写
  3. Nginx 企业级优化
  4. 【京东】会员激励体系,会员体系结构分析
  5. win10系统计算机如何加密,win10系统自带加密使用的设置方法
  6. Java Exception的日志输出
  7. linux如何把文件导出到ftp,Linux如何利用ssh传送文件至FTP空间
  8. 83 项开源视觉 SLAM 方案够你用了吗?
  9. HTML图片与上面的div有空隙,div与div之间有空隙的解决方法
  10. 误删 Win10 应用商店应该如何恢复?