Java实现简易图书管理器
功能阐述
- 用户分为老师和学生
- 老师的功能有上架图书、下架图书、查看有什么书
- 学生功能有借书、还书、查看有什么书
知识点概括
- 类和对象语法
- List<>的使用
- 抽象类与抽象方法
- 继承、覆写
Book类的定义
public class Book {
String title;
int totalNumber = 0;
int curentNumber;
}
分别定义了书名、总数、当前数量
书架类的定义
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class BookShelf {
private static final BookShelf instance = new BookShelf();//建立一个书架
private BookShelf() {
//构造方法
}
public static BookShelf getBookShelf() {
return instance;
}
List<Book> list = new ArrayList<>();//建立一个Book的list
public void add(Book book) {//增加一门书
list.add(book);
}
public void remove(String title) {//删除一本书
for (int i = 0; i < list.size(); i++) {
if (list.get(i).title.equals(title)) {
list.remove(i);
}
}
}
public Book[] getBooks() {//转化为数组形式
Book[] array = new Book[list.size()];
list.toArray(array);
return array;
}
}
通过instance实例化出一个书架
然后用List<>建立一个Book类型的ArrayList
完成add书、remove书、得到数组的方法
Main方法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); //scanner录入键入数据
System.out.println("请选择你的身份: 1.老师 2.学生");
int selectA = scanner.nextInt();
while (true) {
User user = login(selectA); //创建user的对象,对象是由login这个方法返回而来的
System.out.println("欢迎 " + user.name + user.showIdentity() + " 登录");
user.menu();
System.out.println("请选择");
int select = scanner.nextInt();
user.operation(select);
}
}
private static User login(int select) {//登录方法
Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名:>");
String name = scanner.nextLine();
User u;//创建一个u的对象,但是不能实例化,因为User是一个抽象方法
if (select == 1) {//如果选择1,则实例化一个老师用户,选择0则实例化一个学生用户
u = new TeacherUser();
} else {
u = new StudentUser();
}
u.name = name;
return u;//返回u的User类型
}
}
建立一个死循环进行登录查书什么的
这时,需要一个抽象类User和实现抽象类的teacher和student
User抽象类
public abstract class User {
String name;
public abstract void menu();
public abstract void operation(int select);
public abstract String showIdentity();
}
创造出三个抽象方法
TeacherUser与StudentUser的类去实现抽象类
import java.util.Scanner;
public class StudentUser extends User{
@Override
public void menu() {
System.out.println("1. 借书");
System.out.println("2. 还书");
System.out.println("3. 查看书籍");
}
@Override
public String showIdentity() {
return "同学";
}
@Override
public void operation(int select) {
switch(select) {
case 1:
borrowBooks();
break;
case 2:
returnBooks();
break;
case 3:
listBooks();
break;
}
}
private void listBooks() {
BookShelf bookShelf = BookShelf.getBookShelf();
Book[] books = bookShelf.getBooks();
System.out.println("书名,当前数量,总数");
for (Book book : books) {
System.out.println(book.title + "," + book.curentNumber + "," + book.totalNumber);
}
}
private void returnBooks() {//还书
Scanner sc = new Scanner(System.in);
System.out.println("请输入书名:>");
String title = sc.nextLine();
BookShelf bookShelf = BookShelf.getBookShelf();
Book[] books = bookShelf.getBooks();
for (Book book : books) {
if (book.title.equals(title)) {
if (book.curentNumber > 0) {
book.curentNumber++;
System.out.println("还书成功");
return;
}
}
}
System.out.println("没这本书");
}
private void borrowBooks() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入书名:>");
String title = sc.nextLine();
BookShelf bookShelf = BookShelf.getBookShelf();
Book[] books = bookShelf.getBooks();
for (Book book : books) {
if (book.title.equals(title)) {
if (book.curentNumber > 0) {
book.curentNumber--;
System.out.println("借书成功");
return;
} else {
System.out.println("没了");
return;
}
}
}
System.out.println("没这本书");
}
}
import java.util.Scanner;
public class TeacherUser extends User{
@Override
public void menu() {
System.out.println("1.上架图书");
System.out.println("2.下架图书");
System.out.println("3.现有书籍展示");
}
@Override
public String showIdentity() {
return "老师";
}
@Override
public void operation(int select) {
switch (select) {
case 1:
addBooks();
break;
case 2:
popBooks();
break;
case 3:
showBooks();
break;
}
}
private void addBooks() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入书名");
String title = scanner.nextLine();
System.out.println("请输入上架数量");
int number = scanner.nextInt();
Book book = new Book();//new一个book对象,这个书的书名是键入的书名,这个书的数量是键入的数量
book.title = title;
book.totalNumber = number;
book.curentNumber = number;
BookShelf bookShelf = BookShelf.getBookShelf();
bookShelf.add(book);
System.out.println("上架成功");
}
private void popBooks() {//下架图书
Scanner sc = new Scanner(System.in);
System.out.println("请输入书名:>");
String title = sc.nextLine();
//调出书架,进行删除
BookShelf bookShelf = BookShelf.getBookShelf();//静态调用
bookShelf.remove(title);
System.out.println("下架成功");
}
private void showBooks() {//显示余量
BookShelf bookShelf = BookShelf.getBookShelf();
Book[] books = bookShelf.getBooks();
System.out.println("书名, 当前数量, 总数");
for (Book book : books) {
System.out.println(book.title + "," + book.curentNumber + "," + book.totalNumber);
}
}
}