JAVA图书管理系统详细代码

  • 图书管理系统
    • 主函数
    • 图书相关操作(operation包)
      • 操作接口
      • 增加图书
      • 借阅图书
      • 删除书籍
      • 显示书籍
      • 退出系统
      • 查找图书
      • 归还书籍
    • 图书及“书架”(book包)
      • 图书
      • “书架”
    • 使用人群(user包)
      • user父类
      • 普通使用人员
      • 管理员

图书管理系统

代码主要分为四个大部分,主函数,图书相关函数,操作,以及使用者。分为三个包:book、operation、user和一个单独的主函数。

主函数

import book.BookList;
import user.AdiminUser;
import user.NormalUser;
import user.User;import java.util.Scanner;public class Main {public static User login() {System.out.println("请输入姓名:");Scanner scan=new Scanner(System.in);String name=scan.nextLine();System.out.println("请输入你的身份(1->管理员  0->用户):");int id=scan.nextInt();if(id==1){return new AdiminUser(name);}else{return new NormalUser(name);}}public static void main(String[] args) {BookList bookList =new BookList();while(true) {User user=login();int choice = user.menu();user.doOperation(choice, bookList);//对图书进行相关的操作}}
}

图书相关操作(operation包)

操作接口

对于每一个操作都有相近的一部分,刚好可以用接口,在User(使用者)中利用接口类型的数组来进行相关的操作。在下面的User中会具体说。

package operation;import book.Book;
import book.BookList;public interface IOpreation {public void work(BookList booklist);
}

增加图书

增加图书只需要在数组的最后添加即可,于是要利用booklist.getUsedsize();得到图书数组的使用长度,决定要增加的图书应该所在的位置。

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class AddOperation implements IOpreation{@Overridepublic void work(BookList booklist) {System.out.println("新增图书");int size=booklist.getUsedsize();Scanner scan=new Scanner(System.in);System.out.println("请输入图书名称:");String name=scan.nextLine();System.out.println("请输入图书作者:");String anuthor=scan.nextLine();System.out.println("请输入图书价格:");int price=scan.nextInt();System.out.println("请输入图书种类:");String type=scan.nextLine();Book book=new Book(name,anuthor,price,type);booklist.setBooklist(size,book);System.out.println("新增书籍成功");booklist.setUsedsize(size+1);}
}

借阅图书

对于借阅图书只需要将图书信息中的布尔型变量isBorrowed变量变为true即可,首先还是要遍历booklist找到该书。

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class BorrowOperation implements IOpreation {public void work(BookList booklist){System.out.println("借阅图书");Scanner scan=new Scanner(System.in);System.out.println("请输入要借阅的书籍名称:");String name=scan.nextLine();int size=booklist.getUsedsize();for (int i = 0; i <size ; i++) {Book book=booklist.getBook(i);if(book.getName().equals(name)){book.setBorrowed(true);System.out.println("借阅成功");System.out.println("该书籍的信息为:");System.out.println(book);return;}}System.out.println("该书籍不存在");}
}

删除书籍

类似于借阅书籍,首先要先找到你要删除的书籍,因此设置一个中间变量,index来判断是否存在该书籍,对于书籍同样也是要遍历booklist,对于删除操作只需要用后一个覆盖前一个的内容即利用for循环前移即可。

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class DeleteOperation implements IOpreation{@Overridepublic void work(BookList booklist) {System.out.println("删除图书");Scanner scan=new Scanner(System.in);System.out.println("请输入要删除的图书名称:");String name= scan.nextLine();int size=booklist.getUsedsize();int index=-1;for (int i = 0; i <size ; i++) {Book book=booklist.getBook(i);if(book.getName().equals(name)){index=i;break;}}if(index==-1){System.out.println("不存在你想要删除的书籍");}//删除操作for (int i = index; i <size-1 ; i++) {Book book=booklist.getBook(i+1);booklist.setBooklist(i,book);}System.out.println("删除成功");booklist.setUsedsize(size-1);}
}

显示书籍

同样利用booklist.getUsedsize();得到数组的使用长度,然后利用for循环将每本书依次打印出来即可。

package operation;import book.Book;
import book.BookList;import java.util.Arrays;public class DisplayOperation implements IOpreation{@Overridepublic void work(BookList booklist) {System.out.println("显示图书");int size=booklist.getUsedsize();for (int i = 0; i < size; i++) {Book book=booklist.getBook(i);System.out.println(book);}}
}

退出系统

package operation;import book.Book;
import book.BookList;public class ExitOperation implements IOpreation{@Overridepublic void work(BookList booklist) {System.out.println("退出系统");System.exit(0);}
}

查找图书

主要是比较booklist中图书的名字与输入的名字之间是否相同,要先将数组中的某一本图书赋给一个Book类的变量book然后才能进行比较(Book book=booklist.getBook(i);)book.getName().equals(name)。

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class FindOperation implements IOpreation{@Overridepublic void work(BookList booklist) {System.out.println("查找图书");Scanner scan=new Scanner(System.in);System.out.println("请输入要查找的书籍名称:");String name=scan.nextLine();int size=booklist.getUsedsize();for (int i = 0; i <size ; i++) {Book book=booklist.getBook(i);if(book.getName().equals(name)){System.out.println("查找成功,该书籍的信息为:");System.out.println(book);return;}}System.out.println("不存在你要查找的书籍");}
}

归还书籍

和借阅图书进行对比可只,借阅图书是将isBorrowed变量由false变为true,那么归还图书就是将isBorrowed变量由true变为false.

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class ReturnOperation implements IOpreation{@Overridepublic void work(BookList booklist) {System.out.println("归还图书");Scanner scan=new Scanner(System.in);System.out.println("请输入要归还的书籍名称:");String name=scan.nextLine();int size=booklist.getUsedsize();for (int i = 0; i <size ; i++) {Book book=booklist.getBook(i);if(book.getName().equals(name)){book.setBorrowed(false);System.out.println("归还成功");System.out.println("该书籍的信息为:");System.out.println(book);break;}}}
}

图书及“书架”(book包)

图书

需要说明的是在重写的toString函数中(toString函数在Object类中,它被认为是所有类的父类)(isBorrowed == true ? " 已借出 “:” 未借出 ") 将true和false转换为文字。

package 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 boolean isBorrowed() {return isBorrowed;}public void setBorrowed(boolean borrowed) {isBorrowed = borrowed;}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;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\t' +", author='" + author + '\t' +", price=" + price +", type='" + type + '\t' +(isBorrowed == true ? " 已借出 ":" 未借出 ") +'}';}
}

“书架”

书架就可以看成以Book为基本数据类型的一个数组,要设立数组使用长度,便于后续操作。

package book;public class BookList {private Book[] booklist=new Book[10];private int usedsize;public BookList(){this.booklist[0]=new Book("三国演义","罗贯中",28,"小说");this.booklist[1]=new Book("水浒传","施耐庵",36,"小说");this.booklist[2]=new Book("红楼梦","曹雪芹",56,"小说");this.booklist[3]=new Book("西游记","吴承恩",35,"小说");this.usedsize=4;}public int getUsedsize() {return usedsize;}public void setUsedsize(int usedsize) {this.usedsize = usedsize;}public void setBooklist(int pos,Book book){booklist[pos]=book;}public Book getBook(int pos){return booklist[pos];}
}

使用人群(user包)

user父类

这里有一个protected IOpreation[] iOpreations;即接口类型的数组,主要是在它的子类中,在构造函数中需要根据它们各自的功能实例化各个操作。

package user;import book.BookList;
import operation.IOpreation;public abstract class User {protected String name;protected IOpreation[] iOpreations;public User(String name){this.name=name;}public abstract int menu();public void doOperation(int choice, BookList bookList){this.iOpreations[choice].work(bookList);}}

普通使用人员

上面说的 IOpreation[] iOpreations,在这里就实例化了

this.iOpreations=new IOpreation[]{new FindOperation(),new BorrowOperation(),new ReturnOperation(),new ExitOperation()

对于选择的操作序号我们也要返回,从而在主函数中调用User类中的doOperation操作,要注意在上面对操作进行实例化时要与下面菜单的顺序一致。

package user;import operation.*;import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);this.iOpreations=new IOpreation[]{new FindOperation(),new BorrowOperation(),new ReturnOperation(),new ExitOperation()};}public int menu(){System.out.println("********普通人员菜单*********");System.out.println("欢迎"+name+"进入图书借阅系统");System.out.println("0                   查找书籍");System.out.println("1                   借阅书籍");System.out.println("2                   归还书籍");System.out.println("3                   退出系统");Scanner scan=new Scanner(System.in);int choice=scan.nextInt();return choice;}
}

