图书管理系统:List集合版
图书管理系统List集合版
1.需求描述:
通过我们学习过的面向对象和集合部分完成一个综合案例:简版图书管理系统!
本系统共分为两个角色,分别为用户和管理员,都只能进行最基本图书操作。
管理员模块功能
1)查看书籍列表:查询所有的书籍信息。
2)查看书籍信息:通过键盘录入要查询的书籍名称,如果书籍存在,则输出书籍的信息,如果不存在就输出不存在。
3)删除书籍信息:通过键盘录入要删除书籍的名字,如果书籍存在,则删除书籍的信息,如果不存在就输出书籍不存在,无法删除。
4)添加书籍:添加书籍到集合中。
5)退出系统:结束程序。
用户模块功能
1.查阅书籍信息:通过键盘录入要查询的书籍名称,如果书籍存在,则输出书籍的信息,如果不存在就输出不存在。
2.借阅书籍:输入借阅的书籍名字来借阅书籍,如果书籍不存在或已被借阅,则输出对应的情况。
3.归还书籍:归还已经借阅的书籍。
4.退出系统:结束程序。
2.实现步骤:
1)定义Book类,成员变量为书本的基本信息
成员变量:
姓名:name
作者:author
价格:price
种类:type
是否被借出:isBorrowed
构造方法:
无参构造
全参构造
每个成员变量对应给出get/set方法:
toString方法:
HashCode&equals方法:
2)定义BookList类,作为书籍的库存
成员变量:
书籍列表:ArrayList books
构造方法:
无参构造:向books集合中添加初始化书籍数据
全参构造
每个成员变量对应给出get/set方法:
3)定义Manager类,声明图书管理员的操作
成员方法:
查看所有书籍列表:lookAllBook()
查看书籍信息:lookBook()
删除书籍信息:deleteBook()
添加书籍:addBook()
4)定义User类,声明用户的操作
成员方法:
查看书籍信息:lookBook()
借阅书籍:borrowBook()
归还书籍:returnBook()
5)图书管理系统主界面的搭建:BookManager类
用输出语句完成主界面的编写
用Scanner实现键盘录入数据
通过键盘录入与if语句来选择身份:1.系统管理员身份 2.用户身份
不同的身份进入对应的管理系统,通过面向对象的思想完成对应的功能
代码实现:
Book类
package com.tohka.bookmanager;
import java.util.Objects;
public class Book {
// 用来表示一本书的信息
private String name;//书名
private String author;//作者
private double price;//价格
private String type;//种类
private boolean isBorrowed = false;//是否被借出
//无参构造
public Book() {
}
//全参构造
Book(String name, String author, double price, String type, boolean isBorrowed) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
this.isBorrowed = isBorrowed;
}
//getter&setter
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 double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isBorrowed() {
return isBorrowed;
}
public void setBorrowed(boolean borrowed) {
isBorrowed = borrowed;
}
//toString
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
", isBorrowed=" + isBorrowed +
'}';
}
//equals&hashCode
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return Double.compare(book.price, price) == 0 &&
isBorrowed == book.isBorrowed &&
Objects.equals(name, book.name) &&
Objects.equals(author, book.author) &&
Objects.equals(type, book.type);
}
@Override
public int hashCode() {
return Objects.hash(name, author, price, type, isBorrowed);
}
}
BookList类
package com.tohka.bookmanager;
import java.util.ArrayList;
public class BookList {
// 书籍列表
private ArrayList<Book> books = new ArrayList<>();
//构造初始化向书籍列表中存放数据
public BookList(){
books.add(new Book("水浒传", "施耐庵", 25, "文学", false));
books.add(new Book("红楼梦", "曹雪芹", 30, "文学", false));
books.add(new Book("三国演义", "罗贯中", 28, "文学", false));
books.add(new Book("西游记", "吴承恩", 35, "文学", false));
books.add(new Book("数据结构", "严蔚敏", 35, "计算机", false));
}
public ArrayList<Book> getBooks() {
return books;
}
public void setBooks(ArrayList<Book> books) {
this.books = books;
}
}
Manager类
package com.tohka.bookmanager;
import java.util.ArrayList;
import java.util.ListIterator;
import java.util.Scanner;
public class Manager {
// ----- 1.查看书籍列表 -----
// ----- 2.查询书籍信息 -----
// ----- 3.删除书籍信息 -----
// ----- 4.添加书籍 -----
public void lookAllBook(BookList bookList) {
// 1.查看所有书籍列表
ArrayList<Book> books = bookList.getBooks();
for (Book book : books) {
System.out.println(book);
}
}
// 2.查询书籍信息
public void lookBook(BookList bookList) {
System.out.println("请输入要查询书籍的名字!");
Scanner scanner = new Scanner(System.in);
String bookName = scanner.next();
ArrayList<Book> books = bookList.getBooks();
boolean flag = false;
for (Book book : books) {
//如果书籍存在,则输出书籍的信息
if(book.getName().equals(bookName)) {
System.out.println(book);
flag = true;
}
}
//如果不存在就输出不存在
if(flag == false) {
System.out.println("查询的书籍不存在!");
}
}
//3.删除书籍信息
public void deleteBook(BookList bookList) {
System.out.print("请输入想要删除书籍的名字: ");
Scanner scanner = new Scanner(System.in);
String bookName = scanner.next();
boolean flag = false;
ArrayList<Book> books = bookList.getBooks();
ListIterator<Book> bookListIterator = books.listIterator();
while (bookListIterator.hasNext()) {
Book book = bookListIterator.next();
if(bookName.equals(book.getName())) {
bookListIterator.remove();
flag = true;
System.out.println("删除成功");
}
}
if(flag == false) {
System.out.println("书籍不存在,无法删除信息");
}
}
//4.添加书籍
public void addBook(BookList bookList) {
System.out.println("请按照 书籍名 作者 价格 类型 的顺序输入增加书籍的信息!");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入书籍名");
String name = scanner.next();
System.out.println("请输入书籍作者");
String author = scanner.next();
System.out.println("请输入书籍价格");
double price = scanner.nextDouble();
System.out.println("请输入书籍类型");
String type = scanner.next();
Book book = new Book(name, author, price, type,false);
bookList.getBooks().add(book);
System.out.println("添加成功");
}
}
User类
package com.tohka.bookmanager;
import java.util.ArrayList;
import java.util.Scanner;
// 普通用户
public class User {
// ----- 1.查阅书籍信息 -----
// ----- 2.借阅书籍 -----
// ----- 3.归还书籍 -----
//1.查阅书籍信息
public void lookBook(BookList bookList) {
System.out.println("请输入要查询书籍的名字!");
Scanner scanner = new Scanner(System.in);
String bookName = scanner.next();
boolean flag = false;
for (Book book : bookList.getBooks()) {
if (book.getName().equals(bookName)) {
System.out.println(book);
flag = true;
}
}
if (flag == false) {
System.out.println("您要查询的书籍不存在!");
}
}
//2.借阅书籍
public void borrowBook(BookList bookList) {
System.out.print("请输入想要借阅书籍的名字: ");
Scanner scanner = new Scanner(System.in);
String bookName = scanner.next();
boolean flag = false;
for (Book book : bookList.getBooks()) {
if (book.getName().equals(bookName)) {
flag = true;
if (book.isBorrowed() == false) {
book.setBorrowed(true);
System.out.println("借阅成功");
System.out.println(book);
}
}
}
if (flag == false) {
System.out.println("您要借阅的书籍不存在或已被借阅!");
}
}
//3.归还书籍
public void returnBook(BookList bookList) {
System.out.print("请输入想要归还书籍的名字: ");
Scanner scanner = new Scanner(System.in);
String BookName = scanner.next();
ArrayList<Book> books = bookList.getBooks();
for (Book book : books) {
if(book.getName().equals(BookName)) {
book.setBorrowed(false);
System.out.println("归还书籍成功!");
}
}
}
}
管理系统主界面
package com.tohka.bookmanager;
import java.util.Scanner;
public class BookManager {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Manager manager = new Manager();
User user = new User();
BookList bookList = new BookList();
System.out.println("欢迎进入tohka图书管理系统!");
System.out.println("请选择身份:1.系统管理员身份 2.用户身份");
int num = scanner.nextInt();
if(num==1) {
System.out.println("欢迎进入管理员后台");
while (true) {
System.out.println("请输入需要操作的编号:1.查看书籍列表 2.查询书籍信息 3.删除书籍信息 4.添加书籍 5.退出体统");
int number = scanner.nextInt();
switch (number){
case 1 :
//1.查看书籍列表
manager.lookAllBook(bookList);
break;
case 2 :
//2.查询书籍信息
manager.lookBook(bookList);
break;
case 3 :
//3.删除书籍信息
manager.deleteBook(bookList);
break;
case 4 :
//4.添加书籍
manager.addBook(bookList);
break;
case 5 :
//5.退出体统
System.exit(0);
default:
System.out.println("输入的数据有误, 请重新输入1-5进行选择");
break;
}
}
}else if(num == 2) {
System.out.println("欢迎进入用户界面");
while (true) {
System.out.println("请输入需要操作的编号:1.查阅书籍信息 2.借阅书籍 3.归还书籍 4.退出体统");
int number = scanner.nextInt();
switch (number) {
case 1:
//1.查阅书籍信息
user.lookBook(bookList);
break;
case 2:
//2.借阅书籍
user.borrowBook(bookList);
break;
case 3:
//3.归还书籍
user.returnBook(bookList);
break;
case 4:
//4.退出体统
System.exit(0);
default:
System.out.println("输入的数据有误, 请重新输入1-4进行选择");
break;
}
}
}else {
System.out.println("身份不正确");
}
}
}