相关推荐recommended
运用JavaSE知识实现图书管理系统
作者:mmseoamin日期:2024-02-03

目录

  • 一.Main函数
  • 二.用户类
  • 三.普通用户类
  • 四.管理员类
  • 五.图书类
  • 六.书架类
  • 七.操作类
    • 1.操作接口
    • 2.增加操作
    • 3.删除操作
    • 4.查找操作
    • 5.展示操作
    • 6.借阅操作
    • 7.归还操作
    • 8.退出系统
    • 总结

      这篇图书管理系统是对JavaSE知识总结复习的一个小作业,检测自己对知识的掌握程度。

      一.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.普通用户");
              System.out.println("输入你的身份");
              int choice = scanner.nextInt();
              if (choice == 1){
                  return new Admin(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.doOperation(choice,bookList);
              }
          }
      }
      

      二.用户类

      public abstract class User {
          private String name;
          protected IOperation[] iOperations;
          public User(String name){
              this.name = name;
              IOperation[] iOperations;
          }
          public abstract int menu();
          public void doOperation(int choice,BookList bookList){
              IOperation iOperation = iOperations[choice];
              iOperation.work(bookList);
          }
      }
      

      三.普通用户类

      public class NormalUser extends User{
          public NormalUser(String name) {
              super(name);
              this.iOperations =new IOperation[]{
                      new ExitOperation(),
                      new FindOperation(),
                      new BorrowOperation(),
                      new ReturnOperation()
              };
          }
          @Override
          public int menu() {
              System.out.println("*******管理员菜单*********");
              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;
          }
      }
      

      四.管理员类

      public class Admin extends User{
          public Admin(String name) {
              super(name);
              this.iOperations =new IOperation[] {
                      new ExitOperation(),
                      new FindOperation(),
                      new AddOperation(),
                      new DeleOperation(),
                      new ShouwOperation()
              };
          }
          @Override
          public 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("请输入你的操作:");
              Scanner scanner = new Scanner(System.in);
              int choice = scanner.nextInt();
              return choice;
          }
      }
      

      五.图书类

      public class Book{
          //书名 作者 价格 类型 是否借出
          private String name;
          private String author;
          private int price;
          private String type;
          private Boolean isBorrowed = false;
          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 getBorrowed() {
              return isBorrowed;
          }
          public void setBorrowed(Boolean borrowed) {
              isBorrowed = borrowed;
          }
          public Book(String name, String author, int price, String type) {
              this.name = name;
              this.author = author;
              this.price = price;
              this.type = type;
          }
          @Override
          public String toString() {
              return "Book{" +
                      "name='" + name + '\'' +
                      ", author='" + author + '\'' +
                      ", price=" + price +
                      ", type='" + type + '\'' +
                      ", isBorrowed=" + isBorrowed +
                      '}';
          }
      }
      

      六.书架类

      public class BookList {
          public Book[] books;
          public int usedSize;
          public BookList(){
              this.books = new Book[10];
              books[0] = new Book("三国演义","罗贯中",46,"小说");
              books[1] = new Book("水浒传","施耐庵",37,"小说");
              books[2] = new Book("红楼梦","曹雪芹",76,"小说");
              books[3] = new Book("西游记","吴承恩",88,"小说");
              usedSize = 4;
          }
          public Book getBook(int pos) {
              return books[pos];
          }
          public void setBook(Book book,int pos) {
              this.books[pos] = book;
          }
          public int getUsedSize() {
              return usedSize;
          }
          public void setUsedSize(int usedSize) {
              this.usedSize = usedSize;
          }
      }
      

      七.操作类

      1.操作接口

      public interface IOperation {
          void work(BookList bookList);
          Scanner scanner = new Scanner(System.in);
      }
      

      2.增加操作

      public class AddOperation implements IOperation{
          @Override
          public void work(BookList bookList) {
              System.out.println("请输入你要增加图书的书名");
              String name = scanner.nextLine();
              System.out.println("请输入你要添加书的作者");
              String author = scanner.nextLine();
              System.out.println("请输入你要添加书的价格");
              int price = scanner.nextInt();
              System.out.println("请输入你要添加书的类型");
              scanner.nextLine();
              String type = scanner.nextLine();
              int currentSize = bookList.getUsedSize();
              for (int i = 0; i < currentSize; i++) {
                  if(bookList.getBook(i).getName().equals(name)){
                      System.out.println("该书已经存在,无法添加!");
                      return;
                  }
              }
              //书不存在 进行添加操作
              Book book = new Book(name,author,price,type);
              bookList.setBook(book,currentSize);
              bookList.setUsedSize(currentSize+1);
          }
      }
      

      3.删除操作

      public class DeleOperation implements IOperation{
          @Override
          public void work(BookList bookList) {
              System.out.println("请输入你要删除书的书名:");
              String name = scanner.nextLine();
              int index = -1;
              int i =0;
              int currentSize = bookList.getUsedSize();
              for ( i = 0; i < currentSize; i++) {
                  Book book = bookList.getBook(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 = bookList.getBook(j+1);
                  bookList.setBook(book,j);
              }
              bookList.setBook(null,currentSize);
              bookList.setUsedSize(currentSize-1);
              System.out.println("删除成功!!!");
          }
      }
      

      4.查找操作

      public class FindOperation implements IOperation{
          @Override
          public void work(BookList bookList) {
              System.out.println("请输入你要查找的书的书名:");
              String name = scanner.nextLine();
              int currentSize = bookList.getUsedSize();
              for (int i = 0; i < currentSize; i++) {
                  Book book = bookList.getBook(i);
                  if (book.getName().equals(name)){
                      System.out.println(book);
                      return;
                  }
              }
              System.out.println("图书馆没有你要寻找的书!");
          }
      }
      

      5.展示操作

      public class ShouwOperation implements IOperation{
          @Override
          public void work(BookList bookList) {
              System.out.println("展示所有图书!");
              int currentSize = bookList.getUsedSize();
              for (int i = 0; i < currentSize; i++) {
                  Book book = bookList.getBook(i);
                  System.out.println(book);
              }
          }
      }
      

      6.借阅操作

      public class BorrowOperation implements IOperation{
          @Override
          public void work(BookList bookList) {
              System.out.println("图书馆的书如下:");
              int currentSzie = bookList.getUsedSize();
              for (int i = 0; i < currentSzie; i++) {
                  Book book = bookList.getBook(i);
                  System.out.println(book.getName());
              }
              System.out.println("请输入你要外借的图书的书名:");
              String name = scanner.nextLine();
              for (int i = 0; i < currentSzie; i++) {
                  Book book = bookList.getBook(i);
                  if(book.getName().equals(name)){
                      if (book.getBorrowed()){
                          System.out.println("该书已被借出,换本书吧!");
                          return;
                      }else {
                          book.setBorrowed(true);
                          System.out.println("借阅成功");
                          System.out.println("该书的信息如下");
                          System.out.println(book);
                          return;
                      }
                  }
              }
                  System.out.println("你想借阅的图书不存在!");
          }
      }
      

      7.归还操作

      public class ReturnOperation implements IOperation{
          @Override
          public void work(BookList bookList) {
              System.out.println("归还图书");
              System.out.println("请输入你要归还的图书的书名");
              String name = scanner.nextLine();
              int currentSize = bookList.getUsedSize();
              for (int i = 0; i < currentSize; i++) {
                  Book book = bookList.getBook(i);
                  if (book.getName().equals(name)){
                      book.setBorrowed(false);
                      System.out.println("归还成功!");
                      return;
                  }
              }
              System.out.println("不存在你要归还的图书!");
          }
      }
      

      8.退出系统

      public class ExitOperation implements IOperation{
          @Override
          public void work(BookList bookList) {
              System.out.println("退出系统!");
              System.exit(0);
          }
      }
      

      总结

      以上就是图书管理系统的所有知识,有些地方还是需要思考去巧妙地设计使得文章更加简洁明了。冰冻三尺,非一日之寒。水滴石穿,非一日之功。坚持把每一个知识点搞清楚,并进行总结,形成属于自己的知识框架,会让你的学习更加轻松。