centos numpy reactjs validation merge drupal oauth proxy threejs handlebarsjs UIkit 百度seo关键词优化 nginx视频 两个正态分布相乘 oracle查看数据库状态 oracle查看数据库 ceb转换成pdf在线转换 less比较级 当前时间减一天 新手学c还是java java二维数组赋值 安装python python环境 后台管理网站模板 python生成随机数 python安装教程 python测试 python的安装 python链接mysql数据库 java基础教程 java环境安装 java基本类型 怎么看java版本 java字符串比较 java获取文件大小 java字符串匹配 java定义字符串 linux运维之道 omg小北 cadworx
当前位置: 首页 > 学习教程  > java

图书管理小系统--整理复习javaSE语法

2021/2/23 11:03:10 文章标签:

图书管理小系统分析对象搭建框架1、定义被继承对象User2、编写用户类3、编写Book类4、编写书架类5、编写各个操作类Main程序入口整合框架1、实现菜单2、调用用户的功能方法实现业务1、添加图书2、查找图书3、展示图书4、借阅书籍5、退出系统6、删除书籍7、归还书籍分析对象 在…

图书管理小系统

  • 分析对象
  • 搭建框架
    • 1、定义被继承对象User
    • 2、编写用户类
    • 3、编写Book类
    • 4、编写书架类
    • 5、编写各个操作类
  • Main程序入口
  • 整合框架
    • 1、实现菜单
    • 2、调用用户的功能方法
  • 实现业务
    • 1、添加图书
    • 2、查找图书
    • 3、展示图书
    • 4、借阅书籍
    • 5、退出系统
    • 6、删除书籍
    • 7、归还书籍

分析对象

在做一个项目的时候,先要搭建项目的架构,首先分析,图书管理系统,需要有书,人,操作等对象,我们将其分为

  • book书:Book(图书)、BookList(存放图书的书架)
  • user人:AdminUser(管理员)、NormalUser(普通用户)
  • operation操作:增删查改
  • Main类,程序的主入口
    在这里插入图片描述

搭建框架

1、定义被继承对象User

在User中编写构造方法以及用户菜单

public abstract class User {

    public String name;

    //定义构造方法
    public User(String name) {
        this.name = name;
    }

	public abstract void menu();
}

2、编写用户类

对应的在AdminUser和NomalUser中继承User并编写构造方法,搭建不用用户菜单框架

public class NormalUser extends User{
    public NormalUser(String name) {
        super(name);
    }
    
    @Override
    public void menu() {
        System.out.println("普通用户的菜单");
    }
}
public class AdminUser extends User{
    public AdminUser(String name) {
        super(name);
    }
    
   	@Override
    public void menu() {
        System.out.println("管理员的菜单");
    }
}

3、编写Book类

提供属性,构造方法,get和set方法,以及打印的toString方法

package 图书管理.book;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: starry
 * Date: 2021 -01 -20
 * Time: 18:08
 */
public class Book {

    /**
     *图书的所有属性
     */
    private String name;    //图书名称
    private String author;  //作者
    private int price;      //价格
    private String type;    //类型
    private boolean status; //借出状态:默认false

    /**
     * 创建构造方法
     * @param name
     * @param author
     * @param price
     * @param type
     */
    public Book(String name, String author, int price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    /**
     * 既然封装了起来,编写get和set方法之后来调用Book中的属性
     * @return
     */
    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;
    }

    /**
     * 提供打印所有属性的toString方法
     * @return
     */
    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ", status=" + status +
                '}';
    }
}

4、编写书架类

把书存入数组中,相当于放置在书架上

public class BookList {

    private Book[] books;   //图书对象,存放在顺序表中
    private int usedSize;

    public BookList(){
        this.books = new Book[10];
        books[0] = new Book("三国演义","罗贯中",55,"小说");
        books[1] = new Book("西游记","吴承恩",74,"小说");
        books[2] = new Book("水浒传","施耐庵",49,"小说");
        this.usedSize = 3;
    }

    //尾插法
    public void setBooks(int pos,Book book) {
        this.books[pos] = book;
    }

    public Book getBook(int pos) {
        return this.books[pos];
    }

    public int getUsedSize() {
        return usedSize;
    }

    public void setUsedSize(int usedSize) {
        this.usedSize = usedSize;
    }
}

5、编写各个操作类

先不着急实现每个操作类的具体工作,先搭建框架

  1. 先创建一个接口,让各种操作类实现这个接口
public interface IOperation {
    void work(BookList bookList);
}
  1. 添加数据类
public class AddOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("添加书籍");
    }
}
  1. 借阅书籍类
public class BorrowOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("借阅书籍");
    }
}
  1. 删除书籍
public class DelOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("删除书籍");
    }
}
  1. 展示书籍
public class DisplayOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("展示书籍");
    }
}
  1. 退出系统
public class ExitOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统");
    }
}
  1. 查找书籍
public class FindOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("查找书籍");
    }
}
  1. 归还书籍
public class ReturnOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还书籍");
    }
}

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) {
        //1.登录
        User user = login();    //向上转型
        user.menu();        //动态绑定
    }

}

在这里插入图片描述
现在我们已经实现了大概的程序框架,接下来就需要把每一部分完善了

整合框架

1、实现菜单

  • User类
public abstract class User {

    public String name;
    //定义构造方法

    public User(String name) {
        this.name = name;
    }

    public abstract int menu();
}

  • AdminUser类
public class AdminUser extends User{
    public AdminUser(String name) {
        super(name);
    }

    /**
     * 返回 你要执行的对应的操作
     * @return
     */
    @Override
    public int menu() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("管理员的菜单");
        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;
    }
}
  • NormalUser类
public class NormalUser extends User{
    public NormalUser(String name) {
        super(name);
    }

    /**
     * 返回 你要执行的对应的操作
     * @return
     */
    @Override
    public int menu() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("普通用户的菜单");
        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;
    }
}

2、调用用户的功能方法

  • User类
public abstract class User {

    public String name; //用户名
    public IOperation[] operations; //对应用户的操作数组

    //定义构造方法
    public User(String name) {
        this.name = name;
    }
    //用户菜单
    public abstract int menu();
    //调用对用操作的work方法
    public void doOperation(int choice, BookList bookList) {
        this.operations[choice].work(bookList);
    }

}
  • 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(),
        };  //调用不同功能
    }

    /**
     * 返回 你要执行的对应的操作
     * @return
     */
    @Override
    public int menu() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("管理员的菜单");
        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;
    }
}

  • NormalUser类
public class NormalUser extends User{
    public NormalUser(String name) {
        super(name);
        this.operations = new IOperation[] {
                new ExitOperation(),
                new FindOperation(),
                new BorrowOperation(),
                new ReturnOperation(),
        };  //调用不同功能
    }

    /**
     * 返回 你要执行的对应的操作
     * @return
     */
    @Override
    public int menu() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("普通用户的菜单");
        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;
    }
}

  • main函数
    public static void main(String[] args) {
        BookList bookList = new BookList();
        //1.登录
        User user = login();    //向上转型
        while (true) {
            //拿choice去调用对应类中的work方法
            int choice = user.menu();   //动态绑定
            user.doOperation(choice,bookList);
        }
    }

在这里插入图片描述

实现业务

1、添加图书

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();
        //放在书架有的书后面
        bookList.setBooks(currentSize,book);

        bookList.setUsedSize(currentSize+1);
    }
}

在这里插入图片描述

2、查找图书

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("没有这本书!");
    }
}

在这里插入图片描述

3、展示图书

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

在这里插入图片描述

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("借阅成功!");
                System.out.println(book);
                return;
            }
        }
        System.out.println("借阅失败,没有你要借阅的图书");
    }
}

在这里插入图片描述

5、退出系统

public class ExitOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系统");
        System.exit(1);
    }
}

在这里插入图片描述

6、删除书籍

public class DelOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("删除书籍");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要删除的书名");
        String name = scanner.nextLine();

        int i;
        for(i = 0; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            if (book.getName().equals(name)) {
                break;
            }
        }

        if(i >= bookList.getUsedSize()) {
            System.out.println("没有你要删除的这本书!");
            return;
        }
        int pos = i;
        for(int j = pos; j < bookList.getUsedSize()-1; j++) {
            Book book = bookList.getBook(j+1);
            bookList.setBooks(j,book);
        }
        int currentSize = bookList.getUsedSize();
        bookList.setUsedSize(currentSize-1);
        System.out.println("删除书籍完毕!");
    }
}

在这里插入图片描述

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)) {
                //说明有这本书
                //逻辑:把这本书的借阅状态修改为false
                book.setStatus(false);
                System.out.println("归还成功!");
                System.out.println(book);
                return;
            }
        }
        System.out.println("归还失败,没有你要归还的图书");
    }

}

在这里插入图片描述
在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_2036706.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?