使用 Java 中的 Switch 语句的图书馆管理系统

javaobject oriented programmingprogramming更新于 2024/10/27 21:32:17

在当今技术时代,图书馆已经认识到图书馆管理系统的广泛功能,将其作为有效处理其材料的宝贵资源。为了优化这些系统,必须使用 Java 等强大的编程语言,它可以帮助创建高效且用户友好的解决方案。作为一个例子,本文将使用 Java 中的 switch 语句来演示图书馆管理系统的实现。从而使图书馆能够更好地组织和优化资源,以满足用户日益增长的需求。

图书馆管理菜单

我们将生成的替代方案如下,如下所示 -

  • 退出应用程序

  • 添加新书

  • 升级图书数量

  • 搜索图书

  • 显示所有图书

  • 注册学生

  • 显示所有注册学生

  • 借阅图书

  • 签入图书

实施

除了负责执行我们的小项目的应用程序(主)类之外,我们将创建以下五个文件 −

  • Library

  • Student

  • Students

  • book

  • books

示例

文件:book.java

// Java 程序用于说明 book 类
// 从书籍和相关信息获取输入

package College;

// 导入所需的类
import java.util.Scanner;

// Class
public class book {

    // 类数据成员
    public int sNo;
    public String bookName;
    public String authorName;
    public int bookQty;
    public int bookQtyCopy;
    
    // 创建 Scanner 类的对象以
    // 读取用户的输入
    Scanner input = new Scanner(System.in);
    
    // 方法
    // 添加书籍详细信息
    public book() {
        // 显示消息以便稍后输入
        // 通过以下方法输入
        // nextInt() 和 nextLine() 标准方法
        System.out.println("输入书籍序列号:");
        this.sNo = input.nextInt();
        input.nextLine();
        
        System.out.println("输入书籍名称:");
        this.bookName = input.nextLine();
        
        System.out.println("输入作者姓名:");
        this.authorName = input.nextLine();
        
        System.out.println("输入书籍数量:");
        this.bookQty = input.nextInt();
        bookQtyCopy = this.bookQty;
    }
}

文件:books.java

// Java 程序用于说明书籍类
// 执行与书籍相关的所有操作,例如
// 添加、签入、签出、验证书籍、更新书籍

// 导入所需的类
import java.util.Scanner;

// 类
public class books {

    // 类数据成员
    book theBooks[] = new book[50];
    public static int count;

    Scanner input = new Scanner(System.in);
    
    // 方法 1
    // 比较书籍
    public int compareBookObjects(book b1, book b2) {

        // 如果书名匹配
        if (b1.bookName.equalsIgnoreCase(b2.bookName)) {
            
            // 打印书存在
            System.out.println(
            "此名称的书已存在。");
            return 0;
        }
        
        // 如果书序列号匹配
        if (b1.sNo == b2.sNo) {
            
            // 打印书存在
            System.out.println(
            "此序列号的书已存在。");
            
            return 0;
        }
        return 1;
   }

    // 方法 2
    // 添加书籍
   public void addBook(book b) {

      for (int i = 0; i < count; i++) {

         if (this.compareBookObjects(b, this.theBooks[i])
            == 0)
            return;
      }

      if (count < 50) {

         theBooks[count] = b;
         count++;
      } else {

         System.out.println(
            "No Space to Add More Books.");
      }
   }

