Java: 构造器,Getter、Setter,重写toString()方法、权限修饰符、static关键字、ArrayList集合、泛型、Scanner类、while循环、for循环、switch case语句、if判断
基础知识要求:
文件目录结构
运行效果
创建一个Book类
是一个图书类,包含私有的name,id,author三个图书属性,并生成空参构造器、全参构造器,和Getter、Setter,重写toString()方法,方便输出。
public class Book {
private String name;
private int id;
private String author;
public Book() {
}
public Book(String name, int id, String author) {
this.name = name;
this.id = id;
this.author = author;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "{" +
"书名:'" + name + '\'' +
", id:" + id +
", 作者:'" + author + '\'' +
'}';
}
}
创建Reader类
是一个借阅人类,包含私有的name,gender,age,借阅的book,4个借阅人属性,并生成空参构造器、全参构造器,和Getter、Setter,重写toString()方法,方便输出。
public class Reader {
private String name;
private String gender;
private int age;
private Book book;
public Reader() {
}
public Reader(String name, String gender, int age, Book book) {
this.name = name;
this.gender = gender;
this.age = age;
this.book = book;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
@Override
public String toString() {
return "{" +
"姓名:'" + name + '\'' +
", 性别:'" + gender + '\'' +
", 年龄:" + age +
'}';
}
}
创建一个BookMgt类
用于对图书、借阅人、借阅记录的增删改查,这里我们使用的是ArrayList进行自动扩容
package bookMgt;
import java.util.ArrayList;
import java.util.Scanner;
public class BookMgt {
private static ArrayList<Book> bookList= new ArrayList<>();
private static ArrayList<Reader> readerList= new ArrayList<>();
private static Scanner sc = new Scanner(System.in);
public static void start(){
outWhile:
while (true){
System.out.println("--------欢迎使用图书管理系统--------");
System.out.println("1.查看所有图书信息");
System.out.println("2.查看所有借阅人信息");
System.out.println("3.查看所有图书借阅记录");
System.out.println("4.添加新的图书");
System.out.println("5.添加图书借阅记录");
System.out.println("6.修改图书信息");
System.out.println("7.删除图书信息");
System.out.println("8.批量删除图书信息");
System.out.println("0.退出图书管理系统");
int number = sc.nextInt();
switch (number){
case 1:
getBookList();
break ;
case 2:
getReaderList();
break ;
case 3:
getRecordList();
break ;
case 4:
addBook();
break ;
case 5:
addRecord();
break ;
case 6:
updateBook();
break ;
case 7:
removeBook();
break ;
case 8:
removeMultipleBook();
break ;
case 0:
break outWhile;
}
}
}
private static void removeMultipleBook() {
System.out.println("一次性输入多个书名并用一个空格间隔,最后以over结尾");
while (true){
String bkname = sc.next();
if (bkname.equals("over")) break;
bookList.remove(getBookIndex(bkname));
}
}
private static void removeBook() {
System.out.println("请输入需要删除的的书名");
String bkName = sc.next();
bookList.remove(getBookIndex(bkName));
}
private static void updateBook() {
System.out.println("请输入需要修改的书名");
String bkName = sc.next();
System.out.println("请输入书名");
String name = sc.next();
System.out.println("请输入id");
int id = sc.nextInt();
System.out.println("请输入作者名");
String author = sc.next();
Book book = new Book(name,id,author);
bookList.set(getBookIndex(bkName),book);
}
private static void getRecordList() {
for (int i = 0; i < readerList.size(); i++) {
System.out.println(readerList.get(i) + "借阅了《"+readerList.get(i).getBook().getName()+"》");
}
}
private static void getReaderList() {
for (int i = 0; i < readerList.size(); i++) {
System.out.println(readerList.get(i));
}
}
private static void addRecord() {
System.out.println("请输入借阅人姓名");
String name = sc.next();
System.out.println("请输入借阅人性别");
String gender = sc.next();
System.out.println("请输入借阅人年龄");
int age = sc.nextInt();
System.out.println("请输入借阅的书名");
String bkName = sc.next();
Reader reader = new Reader(name,gender,age,getBook(bkName));
readerList.add(reader);
}
private static Book getBook(String bkName){
return bookList.get(getBookIndex(bkName));
}
private static void getBookList() {
for (int i = 0; i < bookList.size(); i++) {
System.out.println(bookList.get(i));
}
}
private static int getBookIndex(String bkName){
for (int i = 0; i < bookList.size(); i++) {
if (bookList.get(i).getName().equals(bkName)){
return i;
}
}
return -1;
}
private static void addBook() {
System.out.println("请输入书名");
String name = sc.next();
System.out.println("请输入id");
int id = sc.nextInt();
System.out.println("请输入作者名");
String author = sc.next();
Book book = new Book(name,id,author);
bookList.add(book);
}
}
创建Test类
在Test类创建出main函数,调用BookMgt的start()方法
public class Test {
public static void main(String[] args) {
BookMgt.start();
}
}