一个图书管理系统的综合小练习

简介: 一个图书管理系统的综合小练习

利用面向对象的思想设计一个图书管理系统。图书的属性有:编号,书名,作者,价格。要求提供如下功能:

1、提供操作菜单,可以选择要进行的操作。

2、可以添加图书,添加图书时,编号需要唯一,添加成功,返回到菜单。

3、可以查询图书,显示所有图书信息,然后返回到菜单。

4、可以根据书名,查询单本图书信息,显示信息后,返回到菜单。

5、可以删除图书,通过编号删除,删除成功后,返回到菜单。

6、可以修改图书的信息,但编号不可以修改,修改成功后,返回到菜单。

7、可以退出系统,结束程序运行。

提示:

1、所有图书信息由键盘录入

2、图书的价格可以定义为字符串类型,因为在键盘录入时,不可以先使用nextInt()方法获取整数然后再使用next()方法获取字符串,这样会导致next()方法获取不到数据。

训练目标

ArrayList集合API的综合运用、编程逻辑的锻炼

训练提示

1、首先需要创建一个图书类,封装图书信息。

2、提供操作菜单,可以通过键盘录入不同的数字来表示不同的操作,选择结构语句可以实现该需求。

3、管理图书,需要将图书存放起来,首先需要创建集合容器。

4、添加图书,即将图书存入集合中,但存入之前需要判定编号的唯一性,如果编号存在,需要重新录入。

5、查询所有图书,即为遍历集合显示信息。

6、查询单本图书,需要录入图书名称,遍历集合进行查询。

7、修改图书信息,需要根据编号先找到该图书,修改其除了编号之外的信息,存入集合覆盖原来的信息。

8、删除图书信息,需要根据编号先找到该图书,根据索引直接删除即可。

9、退出系统功能,借助结束程序的API实现即可。

参考方案

训练步骤

1、创建Book类,属性String类型的id,name,author,price。提供构造方法、get和set方法。

2、创建测试类Test04,在main方法中,创建键盘录入对象,创建ArrayList集合对象用于存储图书。

3、使用输出语句定义一个操作菜单,包含添加、查看全部、查看单个、修改、查询、退出功能,使用switch语句对键盘录入的菜单项进行判断。

4、定义方法实现判断id是否已经存在。方法返回值boolean类型,参数列表为集合ArrayList和要查找的id字符串。遍历集合,判断id是否与集合中的Book对象的id相同,如果有相同,返回true,否则返回false

5、定义方法实现添加功能。方法返回值void,参数列表为集合ArrayList。在方法中,先使用键盘录入获取用户录入的id信息,调用方法判断id是否存在,如果存在,重新录入,如果不存在,再依次获取图书的其他信息,创建图书对象,并将图书对象存入集合中,输出添加成功的提示。

6、定义方法实现查看所有图书。方法返回值void,参数列表为集合ArrayList。如果集合长度为0,给出提示,结束方法,否则遍历集合,获取每个图书对象,再调用对象的get方法,获取所有信息展示即可。

7、定义方式实现根据名称查看一本图书。方法返回值void,参数列表为集合ArrayList。键盘录入图书的名称,遍历集合,获取每个图书的名称信息进行比较,如果相同,输出该图书信息,结束方法。否则输出不存在该图书。

8、定义方法实现根据编号修改图书信息。方法返回值void,参数列表为集合ArrayList。键盘录入图书编号,查询该编号是否存在,如果存在,再依次录入图书的修改后信息,创建新的图书对象,存入集合,将原对象覆盖,给出成功的提示,否则提示该编号图书不存在。

9、定义方法实现根据编号删除图书信息。方法返回值void,参数列表为集合ArrayList。键盘录入图书编号,查询该编号是否存在,如果存在,根据索引删除该对象,返回成功的提示,否则提示该编号的图书不存在。

10、退出系统的功能直接调用System的exit方法实现即可。

参考答案

