数组练习题
设计一个图书管理系统
使用 ArrayList 存储图书信息(包括书名、作者和价格),并实现以下功能:
- 添加图书信息
- 根据书名删除图书信息
- 查找某本书的价格
- 输出所有图书的平均价格
- 按价格从低到高排序并输出图书信息
要求:
- 使用 ArrayList 存储图书对象
- 图书信息包括书名(String)、作者(String)和价格(double)
- 通过控制台输入输出进行交互。
解:
先创建Book类,初始化数据,并Generate方法
package com.qcby.book;public class Book {private String title;private String author;private double price;public Book(String title, String author, double price) {this.title = title;this.author = author;this.price = price;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}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;}@Overridepublic String toString() {return "Book{" +"title='" + title + '\'' +", author='" + author + '\'' +", price=" + price +'}';}
}
然后创建Test类,使用数组完成具体功能
package com.qcby.book;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;public class Test {private static ArrayList<Book> books = new ArrayList<>();private static Scanner sc = new Scanner(System.in);public static void main(String[] args) {while (true){System.out.println("----------\n图书管理系统----------");System.out.println("1.添加图书");System.out.println("2.删除图书");System.out.println("3.查找图书价格");System.out.println("4.计算平均价格");System.out.println("5.按价格排序并显示");System.out.println("6.退出系统");System.out.println("请选择操作:");int choice = sc.nextInt();sc.nextLine();//消耗换行符switch (choice){case 1:addBook();break;case 2:removeBook();break;case 3:findBookPrice();break;case 4:calAveBook();break;case 5:sortBook();break;case 0:System.out.println("感谢使用图书管理系统,再会");sc.close();System.exit(0);default:System.out.println("无效,请重新输入");}}}private static void addBook(){System.out.println("请输入书名:");String title = sc.nextLine();System.out.println("请输入作者:");String author = sc.nextLine();System.out.println("请输入价格:");double price = sc.nextDouble();sc.nextLine();//消耗换行符books.add(new Book(title,author,price));System.out.println("图书添加成功");}private static void removeBook(){System.out.println("请输入要删除的书名:");String title = sc.nextLine();boolean found = false;for (int i = 0; i < books.size(); i++){if (books.get(i).getTitle().equalsIgnoreCase(title)){books.remove(i);found = true;System.out.println("图书删除成功");break;}}if(!found){System.out.println("未找到");}}private static void findBookPrice(){System.out.println("请输入要查找的书名:");String title = sc.nextLine();boolean found = false;for (Book book : books){if (book.getTitle().equalsIgnoreCase(title)){System.out.println(book.getTitle() + " 的价格是:" + book.getPrice());found = true;break;}}if (!found){System.out.println("未找到");}}private static void calAveBook(){if (books.isEmpty()){System.out.println("当前无图书");return;}double sum = 0;for (Book book : books){sum += book.getPrice();}double ave = sum / books.size();System.out.printf("平均价格为:%.2f\n", ave);}private static void sortBook(){if (books.isEmpty()){System.out.println("当前无图书");return;}//使用Comparator按价格排序Collections.sort(books, Comparator.comparingDouble(Book::getPrice));System.out.println("\n===========按价格排序的图书列表===========");for (Book book : books){System.out.println(book);}}}