Werfen wir zunächst einen Blick auf den Laufeffekt Alles klar, zwei Objekte: Benutzer und Buch, also erstellen Sie zwei Pakete Buch und Benutzer
Wie Sie auf dem Bild oben sehen können: Es gibt die gleichen Vorgänge zwischen verschiedenen Benutzern und es gibt auch unterschiedliche Vorgänge, also könnten Sie das auch tun Fügen Sie alle Operationen in einem Paket ein. Sie können es direkt aufrufen, wenn Sie eine Operation benötigen. Ich habe dieses Paket „operate“ genannt Verschiedene Informationen, einschließlich Buchtitel, Autor, Buchtyp, Preis und Ausleihstatus, verwende ich private Modifikationen für Mitgliedsvariablen in allen Klassen in allen Paketen und stelle nur externe Methoden bereit, die später nicht wiederholt werden. Der Code lautet wie folgt ( nur ein Teil des Codes wird angezeigt): rrree
Da es Bücher gibt, wird ein Bücherregal zum Speichern der Bücher benötigt. Daher ist im Buchpaket eine Klasse namens BookShelf definiert, um Bücher zu speichern und die Anzahl der Bücher aufzuzeichnen Es kann mit dem Array der Buchklasse implementiert werdenpackage book; public class Book { private String name; private String author; private String type; private int price; private boolean borrow; 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 class BookShelf { private Book[] books=new Book[1000]; private int count; //记录书的数量 }
Der vorläufige Code des Buchpakets ist hier, fahren Sie mit dem nächsten Paket fort
2. Das Benutzerpaket
wird definitiv zwei Klassen haben: normale Benutzer (NormalUser) und Administratoren (AdminUser), aber der Fokus liegt auf So implementieren Sie verschiedene Vorgänge für verschiedene Benutzer im Bild
Dann schreiben wir zuerst die Anmeldemethode aus und analysieren dann: Die Methode
package book; public class BookShelf { private Book[] books=new Book[1000]; private int count; //记录书的数量 public void setBooks(int pos,Book book) { books[pos] = book; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public BookShelf() { books[0]=new Book("呐喊","鲁迅","小说集",30); //默认初始有一本书,写不写随你 this.count=1; } //获取下标对应的书 public Book pos(int i) { return books[i]; } }
Der Code der übergeordneten Klasse lautet wie folgt:
public static void login() { System.out.println("输入姓名:"); Scanner scanner=new Scanner(System.in); String name=scanner.nextLine(); System.out.println("输入你身份:1.管理员 2.普通用户"); int i=scanner.nextInt(); if(i==1) { //管理员 } else { //普通用户 } }
Der Unterklassencode:
public abstract class User { private String name; public User(String name) { this.name = name; } public abstract void menu(); //菜单抽象方法,子类实现 }
Unterschiedliche Benutzer entsprechen unterschiedlichen Vorgängen, haben aber die gleichen Operanden. Daher benötigen die beiden Klassen ein Array zum Speichern ihrer jeweiligen Methoden, um Fehler zu vermeiden. Dieses Array muss vorbereitet werden, bevor der Benutzer es auswählt , daher sollte sich das Array in der Konstruktionsmethode wie folgt befinden:
public class AdminUser extends User{ public AdminUser(String name) { super(name); } @Override public void 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("选择操作"); } } public class NormalUser extends User{ public NormalUser(String name) { super(name); } @Override public void menu() { System.out.println("欢迎使用"); System.out.println("1.查找图书"); System.out.println("2.借阅图书"); System.out.println("3.归还图书"); System.out.println("0.退出系统"); System.out.println("选择操作"); } }
3.operate package
Schnittstellencode:
public abstract class User { private String name; public IOperate[] ioperate; public void chooseOperate(int choice,BookShelf bookShelf) { ioperate[choice].work(bookShelf); } public User(String name) { this.name = name; } public abstract int menu(); } public class AdminUser extends User{ public AdminUser(String name) { super(name); this.ioperate=new IOperate[] { new Exit(), new FindBook(), new AddBook(), new DelBook(), new DisplayBook(), }; } @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 NormalUser extends User{ public NormalUser(String name) { super(name); this.ioperate=new IOperate[] { new Exit(), new FindBook(), new BorrowBook(), new ReturnBook(), }; } @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; } }
Was den Betrieb von Büchern betrifft, finden Sie hier ein Beispiel für das Hinzufügen von Büchern
Wir müssen die Informationen des Buches kennen und dann eine Buchklasse haben, um sie zu empfangen und sie schließlich in das Array einzufügen.
Gemäß dieser Logik muss die vorherige Buchklasse geändert werden: Fügen Sie eine Konstruktormethode hinzu Beachten Sie, dass die Position der Methode im Array mit der Position im Menü übereinstimmen sollte, die Sie geschrieben haben:
package operate; import book.BookShelf; public interface IOperate { public void work (BookShelf bookShelf); }
Hinweis:
1 Die Variable gibt standardmäßig die geänderte Adresse aus. Wenn Sie den Inhalt des Buches drucken möchten, müssen Sie die toString-Methode in der Book-Klasse neu schreiben.
Das obige ist der detaillierte Inhalt vonSo schreiben Sie grundlegenden Funktionscode für die Java-Buchverwaltung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!