系统需求

1.登录

2.身份选择:管理员和用户

3.管理员功能:查找图书、新增图书、删除图书、显示图书、退出系统。

4.用户功能:查找图书、借阅图书、归还图书、退出系统。

设计:

分别设计三个包:book包、operation包和user包。book包用来存储原始书籍,operation包用来实现各种功能,user包来区别管理员和用户的功能。最后用Main的class来连接实现。

Book

package book;public class Book {private String name;private String author;private int price;private String type;//书的类型private boolean isBorrowed;//默认是falsepublic Book(String name, String author, int price, String type) {this.name = name;this.author = author;this.price = price;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) {isBorrowed = borrowed;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +(isBorrowed == true ? "  已借出" : "  未借出") +'}';}
}

BookList

package book;public class BookList {private Book[] bookList = new Book[10];private int usedSize;//当前书架上有几本书public BookList(){this.bookList[0] = new Book("三国演义","罗贯中",18,"小说");this.bookList[1] = new Book("西游记","吴承恩",20,"小说");this.bookList[2] = new Book("红楼梦","曹雪芹",45,"小说");this.bookList[3] = new Book("水浒传","施耐庵",34,"小说");this.usedSize = 4;}public int getUsedSize() {return usedSize;}public void setUsedSize(int usedSize) {this.usedSize = usedSize;}//把书放到pos位置public void setBookList(int pos,Book book){bookList[pos] = book;}//获取pos位置的书public Book getBook(int pos){return bookList[pos];}//这里本质上可以写借阅书籍等操作}

AddOperation

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class AddOperation implements IOperation {public void work(BookList bookList){System.out.println("新增图书!");Scanner scanner = new Scanner(System.in);System.out.println("输入你要新增的书籍的名字:");String name = scanner.nextLine();System.out.println("输入你要新增的书籍的作者:");String author = scanner.nextLine();System.out.println("输入你要新增的书籍的类型:");String type = scanner.nextLine();System.out.println("输入你要新增的书籍的价格:");int price = scanner.nextInt();Book book = new Book(name,author,price,type);int currentSize = bookList.getUsedSize();bookList.setBookList(currentSize,book);bookList.setUsedSize(currentSize + 1);//成功放入一本书System.out.println("新增成功!");}
}

BorrowOperation

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class BorrowOperation implements IOperation {public void work(BookList bookList){System.out.println("借阅图书!");Scanner scanner = new Scanner(System.in);System.out.println("输入你要借阅的书籍:");String name = scanner.nextLine();int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book = bookList.getBook(i);if (book.getName().equals(name)) {book.setBorrowed(true);System.out.println("借阅成功!借阅书籍信息如下:");System.out.println(book);return;}}System.out.println("借阅失败,没有这本书!");}
}

DelOperation

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class DelOperation implements IOperation {public void work(BookList bookList){System.out.println("删除图书!");Scanner scanner = new Scanner(System.in);System.out.println("输入你要删除的书籍:");String name = scanner.nextLine();int currentSize = bookList.getUsedSize();int index = -1;for (int i = 0; i < currentSize; i++) {Book book = bookList.getBook(i);if (book.getName().equals(name)) {index = i;break;}}//如果index == -1 说明没有这本书if (index == -1){System.out.println("没有你要删除的图书!");return;}//这里开始删除for (int i = index; i < currentSize - 1; i++) {//bookList[i] = bookList[i + 1];Book book = bookList.getBook(i + 1);bookList.setBookList(i,book);}bookList.setUsedSize(currentSize - 1);}
}

DisplayOperation

package operation;import book.Book;
import book.BookList;public class DisplayOperation implements IOperation {public void work(BookList bookList){System.out.println("显示图书!");int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book = bookList.getBook(i);System.out.println(book);}}
}

ExitOperation

package operation;import book.Book;
import book.BookList;public class ExitOperation implements IOperation {public void work(BookList bookList){//其实可以对书架手动清除System.out.println("退出系统!");System.exit(0);}
}

FindOperation

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class FindOperation implements IOperation {public void work(BookList bookList){System.out.println("查找图书!");Scanner scanner = new Scanner(System.in);System.out.println("输入你要查找的书籍:");String name = scanner.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("没有这本书!");}
}

RetutnOperation

package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class ReturnOperation implements IOperation {public void work(BookList bookList){System.out.println("归还图书!");Scanner scanner = new Scanner(System.in);System.out.println("输入你要归还的书籍:");String name = scanner.nextLine();int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book = bookList.getBook(i);if (book.getName().equals(name)) {book.setBorrowed(false);System.out.println("归还成功!归还书籍信息如下:");System.out.println(book);return;}}System.out.println("归还失败,没有这本书!");}
}

IOperation

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

AdminUser

package user;import operation.*;import java.util.Scanner;public class AdminUser extends User {public AdminUser(String name) {super(name);//存储操作this.iOperations = new IOperation[]{new ExitOperation(),new FindOperation(),new AddOperation(),new DelOperation(),new DisplayOperation()};}public int menu(){System.out.println("==========管理员菜单===========");System.out.println("hello" + this.name + "  欢迎来到图书小练习!");System.out.println("1.查找图书");System.out.println("2.新增图书");System.out.println("3.删除图书");System.out.println("4.显示图书");System.out.println("0.退出系统");System.out.println("请输入你的操作:");Scanner sca = new Scanner(System.in);int choice = sca.nextInt();return choice;}
}

NormalUser

package user;import operation.*;import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);//存储操作this.iOperations = new IOperation[]{new ExitOperation(),new FindOperation(),new BorrowOperation(),new ReturnOperation(),new DisplayOperation()};}public int menu(){System.out.println("==========普通用户菜单===========");System.out.println("hello" + this.name + "  欢迎来到图书小练习!");System.out.println("1.查找图书");System.out.println("2.借阅图书");System.out.println("3.归还图书");System.out.println("0.退出系统");System.out.println("请输入你的操作:");Scanner sca = new Scanner(System.in);int choice = sca.nextInt();return choice;}
}

