图书管理系统(简易版)
目录
一、该图书管理系统涉及Java的知识点
二、该图书管理系统包含的功能
一、该图书管理系统涉及Java的知识点,如下:
- 数组的增删查
- 抽象类
- 接口
- 面向对象的封装、继承和多态
二、该图书管理系统包含的功能,如下:
- 图书管理系统的使用人群分为两种:①管理人员,②普通用户
- 具体实现:抽象类的继承
User类(父类):
public abstract class User {protected String name;protected IOperation[] iOperations;public User(String name){this.name=name;}public abstract int menu();public void doWork(int choice, BooklList booklList){iOperations[choice].work(booklList);}
}
AdminUser类(管理员)
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 scanner=new Scanner(System.in);int choice=scanner.nextInt();return choice;}
}
NormalUser类(普通用户类)
public class NormalUser extends User {public NormalUser(String name){super(name);this.iOperations=new IOperation[]{new ExitOperation(),new FindOperation(),new BorrowOperation(),new ReturnOperation()};}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 scanner=new Scanner(System.in);int choice=scanner.nextInt();return choice;}
}
注:需要把上述的三各类放在同一个包里
2. 设计一个Book类存放书的属性,设计一个BookList类存放书的位置
具体实现:在Book类中给所有的私有属性提供了公共的接口,在BookList类中创建了一个名为books的数组并存放三本图书另外设计了一个BookList的成员名为UsedSize来表示在books数组中存放书的数量。
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 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类
public class BooklList {private Book[] books=new Book[1024];private int usedSize;public BooklList(){books[0]=new Book("数据库应用原理","张三",45,"计算机");books[1]=new Book("红楼梦","曹雪芹",56,"小说");books[2]=new Book("唐诗三百首","孙洙",35,"古诗词");this.usedSize=3;}public int getUsedSize() {return usedSize;}public void setUsedSize(int usedSize) {this.usedSize = usedSize;}/*** 获得pos位置的一本书* @param pos* @return*/public Book getPos(int pos){if(pos>=0&&pos<books.length){return this.books[pos];}elseSystem.out.println("pos位置不合法");return this.books[pos];}/*** 添加pos下标的一本书* @param pos* @param book*/public void setBook(int pos,Book book){this.books[pos]=book;}
}
注: 需要把上述两个类放在当一个包里
3. 分别设计了七个类,每一个类实现一种功能;设计了一个接口把七个类串接起来
具体实现:AddOperation(增加操作)、BorrowOperation(借阅操作)、DelOperation(删除操作)、DisplayOperation(显示操作)、ExitOperation(退出系统)、FindOperation(查找操作)、ReturnOperation(归还操作)和接口IOperation
AddOperation(增加操作)
public class AddOperation implements IOperation{public void work(BooklList booklList){System.out.println("新增图书!");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();scanner.nextLine();Book book=new Book(name,author,price,type);int size=booklList.getUsedSize();booklList.setBook(size,book);booklList.setUsedSize(size+1);System.out.println("新增图书成功!");}
}
BorrowOperation(借阅操作)
public class BorrowOperation implements IOperation {public void work(BooklList booklList) {System.out.println("借阅图书!");System.out.println("请输入你想借阅的图书名字");String name = scanner.nextLine();int size = booklList.getUsedSize();for (int i = 0; i < size; i++) {Book book = booklList.getPos(i);if (name.equals(book.getName())) {book.setBorrowed(true);System.out.println("借阅成功!!!");System.out.println("借阅图书信息如下:" + book);return;}}System.out.println("没有找到你要借阅的图书!!!");}
}
DelOperation(删除操作)
public class DelOperation implements IOperation {public void work(BooklList booklList) {System.out.println("删除图书!");System.out.println("请输入你要删除的图书的名字");String name = scanner.nextLine();int currentSize = booklList.getUsedSize();int index = 0;int i = 0;for (; i < currentSize; i++) {Book book=booklList.getPos(i);if (book.getName().equals(name)){index=i;break;}}if (i>=currentSize){System.out.println("没有找打你要删除的图书!!!");return;}for (int j = index; j <currentSize-1 ; j++) {Book book=booklList.getPos(j+1);booklList.setBook(j,book);}booklList.setBook(currentSize-1,null);booklList.setUsedSize(currentSize-1);System.out.println("删除成功!!!");}}
DisplayOperation(显示操作)
public class DisplayOperation implements IOperation{public void work(BooklList booklList){System.out.println("打印图书!");int size=booklList.getUsedSize();for (int i = 0; i <size ; i++) {Book book=booklList.getPos(i);System.out.println(book);}}
}
ExitOperation(退出系统)
public class ExitOperation implements IOperation{public void work(BooklList booklList){System.out.println("退出系统!");System.exit(0);}
}
FindOperation(查找操作)
public class FindOperation implements IOperation{public void work(BooklList booklList){System.out.println("查找图书!");System.out.println("请输入你要查找的图书名字");String name=scanner.nextLine();int size=booklList.getUsedSize();for (int i = 0; i <size ; i++) {Book book=booklList.getPos(i);if (name.equals(book.getName())) {System.out.println("找到了这本书,信息如下:");System.out.println(book);return;}}System.out.println("没有找到你需要借阅的图书!!!");}
}
ReturnOperation(归还操作)
public class ReturnOperation implements IOperation {public void work(BooklList booklList) {System.out.println("归还图书!");System.out.println("请输入你要图书的名字");String name = scanner.nextLine();int size = booklList.getUsedSize();for (int i = 0; i < size; i++) {Book book = booklList.getPos(i);if (name.equals(book.getName())) {book.setBorrowed(false);System.out.println("归还成功!!!");System.out.println("归还图书信息如下:"+book);return;}}System.out.println("没有你要归还的图书!!!");}
}
接口IOperation
public interface IOperation {void work(BooklList booklList);Scanner scanner=new Scanner(System.in);
}
注:上述的七个类和一个接口需要放在同一个包里
3. 主类Main,包含一个静态方法Login
Main类
public class Main {public static User login(){System.out.println("请输入你的姓名");Scanner scanner=new Scanner(System.in);String name=scanner.nextLine();System.out.println("请输入你的身份:1——》管理员,2——》普通用户");int choice=scanner.nextInt();if(choice==1){return new AdminUser(name);}else {return new NormalUser(name);}}public static void main(String[] args) {BooklList booklList=new BooklList();User user=login();//向上转型while (true) {int choice = user.menu();//动态绑定,根据choice选择合适的操作user.doWork(choice, booklList);}}
}
4.结果图演示
管理员功能演示
普通用户功能演示
图书管理系统(简易版)相关推荐
- 【JavaEE】图书管理系统-简易版
文章目录 book包 Book类 BookList类 operation包 AddOperation 类 BorrowOperation 类 DelOperation类 DisplayOperatio ...
- java图书管理系统目的_java_图书管理系统java版,本文的目的就是通过图书管理 - phpStudy...
图书管理系统java版 本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出 ...
- c语言实现学生二科成绩的单链表,c++链表实现学生成绩管理系统(简易版)
#include using namespace std; typedef struct student{ int id;//学号 string sex; string name; int cpp;/ ...
- python实现图书管理系统(简单版)
简单实现图书管理系统 类和面向对象编程 """ 小钟图书管理系统 1. 查询 2. 增加 3. 借阅 4. 归还 5. 退出 """ cla ...
- java出版社系统_图书管理系统java版
本文的目的就是通过图书管理系统掌握数据库编程技术,能正确连接数据库,能对数据库中信息进行查询.插入.删除.修改. 内容:在数据库中创建一张书目信息表,包括书名.作者.出版社.出版日期.书号.价格字段. ...
- 自制小型图书管理系统 - 简单版(锻炼java基础语法的使用)
文章目录 前言 1. 小型图书管理系统框架思想 2. 实现框架 2.1 构建书架:存放书籍 2.2 使用者的构建 - user 2.3 主函数构建 - Main 2.4 操作的构建 - operate ...
- 手撸图书管理系统!(java版)
废话少说,上代码!!! 先写一个图书类.(我一般称这个类有手就行) package homework.test5;public class Book {private String booklist; ...
- 基于java SSM图书管理系统简单版设计和实现
本项目演示链接地址 > 主要技术:后台采用技术: SSM框架(SpringMVC + Spring + Mybatis) 前台采用技术: div + css 功能比较简单.适合学习使用 主要功能 ...
- 使用VUE 实现图书管理系统 | 简版
跟着黑马18年的教程敲的. 最终效果 最终效果:可以进行图书增加.删除.修改. 开发思路 Part1: 图书列表 实现静态列表效果 基于数据实现模板效果 处理每行的操作按钮 Part2: 添加图书 实 ...
最新文章
- Swift -布局框架SnapKit使用
- ASP.NET 3.5之屠龙刀
- mac怎么合并两个容器_PDF怎样合并?在Mac上合并PDF文件的最佳方法
- 谁能提供修改生产订单的Bapi?
- Nginx网站用户认证
- android studio入门
- 头像裁剪框html css,CSS3 clip-path实现的用户头像裁剪效果
- C++ 事件驱动型银行排队模拟
- Excel快捷键总结
- ESP8266开发之旅 网络篇④ Station——ESP8266WiFiSTA库的使用
- win7无法信息服务器安装程序,主编为你win7系统纯净版安装程序提示“microsoft注册服务器已停止工作”的解决方法...
- 信号处理趣学D4——利用谐波叠加对周期方波进行逼近
- Netbackup5230备份一体机重删率异常故障分析日志收集
- BH1621FVC-TR光环境传感器
- nginx 实现多端口转发
- 古琴怎么学,古琴入门,初学者应该这么练(二)
- 苹果屏幕尺寸_搭载 mini LED 屏幕的 iPad Pro 要来了?!
- python字符宽度_使用vars或\uyu dict的Python固定宽度字符串格式__
- [源码]Meepo路由
- arduino 驱动_Arduino驱动的My Little Pony捐款箱