Java---图书管理系统(练习版)

1.主函数

import book.Book;
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.管理员  2.普通用户");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();//根据用户输入的身份和输入的数字实现相对应的操作while(true){int choice= user.menu();user.doIoperation(choice,bookList);}}
}

2.user包

2.1User类

package user;import book.BookList;
import ioperation.IOPeration;public abstract class User {protected String name;public IOPeration[] ioPerations;public User(String name) {this.name = name;}public abstract  int menu();public void doIoperation(int choice, BookList bookList){ioPerations[choice].work(bookList);}
}

2.2AdminUser类-----管理员

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 DeleteOperation(),new ShowOperation(),};}@Overridepublic int menu() {System.out.println("*****管理员菜单*****");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;}
}

2.3NormalUser类----普通成员

mport ioperation.*;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()};}@Overridepublic int menu() {System.out.println("*****普通用户菜单*****");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;}
}

3.book包

3.1Book类

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 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=" + ((isBorrowed==true)?"已经借出":"未借出") +'}';}
}

3.2 BookList类

package book;public class BookList {//将书存在书架中private Book[] books=new Book[10];//存10本书private int usedSize;//记录书的数量public BookList() {this.books[0]=new Book("三国演义","罗贯中",18,"小说");this.books[1]=new Book("西游记","吴承恩",8,"小说");this.books[2]=new Book("红楼梦","曹雪芹",12,"小说");this.usedSize=3;}public int getUsedSize() {return usedSize;}public void setUsedSize(int usedSize) {this.usedSize = usedSize;}//获取数组的一个元素public Book getBook(int pos) {return books[pos];}public void setBook(int pos,Book book) {this.books[pos]=book;}//获取整个数组public Book[] getBooks() {return books;}
}

4. ioperation包--实现增删查改

4.1 接口IOperation

package ioperation;import book.BookList;public interface IOPeration {void work(BookList bookList);
}

4.2 ExitOperation类----退出系统

package ioperation;import book.BookList;public class ExitOperation implements IOPeration{@Overridepublic void work(BookList bookList) {System.out.println("你已经退出图书系统");System.exit(0);}
}

4.3 ShowOperation类----展现书籍

package ioperation;import book.Book;
import book.BookList;public class ShowOperation implements IOPeration{@Overridepublic void work(BookList bookList) {System.out.println("书籍展现");//获取书籍的数量int currentSize=bookList.getUsedSize();int i=0;for(;i<currentSize;i++){System.out.println(bookList.getBook(i));}}
}

4.4 FindOperation类----实现书籍的查询

package ioperation;import book.Book;
import book.BookList;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.nextLine();for(int i=0;i<bookList.getUsedSize();i++){Book book=bookList.getBook(i);if(book.getName().equals(name)){System.out.println(book);}}System.out.println("没有你想要找的书");}
}

4.5 BorrowOperation类----实现书籍的借阅

import book.Book;
import book.BookList;import java.util.Scanner;public class BorrowOperation implements IOPeration{@Overridepublic void work(BookList bookList) {System.out.println("图书借阅");System.out.println("请输入你要借的图书的名字");Scanner scanner=new Scanner(System.in);String name=scanner.nextLine();int currentSize= bookList.getUsedSize();int i=0;for(;i<currentSize;i++){Book book=bookList.getBook(i);if(book.getName().equals(name)){if(book.isBorrowed()){System.out.println("该数已经借出");return;}book.setBorrowed(true);System.out.println("借书成功");return;}}System.out.println("没有你想借的书");}
}

4.6 ReturnOperation类----实现书籍的返还

package ioperation;import book.Book;
import book.BookList;import java.util.Scanner;public class ReturnOperation implements IOPeration{@Overridepublic 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 i=0;for(;i<currentSize;i++){Book book=bookList.getBook(i);if(book.getName().equals(name)){book.setBorrowed(false);System.out.println("归还成功");return;}}System.out.println("没有你想要归还的数据");return;}
}

4.7 DeleteOperation类---实现书籍的删除

