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

devtools/2024/10/18 19:28:40/

1.主函数

java">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类

java">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类-----管理员

java">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类----普通成员

java">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类

java">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类

java">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

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

4.2 ExitOperation类----退出系统

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

4.3 ShowOperation类----展现书籍

java">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类----实现书籍的查询

java">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类----实现书籍的借阅

java">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类----实现书籍的返还

java">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类---实现书籍的删除

java">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类----实现书籍的增加

java">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.ppmy.cn/devtools/42913.html

相关文章

储能服务系统架构:实现能源可持续利用的科技之路

随着可再生能源的快速发展和能源系统的智能化需求增加&#xff0c;储能技术作为能源转型和可持续发展的关键支撑之一&#xff0c;备受各界关注。储能服务系统架构的设计和实现将对能源行业产生深远影响。本文将探讨储能服务系统架构的重要性和关键组成部分&#xff0c;旨在为相…

spring扩展使用集群

Spring中优雅开发的代码技巧 一、如何获取spring容器对象 1、实现BeanFactoryAware接口&#xff0c;重写setBeanFactory方法 Service public class PersonService implements BeanFactoryAware {private BeanFactory beanFactory;Overridepublic void setBeanFactory(BeanFac…

SpringBoot(七)之监控

SpringBoot&#xff08;七&#xff09;之监控 Spring Boot 提供了丰富的监控和管理功能&#xff0c;可以通过 Spring Boot Actuator 组件实现。Actuator 使你能够监控和管理 Spring Boot 应用程序的各个方面&#xff0c;比如健康检查、指标、环境信息等。以下是如何在 Spring …

MacBook 怎么玩Windows游戏 苹果笔记本怎么玩游戏?mac上如何玩windows游戏

传统上&#xff0c;Mac 不被认为是好的游戏机。然而&#xff0c;苹果已经开始在 Mac 上的游戏上投入更多精力&#xff0c;特别是自从转向苹果芯片以来。这使得 Mac 游戏的本机移植数量和模拟 Windows 游戏的能力都得到了显著提高。 方法一&#xff1a;Boot Camp 1、Boot Camp是…

介绍一下Hugging Face,这个公司的背景是什么

Hugging Face是一家成立于2016年的人工智能公司&#xff0c;专注于为AI研究人员和开发者提供开源模型库和工具。以下是关于Hugging Face公司的详细背景介绍&#xff1a; 公司历史与创始人&#xff1a; Hugging Face由Clment Delangue、Julien Chaumond和Thomas Wolf三位法国籍…

634 · 单词矩阵

链接&#xff1a;LintCode 炼码 - ChatGPT&#xff01;更高效的学习体验&#xff01; . - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; class Solution { public: struct Trie {Trie() {next.resize(26, nullptr);end false;} std::vector<Trie*> next; b…

java基础-JVM日志、参数、内存结构、垃圾回收器

一、基础基础 1.1 数据类型 Java的数据类型分为原始数据类型和引用数据类型。 原始数据类型又分为数字型和布尔型。 数字型又有byte、short、int、long、char、float、double。注意&#xff0c;在这里char被定义为整数型&#xff0c;并且在规范中明确定义&#xff1a;byte、…

Git-布式版本控制系统

Git是一种分布式版本控制系统&#xff0c;用于跟踪代码和文件的修改历史&#xff0c;协助团队进行软件开发和协作。它由Linus Torvalds在2005年创建&#xff0c;最初是为了管理Linux内核开发。Git因其强大的功能、灵活性和高效性&#xff0c;成为全球最流行的版本控制系统之一。…