当前位置: 首页 > news >正文

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.lryc.cn/news/353146.html

相关文章:

  • ICML2024 定义新隐私保护升级:DP-BITFIT新型微调技术让AI模型学习更安全
  • 网络空间安全数学基础·整除与同余
  • 同旺科技 FLUKE ADPT 隔离版发布 ---- 说明书
  • 云计算-角色、特性和模型 (Roles, Characteristics, and Models)
  • 介绍一下Hugging Face,这个公司的背景是什么
  • 【C++高阶(一)】继承
  • AI原生嵌入式矢量模型数据库ChromaDB-部署与使用指南
  • c# 画一个正弦函数
  • Docker学习(3):镜像使用
  • 【Git】版本控制工具——Git介绍及使用
  • 面试八股之JVM篇3.6——垃圾回收——强引用、弱引用、虚引用、软引用
  • 博客摘录「 Sql Server 收缩日志文件原理及always on 下的实践」2024年5月22日
  • 每日一题(5)——StringBuffer操作
  • 默认路由实现两个网段互通实验
  • ComfyUI完全入门:图生图局部重绘
  • 基于UDP的网络多人聊天室
  • 美国FDA认证是什么,食品FDA注册申请流程
  • golang的context和chan 的使用
  • 洛谷P3574 [POI2014] FAR-FarmCraft(树形dp)
  • vue/core源码中ref源码的js化
  • 准备打ccf
  • k8s遇到的错误记录
  • 全局平均池化笔记
  • 【数仓系列】maxcompute、postgresql、sparksql等行转列数据处理实战总结(其他类型持续总结更新)
  • 用数据,简单点!奇点云2024 StartDT Day数智科技大会,直播见
  • Cloneable接口和深拷贝
  • C++:vector的介绍及使用
  • 【机器学习】大模型在机器学习中的应用:从深度学习到生成式人工智能的演进
  • 营销短信XML接口对接发送示例
  • 【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m