    // 方法 3
    // 通过序列号搜索书籍
   public void searchBySno() {

        // 显示消息
        System.out.println(
        "\t\t\t\t按序列号搜索\n");
        
        // 类数据成员
        int sNo;
        System.out.println("输入书籍序列号:");
        sNo = input.nextInt();

        int flag = 0;
        System.out.println(
         "S.No\t\tName\t\tAuthor\t\tAvailable Qty\t\tTotal Qty");

      for (int i = 0; i < count; i++) {
         if (sNo == theBooks[i].sNo) {
            System.out.println(
               theBooks[i].sNo + "\t\t"
               + theBooks[i].bookName + "\t\t"
               + theBooks[i].authorName + "\t\t"
               + theBooks[i].bookQtyCopy + "\t\t"
               + theBooks[i].bookQty);
            flag++;
            return;
         }
      }
      if (flag == 0)
         System.out.println("No Book for Serial No "
                  + sNo + " Found.");
   }

// 方法 4
// 按姓名搜索作者
   public void searchByAuthorName() {

      // 显示消息
      System.out.println(
         "\t\t\t\tSEARCH BY AUTHOR'S NAME");

      input.nextLine();

      System.out.println("Enter Author Name:");
      String authorName = input.nextLine();

      int flag = 0;

      System.out.println(
         "S.No\t\tName\t\tAuthor\t\tAvailable Qty\t\tTotal Qty");

      for (int i = 0; i < count; i++) {

         // 如果作者匹配其任何一本书
         if (authorName.equalsIgnoreCase(
            theBooks[i].authorName)) {

            // 打印以下相应的凭证
            System.out.println(
               theBooks[i].sNo + "\t\t"
               + theBooks[i].bookName + "\t\t"
               + theBooks[i].authorName + "\t\t"
               + theBooks[i].bookQtyCopy + "\t\t"
               + theBooks[i].bookQty);
            flag++;
         }
      }

      // 否则没有与作者匹配的书籍
      if (flag == 0)
         System.out.println("No Books of " + authorName
                  + " Found.");
   }
   
    // 方法 5
    // 显示所有书籍
   public void showAllBooks() {

      System.out.println("\t\t\t\tSHOWING ALL BOOKS\n");
      System.out.println(
         "S.No\t\tName\t\tAuthor\t\tAvailable Qty\t\tTotal Qty");

      for (int i = 0; i < count; i++) {

         System.out.println(
            theBooks[i].sNo + "\t\t"
            + theBooks[i].bookName + "\t\t"
            + theBooks[i].authorName + "\t\t"
            + theBooks[i].bookQtyCopy + "\t\t"
            + theBooks[i].bookQty);
      }
   }

    // 方法 6
    // 编辑书籍
   public void upgradeBookQty() {

      System.out.println(
         "\t\t\t\tUPGRADE QUANTITY OF A BOOK\n");
      System.out.println("Enter Serial No of Book");

      int sNo = input.nextInt();

      for (int i = 0; i < count; i++) {

         if (sNo == theBooks[i].sNo) {

            // 显示消息
            System.out.println(
               "Enter No of Books to be Added:");

            int addingQty = input.nextInt();
            theBooks[i].bookQty += addingQty;
            theBooks[i].bookQtyCopy += addingQty;

            return;
         }
      }
   }

    // 方法 7
    // 创建菜单
   public void dispMenu() {

      // Displaying menu
      System.out.println(
"----------------------------------------------------------------------------------------------------------");
      System.out.println("Press 1 to Add new Book.");
      System.out.println("Press 0 to Exit Application.");
      System.out.println(
         "Press 2 to Upgrade Quantity of a Book.");
      System.out.println("Press 3 to Search a Book.");
      System.out.println("Press 4 to Show All Books.");
      System.out.println("Press 5 to Register Student.");
      System.out.println(
         "Press 6 to Show All Registered Students.");
      System.out.println("Press 7 to Check Out Book. ");
      System.out.println("Press 8 to Check In Book");
      System.out.println(
"-------------------------------------------------------------------------------------------------------");
   }

    // 方法 8
    // 搜索库
   public int isAvailable(int sNo) {

      for (int i = 0; i < count; i++) {
         if (sNo == theBooks[i].sNo) {
            if (theBooks[i].bookQtyCopy > 0) {

               System.out.println(
                  "Book is Available.");
               return i;
            }
            System.out.println("Book is Unavailable");
            return -1;
         }
      }

      System.out.println("No Book of Serial Number "
               + " Available in Library.");
      return -1;
   }

