**

基本思路

**此系统的对象有 1:书籍 2:使用者(用户和图书管理员)

1. 图书:它的属性有书名,编号,作者,类别,价格,状态(是否被借出)
2. 使用者
2.1 管理员:姓名,增加书籍,删除书籍,查找书籍,打印书籍信息,退出系统一些简单的操作。
2.2 用户:姓名,查找书籍 ,借阅书籍,归还书籍,退出系统操作。

创建一个BookManage类

package Demo;public class BookManage {private String name;private String id;private String auther;private String type;private int price;private boolean isBorrow;public BookManage(String name,String id,String auther,String type,int price,boolean isBorrow){this.name = name;this.id = id;this.auther = auther;this.type = type;this.price = price;this.isBorrow = isBorrow;}public String getId(){return id;}public Boolean isBorrow(){return isBorrow;}public void setBorrow(boolean borrow){isBorrow = borrow;}public String getName(){return name;}//重写
@Overridepublic String toString() {return "BookManage{" +"name='" + name + '\'' +", id='" + id + '\'' +", auther='" + auther + '\'' +", type='" + type + '\'' +", price=" + price +", isBorrow=" + isBorrow +'}';}

创建一个类保存书籍

package Demo;import java.awt.print.Book;public class BookList {private  BookManage[] books = new BookManage[100];private int size;public BookList(){books[0] = new BookManage("数据库","001","王珊","数学课本",49,false);books[1] = new BookManage("信号与系统分析","002","吴大正","数学课本",32,false);books[2] = new BookManage("计算机组成原理","003","蒋本珊","数学课本",45,false);size = 3;}public int getSize(){return size;}public void setSize(int size){this.size = size;}public BookManage getBook(int index){return books[index];}public void setBooks(int index, BookManage book) {books[index] = book;}
}

我们将所有的操作方法放到operation包里,所有方法用接口来实现。

package operation;import Demo.BookList;public interface IOperation {void work(BookList bookList);
}

1.增加书籍

import Demo.BookManage;import java.util.Scanner;public class AddBookoperation implements IOperation{@Overridepublic void work(BookList bookList) {System.out.println("新增一本书籍!");System.out.println("请输入新增书籍的书名:");Scanner scanner = new Scanner(System.in);String name = scanner.next();System.out.println("请输入新增书籍的id:");String id = scanner.next();System.out.println("请输入新增书籍的作者:");String author = scanner.next();System.out.println("请输入新增书籍的类型:");String type = scanner.next();System.out.println("请输入新增书籍的价格:");int price = scanner.nextInt();BookManage book = new BookManage(name,id,author,type,price,false);bookList.setBooks(bookList.getSize(), book);bookList.setSize(bookList.getSize()+1);}
}

2.删除书籍

package operation;import Demo.BookList;
import Demo.BookManage;import java.util.Scanner;public class DeleteOperation implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("删除书籍!");System.out.println("请输入您想要删除的书籍的id:");Scanner scanner = new Scanner(System.in);String id = scanner.next();int i = 0;for (; i < bookList.getSize(); i++) {BookManage book = bookList.getBook(i);if(book.getId().equals(id)) {break;}}if(i >= bookList.getSize()) {System.out.println("未找到要找的书籍!");return;}BookManage lastBook = bookList.getBook(bookList.getSize()-1);bookList.setBooks(i, lastBook);bookList.setSize(bookList.getSize() - 1);System.out.println("删除成功!");}
}

3.查找书籍

package operation;import Demo.BookList;
import Demo.BookManage;import java.util.Scanner;public class Findoperation implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("查找书籍!");System.out.println("请输入要查找书籍的书名:");Scanner scanner = new Scanner(System.in);String name = scanner.next();int count = 0;for(int i = 0; i < bookList.getSize(); i++) {BookManage book = bookList.getBook(i);if(book.getName().equals(name)) {System.out.println(book);count++;}}if(count == 0) {System.out.println("没找到此书籍!");} else {System.out.println("共找到" + count + "本相同书籍!");}}
}

4.借阅书籍

package operation;import Demo.BookList;
import Demo.BookManage;import java.util.Scanner;public class BorrowOperation implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("借阅书籍!");System.out.println("请输入要借阅书籍的id:");Scanner scanner = new Scanner(System.in);String id = scanner.next();for (int i = 0; i < bookList.getSize(); i++) {BookManage book = bookList.getBook(i);if (!book.getId().equals(id)) {continue;}if (book.isBorrow()) {System.out.println("此书已经被借走了!");break;}book.setBorrow(true);System.out.println("借阅成功");}}
}
  1. 打印所有书籍信息
import Demo.BookList;
import Demo.BookManage;public class printAlloperation implements IOperation{@Overridepublic void work(BookList bookList) {int i;for (i = 0; i < bookList.getSize(); i++) {System.out.println(bookList.getBook(i));}System.out.println("共有" + bookList.getSize() + "本书籍");}
}

6.退出系统

package operation;import Demo.BookList;
import Demo.BookManage;import javax.imageio.plugins.bmp.BMPImageWriteParam;
import java.util.Scanner;public class ReturnOperation implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("归还书籍!");System.out.println("请输入要归还书籍的id:");Scanner scanner = new Scanner(System.in);String id = scanner.next();int i = 0;for(; i < bookList.getSize(); i++) {BookManage  book = bookList.getBook(i);if(!book.getId().equals(id)) {continue;}if(!book.isBorrow()) {System.out.println("这本书未借出去,归还失败!");}book.setBorrow(false);}}
}

