Dieser Artikel vermittelt Ihnen relevantes Wissen über Java. Er stellt hauptsächlich verwandte Themen zur Implementierung eines Bibliotheksverwaltungssystems vor, einschließlich der Suche nach Büchern, dem Hinzufügen von Büchern, dem Löschen von Büchern, dem Ausleihen von Büchern usw. Das Folgende ist: Werfen wir einen Blick darauf: hoffe es hilft allen.
Empfohlenes Lernen: „Java-Video-Tutorial“
1. Einführung in die Funktion
3. Basierend auf dem Identitätsdruck verschiedenes Funktionsmenü
1.2 Grundgerüst
Buch (Paket)
Betrieb (Funktionspaket)
Benutzer (Benutzer Paket)
3. Code-Implementierung
Buch (Paket)
package book;/** * User: gu'jiu * Date: 2022-05-18 * Time: 14:45 * Description:书 */public class Book { private String name;//书名 private String author;//作者 private double price;//价格 private String type;//类型 private boolean state;//书的状态(已借出or未借出) //对书进行初始化,书的状态不用进行初始化(默认未借出) public Book(String name, String author, double price, String type) { this.name = name; this.author = author; this.price = price; this.type = type; this.state = state; } 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 double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getType() { return type; } public void setType(String type) { this.type = type; } public boolean isState() { return state; } public void setState(boolean state) { this.state = state; } @Override public String toString() { return "[" + "name='" + name + '\'' + ", author='" + author + '\'' + ", price=" + price + ", type='" + type + '\'' + ", " + (state == true ? "已借出" : "未借出") + ']'; }}
package book;/** * User: gu'jiu * Date: 2022-05-18 * Time: 14:52 * Description:书架 */public class BookList { private Book[] books = new Book[10]; private int usedSize; public BookList() { books[0] = new Book("三国演义","罗贯中",19.9,"小说"); books[1] = new Book("西游记","吴承恩",29.9,"小说"); books[2] = new Book("红楼梦","曹雪芹",26.9,"小说"); usedSize = 3; } public Book getBooks(int pos) {//输入下标获取该下标的这本书 return books[pos]; } public void setBooks(int pos, Book book) {//输入下标和一本书,在该下标放入一本书 this.books[pos] = book; } public int getUsedSize() { return usedSize; } public void setUsedSize(int usedSize) { this.usedSize = usedSize; }}Operation (Funktionspaket)IOperation (Funktionsschnittstelle)
package operation;import book.BookList;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:07 * Description:接口 */public interface IOperation { void work(BookList bookList);}
package operation;import book.Book;import book.BookList;import java.util.Scanner;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:09 * Description:查找书籍信息 */public class FindOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println(); System.out.println("查找图书"); System.out.println("------------------------"); Scanner scanner = new Scanner(System.in); System.out.print("请输入书的名称:"); String name = scanner.nextLine(); //获取书架中图书数量 int size = bookList.getUsedSize(); //根据名字查找 for (int i = 0; i < size; i++) { Book book = bookList.getBooks(i); if (book.getName().equals(name)) { System.out.println(book); return; } } System.out.println("未找到该书。"); }}
package operation;import book.Book;import book.BookList;import java.util.Scanner;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:04 * Description:新增书籍 */public class AddOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println(); System.out.println("添加图书"); System.out.println("------------------------"); Scanner scanner = new Scanner(System.in); System.out.print("请输入书名:"); String name = scanner.nextLine(); System.out.print("请输入作者:"); String author = scanner.nextLine(); System.out.print("请输入书的类型:"); String type = scanner.nextLine(); System.out.print("请输入价格:"); double price = scanner.nextDouble(); Book book = new Book(name, author, price, type); bookList.setBooks(bookList.getUsedSize(), book);//将书放入书架 bookList.setUsedSize(bookList.getUsedSize()+1);//书籍数量+1 }}
package operation;import book.Book;import book.BookList;import java.util.Scanner;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:05 * Description:删除书籍 */public class DelOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println(); System.out.println("删除图书"); System.out.println("------------------------"); Scanner scanner = new Scanner(System.in); System.out.print("请输入要删除的书名:"); String name = scanner.nextLine(); //获取书架中现在有几本书 int size = bookList.getUsedSize(); int i = 0; //根据书名找到这个本书的下标 for (i = 0; i < size; i++) { Book book = bookList.getBooks(i); if (book.getName().equals(name)) { break; } } if (i == size) { System.out.println("删除失败,未找到该书。"); return; } //通过前移将书删除 for (i = 0; i < size - 1; i++) { bookList.setBooks(i,bookList.getBooks(i + 1)); } bookList.setUsedSize(bookList.getUsedSize()-1);//书架中图书数量-1 System.out.println("删除成功。"); }}
package operation;import book.Book;import book.BookList;import java.util.Scanner;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:05 * Description:借阅书籍 */public class BorrowOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println(); System.out.println("借阅图书"); System.out.println("------------------------"); Scanner scanner = new Scanner(System.in); System.out.print("请输入要借书的名称:"); String name = scanner.nextLine(); //获取书架中现在有几本书 int size = bookList.getUsedSize(); for (int i = 0; i < size; i++) { Book book = bookList.getBooks(i); //判断在书架中是否有这本书 if (book.getName().equals(name)) { //判断书是否被借走 if (!book.isState()) { System.out.println("借阅成功!"); book.setState(true);//将书的状态改为已借出 return; } else { System.out.println("借阅失败,该书已被别人借走。"); return; } } } System.out.println("借阅失败,未找到该书。"); }}
package operation;import book.Book;import book.BookList;import java.util.Scanner;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:10 * Description:归还书籍 */public class ReturnOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println(); System.out.println("归还图书"); System.out.println("------------------------"); Scanner scanner = new Scanner(System.in); System.out.print("请输入要还书的名称:"); String name = scanner.nextLine(); //获取书架中现在有几本书 int size = bookList.getUsedSize(); for (int i = 0; i < size; i++) { Book book = bookList.getBooks(i); //判断在书架中是否有这本书 if (book.getName().equals(name)) { //判断书是否已被借走 if (book.isState()) { System.out.println("归还成功!"); book.setState(false);//将书的状态改为未借出 return; } else { System.out.println("归还失败,该书已还未被借走。"); return; } } } System.out.println("归还失败,未找到该书。"); }}
package operation;import book.Book;import book.BookList;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:06 * Description:打印全部书籍信息 */public class DisplayOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println(); System.out.println("显示全部图书"); System.out.println("------------------------"); int size = bookList.getUsedSize(); for (int i = 0; i < size; i++) { Book book = bookList.getBooks(i); System.out.println(book); } }}
import book.BookList;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:08 * Description:退出系统 */public class ExitOperation implements IOperation{ @Override public void work(BookList bookList) { System.out.println(); System.out.println("退出系统。"); System.out.println("------------------------"); System.exit(0); }}user (Benutzerpaket)User (abstrakte Benutzerklasse)
package user;import book.BookList;import operation.IOperation;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:11 * Description:使用者 */abstract public class User { protected String userName;//使用者姓名 protected IOperation[] iOperations;//功能数组 public User(String userName) { this.userName = userName; } public abstract int menu(); //输入选择,调用不同的功能 public void doOperation(int choice, BookList bookList) { this.iOperations[choice].work(bookList);//动态绑定 }}
package user;import operation.*;import java.util.Scanner;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:13 * Description:管理员 */public class AdminUser extends User{ public AdminUser(String userName) { super(userName); //管理员功能 this.iOperations = new IOperation[] { new ExitOperation(), new FindOperation(), new AddOperation(), new DelOperation(), new DisplayOperation() }; } @Override public int menu() { System.out.println(); System.out.println("hello " + this.userName + " 欢迎来到图书馆"); while(true) { 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.print("请输入你的操作:"); Scanner scanner = new Scanner(System.in); int choice = scanner.nextInt(); //保证输入数字有效 if (choice > 4 || choice < 0) { System.out.println("输入有误请重新输入。"); } else { return choice; } } }}
package user;import operation.*;import java.util.Scanner;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:13 * Description:学生 */public class NormalUser extends User{ public NormalUser (String userName) { super(userName); //用户功能 this.iOperations = new IOperation[] { new ExitOperation(), new FindOperation(), new BorrowOperation(), new ReturnOperation(), }; } @Override public int menu() { System.out.println(); System.out.println("hello "+this.userName+" 欢迎来到图书馆"); while(true) { System.out.println("------------------------"); System.out.println("1.查找图书"); System.out.println("2.借阅图书"); System.out.println("3.归还图书"); System.out.println("0.退出系统"); System.out.println("------------------------"); System.out.print("请输入你的操作:"); Scanner scanner = new Scanner(System.in); int choice = scanner.nextInt(); //保证输入数字有效 if (choice > 3 || choice < 0) { System.out.println("输入有误请重新输入。"); } else { return choice; } } }}Testklasse
import book.BookList;import user.AdminUser;import user.NormalUser;import user.User;import java.util.Scanner;/** * User: gu'jiu * Date: 2022-05-18 * Time: 15:20 * Description:图书管理系统 */public class Test { public static User login() { System.out.println("欢迎使用图书管理系统"); Scanner scanner = new Scanner(System.in); System.out.print("请输入您的姓名:"); String name = scanner.nextLine(); while(true){ System.out.println("-----------------------------"); System.out.println("请选择您的身份:1>管理员 2>普通用户"); System.out.print("请输入:"); int choice = scanner.nextInt(); //保证输入数字有效 if (choice == 1) { return new AdminUser(name); } else if (choice == 2) { return new NormalUser(name); } else { System.out.println("输入有误,请重新输入。"); } } } public static void main(String[] args) { BookList bookList = new BookList(); User user = login();//向上转型 while(true){ int choice = user.menu(); user.doOperation(choice, bookList); } }}
user.doOperation(choice, bookList);
ist schwer zu verstehen 2. Bei der Instanziierung
dieses Objekts haben wir im Konstruktor bereits iOperations[]
auf „Ready“ gesetzt. user.doOperation(choice, bookList);
中的doOperation
方法比较难理解,我们来解释一下
1.user.
引用的可能是两个对象
2.在实例化
这对象的时候,在构造方法中,我们已经将iOperations[]
准备好了。
3.根据输入下标
(例如:2)访问相应对象,再调用work
3. Gemäß der Eingabe Subscript
(zum Beispiel: 2) greift auf das entsprechende Objekt zu und ruft dann die Methode work
auf.
Empfohlenes Lernen: „Java-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Java-Grafiken und -Texten zur Implementierung eines Bibliotheksverwaltungssystems. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!