java实现图书馆管理系统

作者:lijiangjiajun 时间:2023-12-10 15:50:29 

本文实例为大家分享了java实现图书馆管理系统的具体代码,供大家参考,具体内容如下

思路:所有包都在book_manage包里

利用面向对象的多态特性去除了很多if-else的判断,不同的子类在父类所对应的方法不同。

1.首先建立一个book包

包里面有2个类,一个是Book,这个类里面包含一本书的全部信息
另外一个类是BookList,这个类是用来管理每一个书,通过这个类来寻找每一本书。
private Book[] books = new Book[100];
Book数组里面存放所有的书。

2.再建立一个包Operation 这个类里面有一个OI接口,通过对接口里面的Work方法重写,来实现管理员身份和普通用户身份的不同操作。

3.最后建立一个User包,里面有三个类,User,Admin,NormalUser

Admin和NormalUser都继承自User.
User里秒你有一个数组
protected IO[] operation;
这个数组里面包含了用户或者管理员所具备的操作。
通过对数组的索引来确定具体需要调用的操作方法。

下面来看看代码吧:

book包

Book类


package book_manager.book;

public class Book {
private String name;
private String id;
private String author;
private int price;
private String type;
private boolean isBorrow;

public Book(String name, String id, String author, int price,
String type, boolean isBorrow) {
this.name = name;
this.id = id;
this.author = author;
this.price = price;
this.type = type;
this.isBorrow = isBorrow;
}

@Override //Object中内置的类,用来格式化打印book的信息
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", id='" + id + '\'' +
", author='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
", isBorrow=" + isBorrow +
'}';
}

public String getName(){
return name;
}

public boolean isBorrow(){
return isBorrow;
}

public void setBorrow(boolean bool){
this.isBorrow=bool;
}

public String getId(){
return id;
}
}

BookList类


package book_manager.book;

import java.util.Arrays;

public class BookList {
private Book[] books = new Book[100];
private int size;
public BookList(){
books[0] = new Book(" * ",
 "001", "兰陵笑笑生", 100,
 "古典名著", false);
books[1] = new Book("水浒传",
 "002", "施耐庵", 100,
 "古典名著", false);
books[2] = new Book("西游记",
 "003", "吴承恩", 100,
 "古典名著", false);
size = 3;
}

public int getSize(){
 return size;
}

public void setBooks(int index,Book book){
 books[index]=book;
}

public void setSize(int size){
 this.size=size;
}

public Book getBook(int index){
 return books[index];
}
}

Operation包:

ADD类


package book_manager.Operation;

import book_manager.book.*;

import java.util.Scanner;

public class ADD implements IO{

@Override
public void work(BookList bookList) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入书名");
String name =scanner.next();
System.out.println("请输入序号");
String id = scanner.next();
System.out.println("请输入作者");
String author =scanner.next();
System.out.println("请输入价格");
int price = scanner.nextInt();
System.out.println("请输入类型");
String type = scanner.next();
Book book = new Book(name, id,
 author, price, type, false);
bookList.setBooks(bookList.getSize(),book);
bookList.setSize(bookList.getSize()+1);
System.out.println("添加成功");
}
}

Borrow类


package book_manager.Operation;

import book_manager.book.Book;
import book_manager.book.BookList;

import java.util.Scanner;

public class Borrow implements IO{
@Override
public void work(BookList bookList) {
int i=0;
int flag=0;
Scanner scan = new Scanner(System.in);

System.out.println("请输入需要借阅的书名");
String name = scan.next();
for(;i<bookList.getSize();i++){
 if(name.equals(bookList.getBook(i).getName())){
 if(bookList.getBook(i).isBorrow()==false){
  System.out.println("借阅成功");
  flag=1;
  bookList.getBook(i).setBorrow(true);
 }

}
 }
if(flag==0){
 System.out.println("不好意思,借阅失败");
}

}
}

Delete类


package book_manager.Operation;

import book_manager.book.BookList;

import java.util.Scanner;

public class Delete implements IO{

public void work(BookList bookList){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入想要删除的编号");
String id = scanner.next();
for(int i=0;i<bookList.getSize();i++){
 if(bookList.getBook(i).getId().equals(id)){
 bookList.setBooks(i,bookList.getBook(bookList.getSize()));
 bookList.setSize(bookList.getSize()-1);
 System.out.println("删除成功");
 }
 else{
 System.out.println("删除失败");
 }
}
}
}

Exit类


package book_manager.Operation;

import book_manager.book.BookList;

public class Exit implements IO{
@Override
public void work(BookList bookList) {
System.out.println("退出成功");
System.exit(0);
}
}

Find类


package book_manager.Operation;

import book_manager.book.BookList;

import java.util.Scanner;

public class Find implements IO{
@Override
public void work(BookList bookList) {
int i=0;
int count=0;
Scanner scan = new Scanner(System.in);

System.out.println("请输入需要查找的书名");
String name = scan.next();
for(;i<bookList.getSize();i++){
 if(name.equals(bookList.getBook(i).getName())){
 count++;
 }
}
if(count==0){
 System.out.println("不好意思,没有找到");
}
else{
 System.out.println("找到了,共计"+count+"本");
}
}
}