User

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

Main

import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;import java.util.Scanner;public class Main {public static User login(){System.out.println("请输入姓名:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();System.out.println("请输入你的身份:1-》 管理员  0:普通用户");int choice = scanner.nextInt();if (choice == 1) {return new AdminUser(name);}else {return new NormalUser(name);}}public static void main(String[] args) {BookList bookList = new BookList();User user = login();//User user = new AdminUser(name)//User user = new NormalUser(name)while (true) {int choice = user.menu();user.doOperation(choice, bookList);}}
}

[Java]图书管理系统相关推荐

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

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

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

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

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

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

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

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

  5. java图书管理系统源码

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

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

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

  7. MySQL+Java 图书管理系统

    一.设计目的 通过对图书管理系统的系统分析.系统设计.编码和调试等工作的实践,熟悉管理信息系统的开发过程.设计方法及相关编程技术,熟练掌握数据库设计的基本理论及方法. 二.设计任务 要求完成一个具有一 ...

  8. java图书管理系统目的_java_图书管理系统java版,本文的目的就是通过图书管理 - phpStudy...

    图书管理系统java版 本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出 ...

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

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

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

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

最新文章

  1. docker 系列之 配置阿里云镜像加速器
  2. 深圳杯---垃圾焚烧厂的经济补偿问题
  3. 26 history对象
  4. c语言二进制long,C语言填空题 把从键盘上输入的十进制数(long型)以二进制~十六进制任一制式的形式输出#include main(){...
  5. 保存一波集合框架的介绍
  6. 洛谷 - P4015 运输问题(费用流)
  7. python安全攻防---爬虫基础---BeautifulSoup解析
  8. visual studio enter键代码自动补全
  9. iscroll5实现一个下拉刷新上拉加载的效果
  10. Kinaba及X-Pack插件安装
  11. 一个人长途自驾旅行需要注意什么?
  12. 设置文件为源文件(和src一样)
  13. 奔图打印机显示未连接_国货之“彩” |奔图CP2200DW彩色激光打印机首测
  14. 来自18年9月底的总结及展望
  15. 华硕php55超频,一款软件轻松搞定 华硕Armoury Crate超频体验
  16. c语言编程矩阵范数,矩阵2范数计算 这个二阶矩阵的二范数怎么
  17. 【行业报告】:低碳智能ALL “IN” | 印刷包装数智化转型之路
  18. linux运行igv报错,IGV 哐当就不能用了,除了换台电脑还能怎么办?
  19. 初始化之前使寄存器恢复缺省值的重要性
  20. 教你怎么从Java8升级到Java11

热门文章

  1. python导出pdf_是程序员,就用python导出pdf
  2. android 组态软件,Livzenwex安卓版组态软件
  3. GWR4 软件输入数据制作
  4. 基于springboot小区物业管理系统
  5. Java语句详解(图解java语句概念、快速掌握java基础知识点)——Java基础系列
  6. 使用Python下载百度云文件
  7. 湖北随州:借大数据“慧眼”织密扶贫监督网
  8. android 下载服务器的txt文档
  9. python制作简单计算器
  10. svn up出现类似svn: Error converting entry in directory ‘.‘ to UTF-8问题解决