程序设计:图书管理器,设计⼀个图书管理器,实现对图书进⾏的存储管
理操作,实现功能

  1. 添加⼀本图书(书名、作者(姓名,年龄,性别)、售价)
  2. 删除⼀本图书(通过书名删除)
  3. 删除所有的指定作者的书(通过作者姓名删除)
  4. 将所有的图书按照图书售价降序排序。若售价相同,按照作者年龄升序)
  5. 查询所有图书
  6. 退出书屋
package com.qf.demo;import java.util.*;public class Demo3 {public static void main(String[] args) {/*       测试代码List<Book> bookList = addBook();deleteByBookName(bookList);deleteByAuthorName(bookList);System.out.println(bookList);Author author1 = new Author("1",1,"1");Author author2 = new Author("1",2,"1");Book book1 = new Book("1",author1,1);Book book2 = new Book("1",author2,1);Book book3 = new Book("2",author1,2);Book book4 = new Book("2",author2,2);bookList.add(book1);bookList.add(book2);bookList.add(book3);bookList.add(book4);sort(bookList);System.out.println(bookList);*/homePage();}public static void addBook(List<Book> bookList){Scanner sc = new Scanner(System.in);System.out.println("请输入书名:");String bookName = sc.next();System.out.println("请输入作者姓名:");String authorName = sc.next();System.out.println("请输入年龄:");Integer age = sc.nextInt();System.out.println("请输入性别:");String gender = sc.next();System.out.println("请输入书的售价:");Double price = sc.nextDouble();Author author = new Author(authorName,age,gender);Book book = new Book(bookName,author,price);bookList.add(book);System.out.println("添加成功!");}public static void deleteByBookName(List<Book> bookList){Scanner sc = new Scanner(System.in);System.out.println("请输入要删除的书名:");String bookName = sc.next();Iterator<Book> it = bookList.iterator();int count = 0;while (it.hasNext()){Book book = it.next();if (bookName.equals(book.getName())){it.remove();count++;}}if (count == 0) System.out.println("没有您要删除的书籍!");else System.out.println("删除成功!");}public static void deleteByAuthorName(List<Book> bookList){Scanner sc= new Scanner(System.in);System.out.println("请输入你要删除的作者的姓名:");String authorName = sc.next();int count = 0;Iterator<Book> it = bookList.iterator();while (it.hasNext()){Book book = it.next();if (authorName.equals(book.getAuthor().getName())){it.remove();count ++;}}if (count == 0) System.out.println("没有您要删除的书籍呢!");else System.out.println("删除成功!");}public static void sort(List<Book> list){MyComparater<Book> comparater = new MyComparater<Book>() {@Overridepublic int compare(Book t1, Book t2) {if ((t1.getPrice() - t2.getPrice())>0){return (int)Math.ceil((t1.getPrice() - t2.getPrice()));}else if ((t1.getPrice() - t2.getPrice())==0){return t1.getAuthor().getAge() - t2.getAuthor().getAge();}else {return (int)Math.floor(t1.getPrice() - t2.getPrice());}}};MyListTools.sort(list,comparater);System.out.println("已经排好序啦!");}public static void queryBook(List<Book> bookList){if (bookList.size() == 0 || bookList == null){System.out.println("您目前的书屋是空的哦!");}Iterator<Book> it = bookList.iterator();while (it.hasNext()){Book book = it.next();System.out.println(book);}System.out.println("查询成功哦!");}public static void homePage(){Scanner sc = new Scanner(System.in);System.out.println("欢迎来到波波图书馆!");int operation = 1;List<Book> bookList = new ArrayList<>();while (operation != -1){printf();System.out.println("请输入你要进行的操作:");int num = sc.nextInt();switch (num){case 1:addBook(bookList);break;case 2:deleteByBookName(bookList);break;case 3:deleteByAuthorName(bookList);break;case 4:sort(bookList);break;case 5:queryBook(bookList);break;case 6:operation = -1;break;}}System.out.println("欢迎下次光临书屋哦!");}public static void printf(){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.退出书屋");System.out.println("***********");}}class MyListTools{public static<T> void sort(List<T> list,MyComparater<T> comparater){for (int i = 0; i < list.size(); i++) {int min =i;for (int j = i; j < list.size(); j++) {if (comparater.compare(list.get(min),list.get(j))>0){min = j;}}if (i != min){T temp = list.get(min);list.set(min,list.get(i));list.set(i,temp);}}}
}interface MyComparater<T>{int compare(T t1,T t2);
}class Book{private String name;private Author author;private double price;public Book() {}public Book(String name, Author author, double price) {this.name = name;this.author = author;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Author getAuthor() {return author;}public void setAuthor(Author author) {this.author = author;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author=" + author +", price=" + price +'}';}
}class Author{private String name;private int age;private String gender;public Author() {}public Author(String name, int age, String gender) {this.name = name;this.age = age;this.gender = gender;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}@Overridepublic String toString() {return "Author{" +"name='" + name + '\'' +", age=" + age +", gender='" + gender + '\'' +'}';}
}

拿走即用,多多点赞哦!

书屋课程设计<java>相关推荐

  1. 大学生课程设计 ------ Java Web课程设计(学生成绩管理系统03)

    大学生课程设计 ------ Java Web课程设计(学生成绩管理系统03) Java Web课程设计(代码+课程报告) ---------------------我是分割线------------ ...

  2. 关键路径问题java_关键路径问题课程设计Java

    关键路径问题课程设计Java 关键路径问题 关键路径问题 摘要 关键路径是我们估算某些工程非常有用,是一种非常重要的估算一项工程所需的最短时间的依据.本文对如何求一个工程的关键路径做了详细的说明,包括 ...

  3. 大学生课程设计 ------ Java Web课程设计(学生成绩管理系统01)

    大学生课程设计 ------ Java Web课程设计(学生成绩管理系统01) Java Web课程设计(代码+课程报告) 课程作业效果如下: 学生1:后台实现.数据库设计.前端后台整合 学生2:前端 ...

  4. 大学生课程设计 ------ Java Web课程设计(图书馆管理系统02)

    大学生课程设计 ------ Java Web课程设计(图书馆管理系统02) Java Web课程设计(代码+课程报告) 项目分工情况(每个人完成那些功能或任务) 同学A:数据库设计,后台实现,前端与 ...

  5. java课程设计-音乐播放器_java课程设计---java音乐播放器.doc

    java课程设计---java音乐播放器 Java程序设计课程设计 题 目 java音乐播放器 学 号: 姓 名: 指导教师: 完成时间: 目 录 第一章 系统概述3 1.需求分析3 1.1任务目的: ...

  6. java日历程序设计,《面向对象程序设计》课程设计---java日历

    <面向对象程序设计>课程设计---java日历 软软 件件 学学 院院 课程设计课程设计报告书报告书 课程名称课程名称 面向对象程序设计课程设计面向对象程序设计课程设计 设计题目设计题目 ...

  7. java动态分区分配_操作系统 动态分区分配算法课程设计 java版.pdf

    操作系统 动态分区分配算法课程设计 java版 湖 南 文 理 学 院 实 验 报 告 课程名称 操作系统课程设计 实验名称 存储管理--动态分区分配算法的模拟 成绩 学生姓名 曹乐 专业 计算机 班 ...

  8. 山东大学软件学院高级语言课程设计JAVA课程设计-学生在线考试系统平台

    说明:blog 不全面而且也不是上交实验报告的最终版本(是自己实验过程中简单记录的笔记),完整内容(含代码+实验报告)可以通过(山东大学软件学院高级语言课程设计JAVA课程设计-学生在线考试系统平台) ...

  9. java记事本课程设计,java记事本课程设计

    java记事本课程设计 一. 设计内容和要求1. 设计一个具有 GUI 界面的记事本 含有简单的文字编辑功能 如 剪切.复制.粘贴.删除 还能实现保存.另存为.设置字体和颜色等功能.2. 本程 ...

  10. 计算器小程序java课程设计,java课程设计----计算器小程序报告.doc

    java课程设计----计算器小程序报告.doc #####学院JAVA语言课程设计报告小程序计算器系统管理班级:#######姓名:#####指导老师:###时间:2012年6月25日至6月29日2 ...

最新文章

  1. IIS6.0上某些文件类型不能下载
  2. Selenium + WebDriver 各浏览器驱动下载地址
  3. mysql grant教程_MySQL如何使用授权命令grant
  4. 面试题解(3):SQL
  5. supervisord管理进程详解
  6. apriori算法python_清华学霸亲测有效,每日自学两小时Python,学完就能做项目
  7. 《Oracle性能优化与诊断案例精选》——2.3 衣带渐宽终不悔
  8. jsp主板 jtp_最新主板常见故障及解决(新)
  9. Codeforces Round #379 (Div. 2) A. Anton and Danik 水题
  10. 16.最接近的三数之和
  11. Windows Pygame 安装教程 (自己识别版本号并下载)
  12. 泛微数字化督查督办平台:不见面也能高效落实工作、管理到位
  13. DNK基础之静态库、动态库、编译流程
  14. C#中,想要获得我的Windows中“我的文档”,以及桌面等,文件夹的路径。
  15. 机器学习基础(六)贝叶斯统计
  16. C语言,枚举法求两个数的最大公约数
  17. 阿里云服务器ICP备案流程概述
  18. 江西用计算机写作文说课稿,信息技术说课稿范文(精选5篇)
  19. 三极管应用电路---低通滤波电路
  20. VRay 3.4 for SketchUp 写实室内渲染的10个小技巧

热门文章

  1. js动画效果之缓冲动画
  2. Linux Shell 经典实例(1-30)
  3. python编程案例教程app_Python实例教学app-Python实例教学软件v1.1 - 起点软件园
  4. Chrome将在网站上显示不安全警告
  5. 平面设计作品集如何制作 ,平面设计制作软件有哪些:夏雨老师
  6. opencv图片处理与OCR识别
  7. 查看hdfs的操作日志
  8. 应用中卡片做花边效果实现
  9. 华为在德国获评brand eins “最创新企业”和领英“最佳雇主
  10. Spring IOC中的Bean对象