管理员

与上面的普通人员除了操作不同之外,其他都是同样的道理。

package user;import operation.*;import java.util.Scanner;public class AdiminUser extends User{public AdiminUser(String name) {super(name);this.iOpreations=new IOpreation[]{new DisplayOperation(),new DeleteOperation(),new AddOperation(),new FindOperation(),new ExitOperation()};}public int menu() {System.out.println("********管理员菜单**********");System.out.println("欢迎"+name+"进入管理员菜单");System.out.println("0                   显示书籍");System.out.println("1                   删除书籍");System.out.println("2                   增加书籍");System.out.println("3                   查找书籍");System.out.println("4                   退出系统");System.out.println("***************************");Scanner scan = new Scanner(System.in);int choice = scan.nextInt();return choice;}
}

JAVA图书管理系统详细代码相关推荐

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

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

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

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

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

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

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

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

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

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

  6. Java时间类型转换详细代码示例

    Java时间类型转换详细代码示例 一.时间类型转换代码示例 二.时间标准简介 1.UTC(世界标准时间) 2.GMT(格林尼治平时) 3.CST(北京时间) 三.SimpleDateFormat 参数 ...

  7. java图书管理系统源码

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

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

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

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

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

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

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

最新文章

  1. JFreeChart(四)之线型图
  2. mysql数据库操作宠物表_mysql数据库之表的操作
  3. Git和Github实现代码同步
  4. BZOJ.4650.[NOI2016]优秀的拆分(后缀数组 思路)
  5. SEO是什么?SEO的作用?SEO的推广特点?
  6. java环境变量代表的含义_java环境变量的含义
  7. python初学者学用anaconda学_致Python初学者:Anaconda入门使用指南
  8. 数字图像处理(2)——数字图像获取
  9. H5 学习之旅-H5表格(7)
  10. iOS:基于Photos框架的图片选择器以及创建自定义相册
  11. python裁剪图片大小
  12. Faker最新仓库地址更新 4/6
  13. Ubuntu 16.04下EasyOpenJTAG+OpenOCD的安装和使用【转】
  14. #455 科技乱炖:看完《流浪地球2》,我们为行星发动机设计了网络架构
  15. VMware vSphere理论
  16. 基于OpenStack的云计算平台搭建
  17. MySQL where in 用法详解
  18. Linux -- 项目服务部署学习
  19. STM32 F105 USB CDC host
  20. 一刷131-dp-1143最长公共子序列(m)(剑指 Offer II 095. 最长公共子序列)

热门文章

  1. logisim软件学习
  2. 安全测试|SQL注入技术
  3. 2款免费的图片压缩工具
  4. 仿网易云音乐移动端html模板,使用jQuery仿制网易云音乐移动端
  5. 韩顺平Scala精讲 最强Scala 教学视频!
  6. 清除计算机垃圾cmd命令,cmd清理垃圾命令代码是什么
  7. MyBatis——13用mybatis实现银行转账
  8. 尚学堂-张士兵-王勇JAVA视频教程下载
  9. 全套Java基础视频教程
  10. Android教程 - - adb工具包的安装