JAVA 下的图书管理系统
一 实现的要求
1、简单的登录
2、管理端
整理书籍(该功能为可扩展功能)
查阅书籍
增加书籍
删除书籍
打印书籍列表
退出
3、用户端
查询书籍
借阅书籍
归还书籍
退出
二 类的设计
1 在Book包下创建Book类 和Booklist类
Book类主要实现了书的一些基本知识和实现的方法
public class Book {
private String name;
private String author;
private int price;
private String type;
private boolean status;//false
public Book(String name, String author, int price, String type) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
", status=" + status +
((status==true)? "借出": "未借出")+
'}';
}
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 getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
}
BookList类相当于书架,就是在这里面实现书的增删查改
public class BookList {
private Book[] books;
private int usedSize;
public int getUsedSize() {
return usedSize;
}
public void setUsedSize(int usedSize) {
this.usedSize = usedSize;
}
public BookList() {
this.books = new Book[10];
books[0]=new Book("三国演义","罗贯中",72,"小说");
books[1]=new Book("西游记","吴承恩",32,"小说");
books[2]=new Book("水浒传","施耐庵",52,"小说");
this.usedSize=3;
}
//尾插法
public void setBooks(int pos,Book book){
this.books[pos]=book;
}
public Book getBook(int pos){
return this.books[pos];
}
}
2 在operation包下具体实现书的增删查改
这里主要是想用接口的方法来实现一下
1先定义一个接口,引入BookList,方便操作,之后的类里面继承 进行方法的重写即可
public interface IOperation {
default void work(BookList bookList) {
}
}
2开始实现
增加图书
public class AddOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("添加书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入图书的名字:");
String name = scanner.nextLine();
System.out.println("请输入图书的作者");
String author = scanner.nextLine();
System.out.println("请输入图书的价格");
int price = scanner.nextInt();
System.out.println("请输入图书的类型");
String type = scanner.next();
Book book = new Book(name,author,price,type);
int currentSize = bookList.getUsedSize();//3
bookList.setBooks(currentSize,book);//3号位置放新添加的书
bookList.setUsedSize(currentSize+1);
}
}
3查询图书
public class FindOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("查询书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("输入要查找的书名");
String name = scanner.nextLine();
for (int i = 0; i < bookList.getUsedSize(); i++) {
Book book = bookList.getBook(i);
if(book.getName().equals(name)) {
System.out.println("有这本书!");
System.out.println(book);
return;
}
}
System.out.println("没有这本书!");
}
}
4借阅图书
public class BorrowOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("借阅书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要借阅的书名");
String name = scanner.nextLine();
for (int i = 0; i < bookList.getUsedSize(); i++) {
Book book = bookList.getBook(i);
if(book.getName().equals(name)) {
//说明有这本书!
//逻辑:把这本书的借阅状态修改为true
book.setStatus(true);
System.out.println(book);
return;
}
}
System.out.println("没有你要借阅的图书!");
}
}
5 归还图书
public class ReturnOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("归还书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要归还的书名");
String name = scanner.nextLine();
for (int i = 0; i < bookList.getUsedSize(); i++) {
Book book = bookList.getBook(i);
if(book.getName().equals(name)) {
book.setStatus(false);
System.out.println(book);
return;
}
}
System.out.println("没有你要归还的这本书!");
}
}
6 展示图书
public class DisplayOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("展示书籍");
for (int i = 0; i < bookList.getUsedSize(); i++) {
Book book = bookList.getBook(i);
System.out.println(book);
}
}
}
7删除图书
public class ReturnOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("归还书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要归还的书名");
String name = scanner.nextLine();
for (int i = 0; i < bookList.getUsedSize(); i++) {
Book book = bookList.getBook(i);
if(book.getName().equals(name)) {
book.setStatus(false);
System.out.println(book);
return;
}
}
System.out.println("没有你要归还的这本书!");
}
}
8 退出系统
public class ExitOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("退出系统");
System.exit(1);
}
}
3.主要的任务菜单
分为普通用户(NormalUser)和管理员用户(AdminUser)以及一个大的前提User
1 User 所需用户的信息
public abstract class User {
public String name;
public IOperation[] operations;
public User(String name){
this.name=name;
}
public abstract int menu();
public void doOperation(int choice, BookList bookList){
this.operations[choice].work(bookList);
}
}
2.管理员用户(AdminUser)
public class AdminUser extends User{
public AdminUser(String name) {
super(name);
this.operations=new IOperation[]{
new ExitOperation(),
new FindOperation(),
new AddOperation(),
new DelOperation(),
new DisplayOperation()
};
}
@Override
public int menu() {
Scanner scanner = new Scanner(System.in);
System.out.println("===============================");
System.out.println("hello " + 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("===============================");
int choice = scanner.nextInt();
return choice;
}
}
3 普通用户(NormalUser)
public class NormalUser extends User{
public NormalUser(String name) {
super(name);
this.operations = new IOperation[]{
new ExitOperation(),
new FindOperation(),
new BorrowOperation(),
new ReturnOperation()
};
}
@Override
public int menu() {
Scanner scanner = new Scanner(System.in);
System.out.println("===============================");
System.out.println("hello " + this.name + "欢迎来到图书系统!");
System.out.println("1.查找图书");
System.out.println("2.借阅图书");
System.out.println("3.归还图书");
System.out.println("0.退出系统");
System.out.println("===============================");
int choice = scanner.nextInt();
return choice;
}
}
4.主函数的实现
Main函数
public class Main {
public static User login() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = scanner.nextLine();
System.out.println("请输入你的身份:1-》管理员 0:普通用户");
int choice = scanner.nextInt();
if(choice == 1) {
return new AdminUser(name);
}else {
return new NormalUser(name);
}
}
public static void main(String[] args) {
BookList bookList=new BookList();
User user=login();
while(true){
int choice=user.menu();
user.doOperation(choice, bookList);
}
}
}