Java图书管理系统

Java实现简易图书管理器

功能阐述

  1. 用户分为老师和学生
  2. 老师的功能有上架图书、下架图书、查看有什么书
  3. 学生功能有借书、还书、查看有什么书

知识点概括

  1. 类和对象语法
  2. List<>的使用
  3. 抽象类与抽象方法
  4. 继承、覆写

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);
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值