网站域名登记证明文件,建设部网站最新消息,杭州做网站哪个公司好,设计方案翻译因为文件过多每个文件之间的关系如下#xff08;每个文件中都只有一个类#xff09;#xff1a; 因为JAVA属于面向对象编程的语言#xff0c;所以我们想要实现图书管理系统就得分以下几步#xff1a;
找出其中的所有的对象实现所有的对象完成对象之间的交互
在图书管理系… 因为文件过多每个文件之间的关系如下每个文件中都只有一个类 因为JAVA属于面向对象编程的语言所以我们想要实现图书管理系统就得分以下几步
找出其中的所有的对象实现所有的对象完成对象之间的交互
在图书管理系统中我们可以想到这几个对象书用户用户还可以分为普通用户和管理员还得有存放书的书架。
找出对象之后我们将它们分别放在两个包中一个放书和书架另一个放普通用户和管理员。
我们可以在书架类中创建一个书的数组这样就相当于把书放在了书架中。
package book;public class BookList {public Book[] books;//书架public int numBooks;//书架实际存放的书的本书
}
此时你还可以将书类中的属性都用private修饰因为后面我们的所有操作都是针对书架如果用private修饰就需要对每个属性都实现get 和 set 方法。 书类包含以下属性 String name; String author; int money; String type; boolean isBorrow; 以下方法 public Book(){};
public Book(String name, String author, int money, String kind) {}public String getName() {}public void setName(String name) {}public String getAuthor() {}public void setAuthor(String author) {}public int getMoney() {}public void setMoney(int money) {}public String getType() {}public void setType(String kind) {}public boolean getBorrow() {}public void setBorrow(boolean borrow) {}Override
public String toString() {return name name \ , author author \ , money money , kind type \ , 状态(isBorrow false ? 未被借出 : 已被借出);
} 此处重写toString是为了可以直接使用System.out.println();输出book 因为普通用户和管理员都属于用户所以可与使用继承让 普通用户和管理员都继承用户这个父类。 管理员权限 普通用户权限 这样我们就可以利用多态的思想创建一个用户类由于引用的对象不同调用相同的方法结果也不相同。
可是现在又有一个新问题就是管理员和普通用户所打印出来的菜单是不同的所以就不能在父类中实现所以父类就不能是一个普通的父类它必须是一个抽象类。
因为用户的操作太多而且有重复方法所以这里推荐新建一个包将其全部放入新的包中并将所有的操作都单独封装成一个类。
操作属于用户所以写成如下格式
//用户类
abstract public class User {protected String name;protected Work[] work;//存放用户所有的操作public int counst; //work中的元素个数}
//管理员
public class AdvancedUser extends User{public AdvancedUser(String name){this.name name;this.work new Work[]{new ExitOperation(),new FindOperation(),new AddOperation(),new DelOperation(),new ShowOperation()};this.counst 5;}}
//普通用户
public class NormalUser extends User {public NormalUser(String name){this.name name;this.work new Work[]{new ExitOperation(),new FindOperation(),new BorrowOperation(),new RetOperation(),};this.counst 4;}}这样就可以用数组来调用方法
public void operation(int choice, BookList bookList){work[choice].work(bookList);}
完整代码
package main;import book.BookList;
import user.AdvancedUser;
import user.NormalUser;
import user.User;import java.util.Scanner;public class Main {public static User login(){Scanner in new Scanner(System.in);System.out.println(请输入你的姓名);String name in.nextLine();System.out.println(请选择你的身份1.管理员 0.普通用户);if (in.nextInt() 1){return new AdvancedUser(name);}else {return new NormalUser(name);}}public static void main(String[] args) {BookList bookList new BookList();User user login();while(true){int choice;do{choice user.menu();}while(choice 0 || choice user.counst);user.operation(choice, bookList);}}
}package book;public class Book {private String name;private String author;private int money;private String type;private boolean isBorrow;public Book(){};public Book(String name, String author, int money, String kind) {this.name name;this.author author;this.money money;this.type kind;}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 getMoney() {return money;}public void setMoney(int money) {this.money money;}public String getType() {return type;}public void setType(String kind) {this.type kind;}public boolean getBorrow() {return isBorrow;}public void setBorrow(boolean borrow) {isBorrow borrow;}Overridepublic String toString() {return name name \ , author author \ , money money , kind type \ , 状态(isBorrow false ? 未被借出 : 已被借出);}
}package book;public class BookList {public Book[] books;//书架public int numBooks;//书架实际存放的书的本书public BookList() {this.books new Book[10];//默认书架存放两本书this.books[0] new Book(西游记,吴承恩,39,小说);this.books[1] new Book(红楼梦,曹雪芹,39,小说);this.numBooks 2;}}package operation;import book.Book;
import book.BookList;import java.util.Scanner;public class AddOperation extends Work{Overridepublic void work(BookList bookList) {Scanner in new Scanner(System.in);bookList.books[bookList.numBooks] new Book();System.out.print(请输入书名);bookList.books[bookList.numBooks].setName(in.nextLine());System.out.print(请输入作者);bookList.books[bookList.numBooks].setAuthor(in.nextLine());System.out.print(请输入所属书类);bookList.books[bookList.numBooks].setType(in.nextLine());System.out.print(请输入书价);bookList.books[bookList.numBooks].setMoney(in.nextInt());bookList.numBooks;}
}package operation;import book.BookList;import java.util.Scanner;public class BorrowOperation extends Work{Overridepublic void work(BookList bookList) {int numBooks bookList.numBooks;Scanner in new Scanner(System.in);System.out.print(请输入书名);String name in.nextLine();for (int i 0; i numBooks; i) {if (name.equals(bookList.books[i].getName())) {if (bookList.books[i].getBorrow() false){System.out.println(借阅成功);bookList.books[i].setBorrow(true);return;}else{System.out.println(该书已被借出);return;}}}System.out.println(未收录该书);}
}package operation;import book.BookList;import java.util.Scanner;public class DelOperation extends Work{Overridepublic void work(BookList bookList) {int numBooks bookList.numBooks;Scanner in new Scanner(System.in);System.out.print(请输入书名);String name in.nextLine();for (int i 0; i numBooks; i) {if (name.equals(bookList.books[i].getName())){int j 0;for (j i; j numBooks-1; j) {bookList.books[j] bookList.books[j 1];}bookList.books[j] null;bookList.numBooks--;return;}}}
}package operation;import book.BookList;public class ExitOperation extends Work{Overridepublic void work(BookList bookList) {System.exit(0);}
}package operation;import book.BookList;import java.util.Scanner;public class FindOperation extends Work{Overridepublic void work(BookList bookList) {int numBooks bookList.numBooks;Scanner in new Scanner(System.in);System.out.print(请输入书名);String name in.nextLine();for (int i 0; i numBooks; i) {if (name.equals(bookList.books[i].getName())) {System.out.println(bookList.books[i]);return;}}System.out.println(未收录该书);}
}package operation;import book.BookList;import java.util.Scanner;public class RetOperation extends Work{Overridepublic void work(BookList bookList) {int numBooks bookList.numBooks;Scanner in new Scanner(System.in);System.out.print(请输入书名);String name in.nextLine();for (int i 0; i numBooks; i) {if (name.equals(bookList.books[i].getName())) {if (bookList.books[i].getBorrow()){System.out.println(归还成功);bookList.books[i].setBorrow(false);return;}else{System.out.println(该书未被借出);return;}}}System.out.println(未收录该书);}
}package operation;import book.BookList;public class ShowOperation extends Work{Overridepublic void work(BookList bookList) {for (int i 0; i bookList.numBooks; i) {System.out.println(bookList.books[i]);}}
}package operation;import book.BookList;abstract public class Work {abstract public void work(BookList bookList);
}package user;import operation.*;import java.util.Scanner;public class AdvancedUser extends User{public AdvancedUser(String name){this.name name;this.work new Work[]{new ExitOperation(),new FindOperation(),new AddOperation(),new DelOperation(),new ShowOperation()};this.counst 5;}Overridepublic int menu() {System.out.println(###########################);System.out.println( Hello AdvancedUser this.name);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.println(请选择你的操作);Scanner in new Scanner(System.in);return in.nextInt();}
}package user;import operation.*;import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name){this.name name;this.work new Work[]{new ExitOperation(),new FindOperation(),new BorrowOperation(),new RetOperation(),};this.counst 4;}Overridepublic int menu() {System.out.println(###########################);System.out.println( Hello NormalUser this.name);System.out.println(1.查找图书);System.out.println(2.借阅图书);System.out.println(3.归还图书);System.out.println(0.退出系统);System.out.println(###########################);System.out.println(请选择你的操作);Scanner in new Scanner(System.in);return in.nextInt();}
}package user;import book.BookList;
import operation.Work;abstract public class User {protected String name;protected Work[] work;//存放用户所有的操作public int counst; //work中的元素个数abstract public int menu();public void operation(int choice, BookList bookList){work[choice].work(bookList);}
}运行结果