public class Book {
    private String bookId;
    private String name;
    private String author;
    private double price;
    public Book() {
    }
    public Book(String bookId, String name, String author, double price) {
        this.bookId = bookId;
        this.name = name;
        this.author = author;
        this.price = price;
    }
    public String getBookId() {
        return bookId;
    }
    public void setBookId(String bookId) {
        this.bookId = bookId;
    }
    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;
    }
}
import java.util.ArrayList;
import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        // 创建集合用于存储图书信息
        ArrayList<Book> list = new ArrayList<>();
        // 键盘录入
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请选择你要进行的操作");
            System.out.println("1:添加图书");
            System.out.println("2:查看图书");
            System.out.println("3:查询图书");
            System.out.println("4:修改图书");
            System.out.println("5:删除图书");
            System.out.println("6:退出系统");
            String type = sc.next();
            switch (type) {
                case "1":
                    // 添加
                    addBook(list);
                    break;
                case "2":
                    // 查看所有图书
                    findAllBooks(list);
                    break;
                case "3":
                    // 查询某本图书
                    findBookByName(list);
                    break;
                case "4":
                    // 修改图书
                    updateBook(list);
                    break;
                case "5":
                    // 删除图书
                    deleteBook(list);
                    break;
                case "6":
                    System.out.println("感谢使用,再见");
                    System.exit(0); // 退出系统
                default:
                    System.out.println("选择有误,请重新输入");
                    break;
            }
        }
    }
    // 删除图书
    private static void deleteBook(ArrayList<Book> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要删除的图书编号:");
        String id = sc.next();
        for (int i = 0; i < list.size(); i++) {
            Book b = list.get(i);
            if (id.equals(b.getBookId())) { // 编号存在
                // 删除图书并结束方法
                list.remove(i);
                System.out.println("~~~删除成功~~~");
                return;
            }
        }
        System.out.println("没有该编号的图书信息");
    }
    // 修改图书
    private static void updateBook(ArrayList<Book> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要修改的图书编号:");
        String id = sc.next();
        for (int i = 0; i < list.size(); i++) {
            Book b = list.get(i);
            if (id.equals(b.getBookId())) { // 编号存在
                System.out.println("请输入修改后图书的名称:");
                String name = sc.next();
                System.out.println("请输入修改后图书的作者:");
                String author = sc.next();
                System.out.println("请输入修改后图书的价格:");
                double price = sc.nextDouble();
                Book newBook = new Book(id, name, author, price);
                // 更新数据
                list.set(i, newBook);
                System.out.println("~~~修改成功~~~");
                return;
            }
        }
        // 如果编号不存在
        System.out.println("没有该编号的图书信息");
    }
    // 根据图书的名称查询图书信息
    private static void findBookByName(ArrayList<Book> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要查询的图书名称:");
        String name = sc.next();
        for (int i = 0; i < list.size(); i++) {
            Book b = list.get(i);
            if (name.equals(b.getName())) {
                System.out.println("编号\t" + "书名\t" + "作者\t" + "价格");
                System.out.println(b.getBookId() + "\t" + b.getName() + "\t" + b.getAuthor() + "\t" + b.getPrice());
                return;
            }
        }
        System.out.println("没有该名称图书信息");
    }
    // 查看所有图书信息
    private static void findAllBooks(ArrayList<Book> list) {
        if (list == null || list.size() == 0) {
            System.out.println("尚无图书信息");
            return;
        }
        System.out.println("编号\t" + "书名\t" + "作者\t" + "价格");
        for (int i = 0; i < list.size(); i++) {
            Book b = list.get(i);
            System.out.println(b.getBookId() + "\t" + b.getName() + "\t" + b.getAuthor() + "\t" + b.getPrice());
        }
    }
    // 查询编号是否存在
    public static boolean isExist(ArrayList<Book> list, String bookId) {
        // 遍历,如果发现相同id,返回true,
        for (int i = 0; i < list.size(); i++) {
            if (bookId.equals(list.get(i).getBookId())) {
                return true;
            }
        }
        // 如果没有,返回false
        return false;
    }
    // 添加图书
    public static void addBook(ArrayList<Book> list) {
        // 键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入图书信息:");
        System.out.println("编号:");
        String bookId;
        while (true) {
            bookId = sc.next();
            // 查询编号是否存在
            if (isExist(list, bookId)) {
                System.out.println("该编号已经存在,请重新输入");
            } else {
                break;
            }
        }
        System.out.println("名称:");
        String name = sc.next();
        System.out.println("作者:");
        String author = sc.next();
        System.out.println("价格:");
        double price = sc.nextDouble();
        // 将信息封装到图书对象
        Book b = new Book(bookId, name, author, price);
        // 添加到集合
        list.add(b);
        System.out.println("~~~添加成功~~~");
    }
}
相关文章
|
Java 关系型数据库 MySQL
计算机程序设计-ssm旅游管理系统
计算机程序设计-ssm旅游管理系统
54 0
|
3月前
|
缓存 安全 数据库
设计与实现图书管理系统的技术挑战
设计与实现图书管理系统的技术挑战
|
5月前
|
存储 SQL 测试技术
图书馆管理系统系统分析与设计(下)
图书馆管理系统系统分析与设计(下)
|
5月前
|
编解码 测试技术 数据库
图书馆管理系统系统分析与设计(上)
图书馆管理系统系统分析与设计(上)
|
5月前
|
安全 JavaScript Java
基于ssm校园图书在线阅读系统的设计与实现
基于ssm校园图书在线阅读系统的设计与实现
79 1
|
5月前
|
存储 安全 Java
图书管理系统的设计与实现
图书管理系统的设计与实现
|
5月前
|
测试技术 数据库 数据库管理
图书馆管理系统的设计与实现(论文+系统)_kaic
图书馆管理系统的设计与实现(论文+系统)_kaic
|
存储 C语言 C++
实战C++:如何开发一个完整的学生信息管理系统?
先简单介绍一下这篇文章,这是一篇关于C++的学生管理系统的文章,作为从C语言到C++过渡的项目。
225 0
|
Web App开发 JavaScript 前端开发
学生宿舍管理系统的设计与实现(论文+源码)_kaic
在信息社会占据主导地位的今天,互联网的发展让人们的生活更加智能便利。设计与实现学生宿舍管理系统为管理者提供了方便智能的查询平台,对于高校管理工作向信息化、社会化、智能化的迈进有着关键作用。高校宿舍管理也必须精细化,透明化,通过宿舍管理系统来提高宿舍管理的质量和进度。此学生宿舍管理系统的开发在逻辑上由三个子系统组合而成,分别是面对管理员、学生、宿舍管理员开发的宿舍管理系统。设计一套适合各个高校特点的学生宿舍管理系统可以避免浪费人力与物力,还能够降低管理成本,实现学校管理工作现代化、科学化的管理目标,管理信息系统的设计是高校发展的必然选择,也是互联网发展趋势的具体表现。 本系统采用当下流行的前后端