    // 方法 9
    // 从图书馆移除图书
   public book checkOutBook() {

      System.out.println(
         "Enter Serial No of Book to be Checked Out.");
      int sNo = input.nextInt();

      int bookIndex = isAvailable(sNo);

      if (bookIndex != -1) {
         theBooks[bookIndex].bookQtyCopy--;
         return theBooks[bookIndex];
      }
      return null;
   }

    // 方法 10
    // 将图书添加到图书馆
   public void checkInBook(book b) {
      for (int i = 0; i < count; i++) {
         if (b.equals(theBooks[i])) {
            theBooks[i].bookQtyCopy++;
            return;
         }
      }
   }
}

文件:Student.java

// Java 程序用于说明学生班级
// 获取学生的输入和相关信息

// 导入所需的班级
import java.util.Scanner;

// Class
public class student {

    // 类成员变量
    String studentName;
    String regNum;
    
    book borrowedBooks[] = new book[3];
    public int booksCount = 0;
    
    // 创建 Scanner 类的对象来
    // 从用户那里获取输入
    Scanner input = new Scanner(System.in);
    
    // 构造函数
    public student() {
        // 打印语句
        System.out.println("输入学生姓名:");
        
        // 此关键字引用当前实例
        this.studentName = input.nextLine();
        
        // 打印语句
        System.out.println("输入注册号:");
        this.regNum = input.nextLine();
    }
}

文件:Students.java

// Java 程序用于说明学生类
// 执行与学生相关的所有操作:
// 添加学生、签入图书、借出图书、ValidStudent

// 导入所需的类
import java.util.Scanner;

// 类
public class students {

    // 创建 Scanner 和 students 类的对象
    Scanner input = new Scanner(System.in);
    student theStudents[] = new student[50];
    
    public static int count = 0;
    
    // 方法 1
    // 添加图书
   public void addStudent(student s) {
      for (int i = 0; i < count; i++) {

         if (s.regNum.equalsIgnoreCase(
            theStudents[i].regNum)) {

            // 打印语句
            System.out.println(
               "Student of Reg Num " + s.regNum
               + " is Already Registered.");

            return;
         }
      }

      if (count <= 50) {
         theStudents[count] = s;
         count++;
      }
   }

    // 方法 2
    // 显示所有学生
   public void showAllStudents() {
        // 打印学生姓名及
        // 对应的注册号码
      	System.out.println("Student Name\t\tReg Number");
      	for (int i = 0; i < count; i++) {

         System.out.println(theStudents[i].studentName
                     + "\t\t"
                     + theStudents[i].regNum);
      }
   }
   
    // 方法 3
    // 检查学生
   public int isStudent() {
      // 仅显示消息
      System.out.println("Enter Reg Number:");

      String regNum = input.nextLine();

      for (int i = 0; i < count; i++) {

         if (theStudents[i].regNum.equalsIgnoreCase(regNum)) {
            return i;
         }
      }

      // 打印语句
      System.out.println("Student is not Registered.");
      System.out.println("Get Registered First.");

      return -1;
   }

    // 方法 4
    // 删除书籍
   public void checkOutBook(books book) {
      int studentIndex = this.isStudent();

      if (studentIndex != -1) {
         System.out.println("checking out");

         book.showAllBooks();
         book b = book.checkOutBook();

         System.out.println("checking out");
         if (b != null) {

            if (theStudents[studentIndex].booksCount
               <= 3) {

               System.out.println("adding book");
               theStudents[studentIndex].borrowedBooks
                  [theStudents[studentIndex]
                     .booksCount]
                  = b;
               theStudents[studentIndex].booksCount++;

               return;
            } else {

               System.out.println("Student Can not Borrow more than 3 Books.");
               return;
            }
         }
         System.out.println("Book is not Available.");
      }
   }