package ioperation;import book.Book;
import book.BookList;import java.util.Scanner;public class DeleteOperation implements IOPeration{@Overridepublic 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 i=0;//找到这本书int pos=-1;for(;i<currentSize;i++){Book book=bookList.getBook(i);if(book.getName().equals(name)){pos=i;break;}}//判断有无删除的书if(i==currentSize){System.out.println("没有你要删除的书");return;}//删除操作int j=pos;for(;j<currentSize-1;j++){Book book=bookList.getBook(j+1);bookList.setBook(j,book);}bookList.setUsedSize(currentSize-1);System.out.println("删除成功");}
}

4.8 AddOperation类----实现书籍的增加

package ioperation;import book.Book;
import book.BookList;import javax.script.ScriptContext;
import java.util.Scanner;public class AddOperation implements IOPeration{@Overridepublic void work(BookList bookList) {//判断是否满书int currentSize=bookList.getUsedSize();//获取数组if(currentSize==bookList.getBooks().length){System.out.println("书架已满");return;}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 newBook=new Book(name,author,price,type);bookList.setBook(currentSize,newBook);System.out.println("增加成功");bookList.setUsedSize(currentSize+1);return;}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/840697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch集群搭建学习

Elasticsearch集群聚合、集群搭建 RestClient查询所有高亮算分控制 数据聚合DSL实现Bucket聚合DSL实现Metrics聚合RestAPI实现聚合 拼音分词器如何使用拼音分词器&#xff1f;如何自定义分词器&#xff1f;拼音分词器注意事项&#xff1f; 自动补全数据同步集群搭建ES集群结构创…

CSS3边框与轮廓

CSS3边框与轮廓 border-radius border-radius 属性用于设置元素边框的圆角半径。通过这个属性,您可以使元素的角呈现圆形或椭圆形外观,而不是传统的直角。其语法格式如下: .element {border-radius: [horizontal-radius vertical-radius] | [radius];}horizontal-radius 和…

蓝桥杯备赛——DP【python】

一、小明的背包1 试题链接&#xff1a;https://www.lanqiao.cn/problems/1174/learning/ 问题描述 输入实例 5 20 1 6 2 5 3 8 5 15 3 3 输出示例 37 问题分析 这里我们要创建一个DP表&#xff0c;DP&#xff08;i&#xff0c;j&#xff09;表示处理到第i个物品时消耗j体…

Atlas 200 DK(Model 3000)安装MindSpore Ascend版本

一、参考资料 mindspore快速安装 二、重要说明 经过博主多次尝试多个版本&#xff0c;Atlas 200 DK&#xff08;Model 3000&#xff09;无法安装MindSpore Ascend版本。 三、准备工作 1. 测试环境 设备型号&#xff1a;Atlas 200 DK(Model: 3000) Operating System Vers…

Vue框架案例学习

1.项目搭建 利用vitets框架进行搭建 npm create vite 启动项目 npm run dev 2.项目配置 ①运行项目&#xff0c;浏览器自动打开 package.json "scripts": {"dev": "vite --open",} ②配置src文件夹的别名 在根目录下配置tsconfig.json文件 …

依赖的各种java库(工具类) :fastjson,lombok,jedis,druid,mybatis等

lombok 功能&#xff1a; Lombok 是一个实用的Java类库&#xff0c;可以通过简单的注解来简化和消除一些必须有但显得很臃肿的Java代码。 导入包&#xff1a;使用Lombok首先要将其作为依赖添加到项目中&#xff0c;在pom.xml文件中手动添加 <dependency><groupId&g…

提取COCO 数据集的部分类

1.python提取COCO数据集中特定的类 安装pycocotools github地址&#xff1a;https://github.com/philferriere/cocoapi pip install githttps://github.com/philferriere/cocoapi.git#subdirectoryPythonAPI若报错&#xff0c;pip install githttps://github.com/philferriere…

【CTF Web】CTFShow web5 Writeup(SQL注入+PHP+位运算)

web5 1 阿呆被老板狂骂一通&#xff0c;决定改掉自己大意的毛病&#xff0c;痛下杀手&#xff0c;修补漏洞。 解法 注意到&#xff1a; <!-- flag in id 1000 -->拦截很多种字符&#xff0c;连 select 也不给用了。 if(preg_match("/\|\"|or|\||\-|\\\|\/|\…

判断视频moov的位置

前言 MP4文件由若干称为Atom&#xff08;或称为box&#xff09;的数据对象组成&#xff0c;每个Atom的起首为四个字节的数据长度&#xff08;Big Endian&#xff09;和四个字节的类型标识&#xff0c;数据长度和类型标志都可以扩展。Atom可以嵌套&#xff0c;即其数据域可以由…

24款奔驰S450升级原厂后排娱乐系统 主动氛围灯有哪些功能

24款奔驰S400豪华升级原厂主动氛围灯与后排娱乐系统&#xff1a;画蛇添足还是锦上添花&#xff1f; 在当今汽车市场竞争激烈的环境下&#xff0c;汽车制造商们为了满足消费者的多元化需求&#xff0c;不断推出各种升级配置和豪华版本。24款奔驰S400豪华版作为奔驰S级的一款重要…

听说部门来了个00后测试开发,一顿操作给我整麻了

公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&#xff01…

uniapp开发vue3监听右滑返回操作,返回到指定页面

想要在uniapp框架中监听左滑或者右滑手势&#xff0c;需要使用touchstart和touchend两个api&#xff0c;因为没有原生的左右滑监听api&#xff0c;所以我们只能依靠这两个api来获取滑动开始时候的x坐标和滑动结束后的x坐标做比对&#xff0c;右滑的话&#xff0c;结束时候的x坐…

飞速提升中文打字,Master of Typing in Chinese for Mac助你一臂之力

Master of Typing in Chinese for Mac是一款专为Mac用户设计的中文打字练习软件。其主要功能包括帮助用户提高打字速度和准确性&#xff0c;培养盲打技巧&#xff0c;使键盘输入更加高效。 打字速度提升&#xff1a;软件提供多种练习模式&#xff0c;如字母、特殊字符、单词和…

FPGA状态机设计详解

一.什么是状态机&#xff1f; 想象一下你正在玩一个电子游戏&#xff0c;角色有多种状态&#xff0c;比如“行走”、“跳跃”、“攻击”等。每当你按下不同的按键或者满足某些条件时&#xff0c;角色的状态就会改变&#xff0c;并执行与该状态对应的动作。这就是状态机的一个简…

Java 类加载和实例化对象的过程

1. 类加载实例化过程 当我们编写完一个*.java类后。编译器&#xff08;如javac&#xff09;会将其转化为字节码。转化的字节码存储在.class后缀的文件中&#xff08;.class 二进制文件&#xff09;。接下来在类的加载过程中虚拟机JVM利用ClassLoader读取该.class文件将其中的字…

GAW-1000D 微机控制钢绞线拉力试验机

一、整机外观图与示意图 外观示意图 性能说明&#xff1a; GAW-1000D型微机控制电液伺服钢绞线拉力试验机主要用于对预应力钢绞线进行抗拉强度测试。由宽调速范围的电液比例伺服阀与计算机及测控单元所组成伺服控制系统&#xff0c;能精确的控制和测量试验全过程。整机由主机…

Unity3D雨雪粒子特效(Particle System)

系列文章目录 unity工具 文章目录 系列文章目录&#x1f449;前言&#x1f449;一、下雨的特效1-1.首先就是创建一个自带的粒子系统,整几张贴图,设置一下就能实现想要的效果了1-2 接着往下看视频效果 &#x1f449;二、下雪的特效&#x1f449;三、下雪有积雪的效果3-1 先把控…

docxtemplater避坑!!! 前端导出word怎么插入本地图片或base64 有完整示例

用docxtemplater库实现前端通过模板导出word&#xff0c;遇到需求&#xff0c;要插图片并转成word并导出&#xff0c;在图片转换这块遇到了问题&#xff0c;网上查示例大多都跑不通&#xff0c;自己琢磨半天&#xff0c;总算搞明白了。 附上清晰完整示例&#xff0c;供参考。 …

SpringCloudAlibaba:6.2RocketMQ的普通消息的使用

简介 普通消息也叫并发消息&#xff0c;是发送效率最高&#xff0c;使用最多的一种 依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSch…

kafka生产者相关

kafka生产者相关 目录概述需求&#xff1a; 设计思路实现思路分析1.kafka 生产者分区策略2.kafka 生产者ISR3.生产者ACK机制4.生产者数据一致性问题5.kafka ExactlyOnce 问题 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfec…