结合数组和面向对象实现增删改查操作

需求:

设计一个图书管理系统,要求具有以下功能:
1.查看图书
2.增加图书
3.修改图书
4.删除图书

实现过程:

首先要搭建项目的package,然后根据需求分析对象,设计类

图书实体类:

@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@EqualsAndHashCode
public class Book {
    private int id;
    private String name;
    private String author;
    private String adress;
    private int price;
}

菜单列表和数据初始化

package com.bun.library.action;

import com.bun.library.entity.Book;
import com.bun.library.service.BookService;

import java.util.Scanner;

/**
 * @Author: Bun
 * @Version: 1.0
 * @Date: 2022/9/29-16:23
 * @Since: jdk1.8
 * @Name:
 */
public class BookAction {
    //扫描仪
    static Scanner scanner = new Scanner(System.in);

    //用来存储多本书
    static Book[] books = new Book[4];

    //业务对象
    static BookService bookService = new BookService();

    /*
    初始化数据
     */
    public static void init() {
        System.out.println("正在初始化");
        books[0] = new Book(1001, "西游记", "吴承恩", "海南出版社", 100);
        books[1] = new Book(1002, "红楼梦", "曹雪芹", "海南出版社", 120);
        books[2] = new Book(1003, "水浒传", "施耐庵", "海南出版社", 80);
        books[3] = new Book(1004, "三国演义", "罗贯中", "海南出版社", 90);
        System.out.println("初始化完成");
    }

    /*
    启动菜单
     */
    public static void startMenu() {
        boolean G = true;
        while (G) {
            System.out.println("----------图书管理系统----------");
            System.out.println("1.查看图书");
            System.out.println("2.添加图书");
            System.out.println("3.修改图书");
            System.out.println("4.删除图书");
            System.out.println("0.退出系统");
            System.out.println("请选择:");
            int choose = scanner.nextInt();

            switch (choose) {
                case 1:
                    bookService.showBook(books);
                    break;
                case 2:
                    books = bookService.addBook(books, scanner);
                    break;
                case 3:
                    bookService.amendBook(books, scanner);
                    break;
                case 4:
                    books = bookService.deleteBook(books, scanner);
                case 0:
                    System.out.println("谢谢使用,正在退出");
                    G = false;
                    break;
            }
        }
    }
}

业务类

package com.bun.library.service;

import com.bun.library.entity.Book;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @Author: Bun
 * @Version: 1.0
 * @Date: 2022/9/29-16:46
 * @Since: jdk1.8
 * @Name:
 */
public class BookService {

    /*
    查看图书
     */
    public void showBook(Book[] books) {
        for (Book book : books) {
            System.out.println(book);
        }
    }

    /*
    添加图书
     */
    public Book[] addBook(Book[] books, Scanner scanner) {
        System.out.println("--->添加图书");
        //图书对象
        Book book = new Book();
        //录入信息
        System.out.println("请输入图书编号:");
        book.setId(scanner.nextInt());
        System.out.println("请输入图书名称:");
        book.setName(scanner.next());
        System.out.println("请输入图书作者:");
        book.setAuthor(scanner.next());
        System.out.println("请输入图书出版社:");
        book.setAdress(scanner.next());
        System.out.println("请输入图书价格:");
        book.setPrice(scanner.nextInt());

        books = Arrays.copyOf(books, books.length + 1);
        books[books.length - 1] = book;
        System.out.println("添加完成");

        return books;
    }

    /*
    修改图书
     */
    public void amendBook(Book[] books, Scanner scanner) {
        System.out.println("--->修改图书");
        System.out.println("请输入想要修改的书籍的编号: ");
        int inputBookId = scanner.nextInt();
        //查找索引
        int index = getIndexByBookId(inputBookId, books);
        //先判断图书是否存在
        if (index == -1) {
            System.out.println("[修改失败,该图书不存在!]");
            return;
        }
        //允许修改的前提--该图书存在
        Book updateBook = books[index];
        System.out.println("原图书名称:" + updateBook.getName() + "\t请输入新的图书名称:");
        updateBook.setName(scanner.next());
        System.out.println("原图书价格:" + updateBook.getPrice() + "\t请输入新的图书价格:");
        updateBook.setPrice(scanner.nextInt());
        System.out.println("原图书作者:" + updateBook.getAuthor() + "\t请输入新的图书作者:");
        updateBook.setAuthor(scanner.next());
        System.out.println("原图书出版社:" + updateBook.getAdress() + "\t请输入新的图书出版社:");
        updateBook.setAdress(scanner.next());
        System.out.println("[修改成功!]");
    }

    /*
    图书索引
     */
    private int getIndexByBookId(int inputBookId, Book[] books) {
        //根据图书的编号来查找图书的索引位置
        int index = -1;
        for (int i = 0; i < books.length; i++) {
            //根据索引获取图书
            Book book = books[i];
            //判断图书的编号
            if (inputBookId == book.getId()) {
                index = i;
                break;
            }
        }
        return index;
    }

    /*
    图书的删除
     */
    public Book[] deleteBook(Book[] books, Scanner scanner) {
        System.out.println("--->删除图书");
        System.out.println("请输入想要修改的书籍的编号: ");
        int inputBookId = scanner.nextInt();
        //查找索引
        int index = getIndexByBookId(inputBookId, books);
        //先判断图书是否存在
        if (index == -1) {
            System.out.println("[删除失败,该图书不存在!]");
            return books;
        }
        //删除
        for (int i = index; i < books.length - 1; i++) {
            books[i] = books[i + 1];
        }
        //缩容copyof
        books = Arrays.copyOf(books, books.length - 1);
        System.out.println("[删除图书!]");
        return books;
    }
}

启动

package com.bun.library.test;

import com.bun.library.action.BookAction;
import com.bun.library.entity.Book;

import java.util.Scanner;

/**
 * @Author: Bun
 * @Version: 1.0
 * @Date: 2022/9/29-16:23
 * @Since: jdk1.8
 * @Name:
 */
public class Start {
    public static void main(String[] args) {
        BookAction.init();
        BookAction.startMenu();
    }
}

ps:因为是刚开始接触的缘故,很多东西用的比较生疏,理解也不透彻,只能说是勉强会用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值