    // 方法 5
    // 添加书籍
   public void checkInBook(books book) {
      int studentIndex = this.isStudent();
      if (studentIndex != -1) {

         // 打印学生对应的凭证
         System.out.println(
            "S.No\t\t\tBook Name\t\t\tAuthor Name");

         student s = theStudents[studentIndex];

         for (int i = 0; i < s.booksCount; i++) {

            System.out.println(
               s.borrowedBooks[i].sNo + "\t\t\t"
               + s.borrowedBooks[i].bookName + "\t\t\t"
               + s.borrowedBooks[i].authorName);
         }

         // 仅显示消息
         System.out.println(
            "Enter Serial Number of Book to be Checked In:");

         int sNo = input.nextInt();

         for (int i = 0; i < s.booksCount; i++) {
            if (sNo == s.borrowedBooks[i].sNo) {
               book.checkInBook(s.borrowedBooks[i]);
               s.borrowedBooks[i] = null;

               return;
            }
         }

         System.out.println("Book of Serial No " + sNo+ "not Found");
      }
   }
}

文件:Library.java

// Java 程序用于说明应用程序类
// 为程序创建菜单

// 导入所需的类
import java.util.Scanner;

// 类
public class Library {

    // 主驱动程序方法
    public static void main(String[] args) {
        // 创建 Scanner 类的对象
        // 获取用户的输入
        Scanner input = new Scanner(System.in);
        
        // 显示菜单
        System.out.println(
        "*******************欢迎来到图书馆!********************");
        System.out.println("从以下选项中选择:");
        System.out.println(
        "**************************************************************************");
        
        // 创建 book 类的对象
        books ob = new books();
        // 创建学生类的对象
        students obStudent = new students();
        
        int choice;
        int searchChoice;
        
        // 创建菜单
        // 使用 do-while 循环
        do {

         ob.dispMenu();
         choice = input.nextInt();

         // Switch case
         switch (choice) {

            // Case
         case 1:
            book b = new book();
            ob.addBook(b);
            break;

            // Case
         case 2:
            ob.upgradeBookQty();
            break;

         // Case
         case 3:

            System.out.println(
               " press 1 to Search with Book Serial No.");
            System.out.println(
               " Press 2 to Search with Book's Author Name.");
            searchChoice = input.nextInt();

           // 嵌套 switch
            switch (searchChoice) {

               // Case
            case 1:
               ob.searchBySno();
               break;

               // Case
            case 2:
               ob.searchByAuthorName();
            }
            break;

            // Case
         case 4:
            ob.showAllBooks();
            break;

            // Case
         case 5:
            student s = new student();
            obStudent.addStudent(s);
            break;

            // Case
         case 6:
            obStudent.showAllStudents();
            break;

            // Case
         case 7:
            obStudent.checkOutBook(ob);
            break;

            // Case
         case 8:
            obStudent.checkInBook(ob);
            break;

            // 默认情况一定会执行
            // 如果以上情况不匹配
         default:

            // 打印语句
            System.out.println("ENTER BETWEEN 0 TO 8.");
         }

      }

      // 最后检查条件
      // 检查输入的值是否为零
      while (choice != 0);
   }
}

输出

添加图书

********************Welcome to the Library!********************
                   Select From The Following Options:
***************************************************************
---------------------------------------------------------------
Press 0 to Exit Application.
Press 1 to Add new Book. 
Press 2 to Upgrade Quantity of Book.
Press 3 to Search a Book.
Press 4 to Show All Books.
Press 5 to Register Student.
Press 6 to Show All Registered Students.
Press 7 to Check Out Book.
Press 8 to Check In Book.
--------------------------------------------------------------
1
Enter Serial No of Book:
1
Enter Book Name:
Fate- the most unreliable thing
Enter Author Name:
Aashi Gupta
Enter Quantity of Books:
10

注册学生

------------------------------------------------------------
Press 0 to Exit Application.
Press 1 to Add new Book. 
Press 2 to Upgrade Quantity of Book.
Press 3 to Search a Book.
Press 4 to Show All Books.
Press 5 to Register Student.
Press 6 to Show All Registered Students.
Press 7 to Check Out Book.
Press 8 to Check In Book.
------------------------------------------------------------
5
Enter Student Name:
Anubhav Gupta
Enter Registration Number:
0001

租借书籍/借阅书籍

-----------------------------------------------------------
Press 0 to Exit Application.
Press 1 to Add new Book. 
Press 2 to Upgrade Quantity of Book.
Press 3 to Search a Book.
Press 4 to Show All Books.
Press 5 to Register Student.
Press 6 to Show All Registered Students.
Press 7 to Check Out Book.
Press 8 to Check In Book.
-----------------------------------------------------------
7
Enter Registration Number:
0001
checking out
                            SHOWING ALL BOOKS
S No           Name                    Author             Available Quantity
1            Fate- the most            Aashi Gupta              10
             Unreliable thing
Enter Serial No of Book to be Checked Out.
1
Book is Available.
checking out
adding book

显示全部图书

---------------------------------------------------------
Press 0 to Exit Application.
Press 1 to Add new Book. 
Press 2 to Upgrade Quantity of Book.
Press 3 to Search a Book.
Press 4 to Show All Books.
Press 5 to Register Student.
Press 6 to Show All Registered Students.
Press 7 to Check Out Book.
Press 8 to Check In Book.
--------------------------------------------------------
4
                         SHOWING ALL BOOKS
S No             Name                Author             Available Qty
1             Fate- the most        Aashi Gupta             9
              Unreliable thing

归还图书/登记图书

------------------------------------------------------
Press 0 to Exit Application.
Press 1 to Add new Book. 
Press 2 to Upgrade Quantity of Book.
Press 3 to Search a Book.
Press 4 to Show All Books.
Press 5 to Register Student.
Press 6 to Show All Registered Students.
Press 7 to Check Out Book.
Press 8 to Check In Book.
----------------------------------------------------
8
Enter Registration Number:
0001
S No           Book Name                                     Author Name
1             Fate- the most unreliable thing                Aashi Gupta
Enter Serial Number of Book to be Checked In:
1

更新图书数量

--------------------------------------------------
Press 0 to Exit Application.
Press 1 to Add new Book. 
Press 2 to Upgrade Quantity of Book.
Press 3 to Search a Book.
Press 4 to Show All Books.
Press 5 to Register Student.
Press 6 to Show All Registered Students.
Press 7 to Check Out Book.
Press 8 to Check In Book.
--------------------------------------------------
2
                       UPGRADE QUANTITY OF BOOK
Enter Serial No of Book:
1
Enter No of Books to be Added:
1

搜索图书

--------------------------------------------------
Press 0 to Exit Application.
Press 1 to Add new Book. 
Press 2 to Upgrade Quantity of Book.
Press 3 to Search a Book.
Press 4 to Show All Books.
Press 5 to Register Student.
Press 6 to Show All Registered Students.
Press 7 to Check Out Book.
Press 8 to Check In Book.
--------------------------------------------------
3
Press 1 to Search with Book Serial No.
Press 2 to Search with Book’s Author Name.
2
                          SEARCH BY AUTHOR’S NAME
Enter Author Name:
Aashi Gupta
S No         Name         Author          Available Qty           Total Qty
1            Fate         Aashi Gupta       11                      11

显示所有注册学生

------------------------------------------------
Press 0 to Exit Application.
Press 1 to Add new Book. 
Press 2 to Upgrade Quantity of Book.
Press 3 to Search a Book.
Press 4 to Show All Books.
Press 5 to Register Student.
Press 6 to Show All Registered Students.
Press 7 to Check Out Book.
Press 8 to Check In Book.
------------------------------------------------
6
Student Name                          Registration Number
Anubhav Gupta                              0001

结论

Java 中的 switch 语句可用于图书馆管理系统,以获得全面的用户体验。可以利用 Java 的功能创建一个复杂但用户友好的平台,该平台能够自动执行管理职责,同时确保满足安全标准。结果将是一个创新的解决方案,使图书馆工作人员能够轻松管理资源,同时分配更多时间和资源为客户/用户/顾客提供令人满意的体验。通过精心集成 switch 语句,可以确保图书馆的系统具有额外的复杂性,以帮助增强稳健性。基于 Java 的更通用的图书馆管理系统可确保改进功能,并为员工和顾客提供更多安心。


相关文章


有用资源