IO接口


package book_manager.Operation;

import book_manager.book.BookList;

public interface IO {
abstract public void work(BookList bookList);
}

PrintAll类


package book_manager.Operation;

import book_manager.book.BookList;

public class PrintAll implements IO{
@Override
public void work(BookList bookList) {
for(int i=0;i<bookList.getSize();i++){
 System.out.println(bookList.getBook(i));
}
}

}

Return类


package book_manager.Operation;

import book_manager.book.BookList;

import java.util.Scanner;

public class Return implements IO{
@Override
public void work(BookList bookList) {
int i=0;
int flag=0;
Scanner scan = new Scanner(System.in);

System.out.println("请输入需要归还的ID");
String id = scan.next();
for(;i<bookList.getSize();i++){
 if(id.equals(bookList.getBook(i).getId())){
 if(bookList.getBook(i).isBorrow()==true){
  System.out.println("归还成功");
  bookList.getBook(i).setBorrow(false);
  flag=1;
 }
 else{
  System.out.println("归还失败");
 }
 }

}
if(flag==0){
 System.out.println("不好意思,没有此书");
}

}
}

user包:

User类


package book_manager.user;

import book_manager.Operation.*;
import book_manager.Operation.IO;
import book_manager.book.BookList;

abstract public class User {
String name;
protected IO[] operation;

public User(String name){
this.name=name;
}

abstract public int menu();//该方法被重写
public void doOperation(int choice, BookList bookList) {
operation[choice].work(bookList);
}
}

Admin类


package book_manager.user;

import book_manager.Operation.*;

import java.util.Scanner;

public class Admin extends User{
public Admin(String name){
super(name);
operation=new IO[]{
 new Exit(),
 new Find(),
 new ADD(),
 new Delete(),
 new PrintAll(),
};

}

public int menu() {
System.out.println("============");
System.out.println("hello " + name);
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;
}

}

NormalUser


package book_manager.user;

import book_manager.Operation.*;

import java.util.Scanner;

public class NormalUser extends User{
public NormalUser(String name){
super(name);
operation=new IO[]{
 new Exit(),
 new Find(),
 new Borrow(),
 new Return(),
 new PrintAll()
};
}
public int menu() {
System.out.println("============");
System.out.println("hello " + name);
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();
// close 本质上是在关闭 System.in
// 由于后面还需要用到 System.in, 此处不能盲目关闭.
// scanner.close();
return choice;
}

}

最后还有一个Test类,里面放了main函数


package book_manager;

import book_manager.book.BookList;
import book_manager.user.Admin;
import book_manager.user.NormalUser;
import book_manager.user.User;

import java.util.Scanner;

public class Test {
public static void main(String[] args) {
BookList list = new BookList();
User user = login();
//通过不同的choice和身份调用不同的Operation方法
 while(true){
 int choice = user.menu();
 user.doOperation(choice, list);
}
}

public static User login(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的姓名");
String name = scanner.next();
System.out.println("请输入你的身份");
System.out.println("1.普通用户 2.管理员");
int role= scanner.nextInt();
if(role==1){
 return new NormalUser(name);
}
else{
 return new Admin(name);
}

}
}

更多学习资料请关注专题《管理系统开发》。

来源:https://blog.csdn.net/lijiangjiajun/article/details/102701279

标签:java,图书馆,管理系统
0
投稿

猜你喜欢

  • formfile文件上传使用示例

    2023-06-23 03:41:58
  • Android使用Scroll+Fragment仿京东分类效果

    2022-11-17 16:56:48
  • C#中Equality和Identity浅析

    2022-10-11 10:43:38
  • Gradle:修改默认的Build配置文件名方式

    2023-11-28 20:18:01
  • Java命令设计模式优雅解耦命令和执行提高代码可维护性

    2023-11-23 06:25:46
  • C#中后台post请求常用的两种方式总结

    2023-04-21 17:29:40
  • SpringBoot使用FreeMarker模板发送邮件

    2021-07-27 07:32:26
  • C#中事件的动态调用实现方法

    2022-08-29 03:27:28
  • Android Studio 代码导航快捷键

    2023-09-28 09:58:11
  • 基于Java实现简单贪吃蛇游戏

    2022-08-07 02:09:44
  • Android Studio使用Kotlin时,修改代码后运行不生效的解决方法

    2022-08-05 11:29:04
  • C#中数组初始化与数组元素复制的方法

    2023-05-14 15:45:06
  • Spring Security账户与密码验证实现过程

    2023-03-04 21:54:37
  • Java中Request请求转发详解

    2021-05-25 20:53:42
  • Springboot与Maven多环境配置的解决方案

    2023-11-29 08:53:58
  • Java实现上传文件图片到指定服务器目录

    2023-06-28 00:23:32
  • 使用Mybatis如何实现删除多个数据

    2023-06-15 21:11:57
  • Java中Calendar类的一些常用方法小结

    2022-11-21 06:51:06
  • java 中锁的性能提高办法

    2021-07-28 10:50:28
  • 如何利用Spring MVC实现RESTful风格

    2021-06-06 02:02:13
  • asp之家 软件编程 m.aspxhome.com