抽象用户代码

package user;import Demo.BookList;
import operation.IOperation;abstract public class User {protected String name;protected IOperation[] operations;public User(String name) {this.name = name;}abstract public int menu();public void doOpration(int choice, BookList bookList) {operations[choice].work(bookList);}
}

管理员代码

package user;
import Demo.BookList;
import Demo.Delete;
import operation.*;import java.util.Scanner;public class Admin extends User {public Admin(String name) {super(name);operations = new IOperation[]{new ExitOperation(),new AddBookoperation(),new DeleteOperation(),new Findoperation(),new printAlloperation(),};}@Overridepublic int menu() {System.out.println("-------------------");System.out.println("hello" + name);System.out.println("1.增加书籍");System.out.println("2.删除书籍");System.out.println("3.查找书籍");System.out.println("4.打印所有信息");System.out.println("0.退出");System.out.println("-------------------");System.out.println("请输入您的选择:");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();return choice;}
}

用户代码

package user;import operation.*;
import operation.IOperation.*;
import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);operations = new IOperation[] {new ExitOperation(),new Findoperation(),new BorrowOperation(),new ReturnOperation(),};}@Overridepublic int menu() {System.out.println("----------------");System.out.println("hello" + name);System.out.println("1.查找书籍");System.out.println("2.借阅书籍");System.out.println("3.归还书籍");System.out.println("0.退出");System.out.println("----------------");System.out.println("请输入您的选择:");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();return choice;}
}

结束

java编写图书管理系统相关推荐

  1. JavaWeb笔记(五)后端(Thymeleaf)(Tomcat类加载机制)(编写图书管理系统)

    使用Thymeleaf模板引擎 虽然JSP为我们带来了便捷,但是其缺点也是显而易见的,那么有没有一种既能实现模板,又能兼顾前后端分离的模板引擎呢? Thymeleaf(百里香叶)是一个适用于Web和独 ...

  2. c语言图书管理系统用什么软件,编写c语言的软件 纯C语言编写图书管理系统.doc...

    编写c语言的软件 纯C语言编写图书管理系统 编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp 导读:就爱阅读网友为您分享以下"纯C语言编写图书管理系统WORD文档bbszp& ...

  3. c语言之bbs管理系统,编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp.doc...

    编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp 编写c语言的软件 纯C语言编写图书管理系统WORD文档bbszp 导读:就爱阅读网友为您分享以下"纯C语言编写图书管理系统W ...

  4. Java Web图书管理系统(MVC框架)-包含源码

    Java Web图书管理系统 一.前言 这是大二写的系统,因此这个系统并没有用到很多框架,只是使用了MVC框架,前端使用的是Layui框架.bootstrap框架.JSP技术.JSTL表达式和EL表达 ...

  5. Java Swing图书管理系统桌面软件附源码

    Java Swing图书管理系统桌面软件附源码,亲测可运行. 功能界面如下: 登录界面,默认账号admin密码admin 主功能界面: 添加图书功能界面: 部分源码: 完整源码下载地址: JavaSw ...

  6. Java web 图书管理系统

    本系统由java+sevlet+mysql+eclipse实现的Java web图书管理系统,具有增删改查以及导出Excel表格的功能,需要源码或者需要定制类似的Java /Java web/ ssm ...

  7. Java窗体图书管理系统Java图书借阅管理系统(图书借阅系统)

    Java窗体图书管理系统Java图书借阅管理系统(图书借阅系统)

  8. 大二小学期java:图书管理系统

    大二小学期java:图书管理系统 import java.util.*;import java.text.*;public class library {public static long char ...

  9. 计算机毕设(附源码)JAVA-SSM基于java的图书管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

最新文章

  1. 贝叶斯推断方法 —— 从经验知识到推断未知
  2. 整数转换为罗马数字 Integer to Roman
  3. android 填满手机磁盘空间方法
  4. 用pycharm写python老是提示错误_python pycharm错误集锦
  5. matlab图像信息熵交叉熵,【机器学习】信息量,信息熵,交叉熵,KL散度和互信息(信息增益)...
  6. Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一)
  7. Smarty 入手学习教程
  8. 定档6月11日 诺基亚手机新品发布亮点抢先看
  9. (附源码)spring boot小型仪器公司生产管理系统 毕业设计 031853
  10. CentOS mysql配置主从复制
  11. 淘宝网卖家必须缴纳消保保证金才能发布宝贝的商品类目
  12. java8分组lambda_Java 8,Lambda:在分组列表中排序并将所有组合并到列表中
  13. Go sync.Pool 浅析
  14. 短信宝发送短信验证码
  15. java中整数的整数次方_数值的整数次方java
  16. Linux服务器上设置全局代理访问外网并验证
  17. 王佩丰 Excel 基础24讲 | 学习笔记(全)
  18. 筷子兄弟的病毒营销,只用了一首歌!
  19. 线性代数[初等变换(一)]
  20. java中File的总结

热门文章

  1. 2020年Q3房产行业网络关注度分析报告
  2. 【大数据分析】未开先火|北京环球影城网络传播热度洞察
  3. 光端机、光纤收发器与光猫三者之间的区别介绍
  4. ad7793编程c语言,AD7793在高精度温控设备中的应用
  5. Python 1-10 字符串操作
  6. 织梦DEDE搬家数据还原后 前台错位
  7. 如何通过cmd怎么打开计算机管理
  8. Single image dehazing (Fattal)
  9. 如何用python请求接口
  10. jq简单实现五星好评