Maison >Java >javaDidacticiel >Comment écrire du code de fonction de base pour la gestion de livres Java
Tout d'abord, jetons un coup d'œil à l'effet de course
Analysons-le :
Les choses sont résolues en Java grâce à l'interaction entre les objets, alors jetons un coup d'œil à quels objets il existe
Tout d'abord, c'est évident Deux objets : user et book, donc créez deux packages book et user
Comme vous pouvez le voir sur l'image ci-dessus : il y a les mêmes opérations entre différents utilisateurs, et il y a aussi des opérations différentes, donc vous pourriez ainsi que de mettre toutes les opérations en un seul Dans le package, vous pouvez l'appeler directement si vous avez besoin d'une opération. J'ai nommé ce package opera
Tout d'abord, il doit y avoir une classe Book dans le package, qui enregistre diverses informations, notamment le titre du livre, l'auteur, le type de livre, le prix et l'état de l'emprunt, j'utilise des modifications privées pour les variables membres dans toutes les classes de tous les packages, en fournissant uniquement des méthodes externes, qui ne seront pas répétées plus tard. (seule une partie du code est affichée) :
package 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; } }
Comme il y a des livres, une étagère est nécessaire pour stocker les livres, donc une autre classe est définie comme BookShelf dans le package de livres pour stocker les livres et enregistrer le nombre de livres stockés. peut être implémenté à l'aide du tableau de classe Book
public class BookShelf { private Book[] books=new Book[1000]; private int count; //记录书的数量 }
Étant donné que le tableau n'est pas accessible directement, ajoutez donc une méthode pour obtenir l'indice du tableau dans la classe, et la méthode d'accès au tableau fonctionne généralement sur le livre, donc la méthode setBook est également modifié
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]; } }
Le code préliminaire du package du livre est ici, passez au package suivant
aura certainement deux classes : utilisateur normal (NormalUser) et administrateur (AdminUser), mais l'accent est mis sur la façon d'implémenter différentes opérations pour différents utilisateurs dans l'image
Ensuite, écrivons d'abord la méthode de connexion, puis analysons : La méthode
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 { //普通用户 } }
détermine à quel type d'utilisateur elle est basée sur différents nombres, donc la valeur de retour doit être pour renvoyer une classe, mais il y a deux classes ici. Pour résoudre ce problème, nous pouvons laisser NormalUser et AdminUser hériter de la même classe Parent, la méthode n'a besoin que de renvoyer la classe parent
Le code de la classe parent est le suivant :
public abstract class User { private String name; public User(String name) { this.name = name; } public abstract void menu(); //菜单抽象方法,子类实现 }
Le code de la sous-classe :
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("选择操作"); } }
Différents utilisateurs correspondent à des opérations différentes, mais ont les mêmes opérandes, donc les deux classes doivent avoir un tableau pour stocker leurs méthodes respectives afin d'éviter les erreurs, et ce tableau doit être préparé avant que l'utilisateur ne sélectionne il, donc le tableau doit être dans la méthode de construction. La classe modifiée est la suivante :
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; } }
Ajout, suppression et modification de livres La recherche et d'autres opérations opèrent en fait sur le tableau Book, donc les paramètres de ces méthodes sont toutes des classes BookShelf, alors on peut définir une interface, définir cette méthode dans l'interface, et ensuite d'autres classes peuvent implémenter cette interface
Code d'interface :
package operate; import book.BookShelf; public interface IOperate { public void work (BookShelf bookShelf); }
Quant au fonctionnement des livres, voici l'exemple d'ajout books
Nous devons connaître les informations du livre, puis avoir une classe Book pour les recevoir, et enfin les mettre dans le tableau
Selon cette logique, la classe Book précédente est à modifier : ajouter une méthode constructeur à la classe Book pour recevoir les informations du livre. Notez que la position de la méthode dans le tableau doit correspondre à la position dans le menu que vous avez écrit
public Book(String name, String author, String type, int price) { this.name = name; this.author = author; this.type = type; this.price = price; }
Ajoutez le code de la méthode book :
public class AddBook implements IOperate { @Override public void work(BookShelf bookShelf) { System.out.println("请输入图书的名字:"); Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); System.out.println("请输入图书的作者:"); String author = scanner.nextLine(); System.out.println("请输入图书的类型:"); String type = scanner.nextLine(); System.out.println("请输入图书的价格:"); int price = scanner.nextInt(); Book book = new Book(name,author,type,price); int count=bookShelf.getCount(); bookShelf.setBooks(count,book); bookShelf.setCount(count+1); System.out.println("新增成功"); } }
Remarque :
1. La variable de référence affiche l'adresse modifiée par défaut, si vous souhaitez imprimer le contenu du livre, vous devez réécrire la méthode toString dans la classe Book
2. Avant de quitter, la méthode de sortie doit parcourir le tableau et tout modifier. les objets vers lesquels il pointe sont nuls. C'est pratique pour le recyclage. Bien que le système le recycle également une fois le programme terminé, il faut savoir qu'il n'est pas si facile d'arrêter certains programmes dans de grands projets une fois qu'ils commencent à s'exécuter
.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!