14、Java——迷你图书管理器(对象+数组)

简介: 14、Java——迷你图书管理器(对象+数组)

⛳️ 项目需求


为某图书馆开发一个迷你图书管理系统,实现图书的管理,包括如下功能:


      (1)新增图书


       (2)查看图书


       (3)删除图书


       (4)借出图书


       (5)归还图书


       (6)退出图书系统


⛳️ 覆盖知识


      程序基本概念、变量 、数据类型、流程控制、顺序、选择 、循环、跳转语句、数组、变量、类、方法等


⛳️ 开发思路


(1)明确需求

(2)编码顺序

1)、数据初始化

2)、循环完成各种图书管理操作

3)、菜单切换

(3)测试

⛳️ 开发步骤


❤️ 1、数据初始化

(1)设计一个包含图书信息的类:Book类


(2)设计一个图书信息操作的方法类:BookMethod类


(3)设计一个图书管理系统测试类:MyBookSystem类


(4)在MyBookSystem类中初始化对象数组和相关数据


// 初始化Book数组
  Book[] books=new Book[6];
  // 初始化第一本本图书
  books[0]=new Book("罗马假日", 1, 1, 15);
  // 初始化第一本本图书
  books[1]=new Book("白雪公主", 0, 0, 12);
  // 初始化第一本本图书
  books[2]=new Book("葫芦兄弟", 0, 0, 30);

❤️ 2、BookMethod类中定义各种方法


       欢迎使用迷你图书管理器方法

       新增图书方法

       查看图书方法


       删除图书方法


       借出图书方法


       归还图书方法


       退出图书方法


     例子:



//欢迎使用迷你图书管理器方法
  public static void useBookSystem() {
  // 输出欢迎菜单
  System.out.println("欢迎使用迷你图书管理器");
  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("-------------------------");
  }

❤️ 1、Book类(全部代码)

package cn.bdqn.demo05;
public class Book {
  //定义属性
  private String name;
  private int state;
  private int date;
  private int count;
  //添加无参构造
  public Book() {
  super();
  }
  //添加有参构造
  public Book(String name, int state, int date, int count) {
  super();
  this.name = name;
  this.state = state;
  this.date = date;
  this.count = count;
  }
  //添加get/set方法
  public String getName() {
  return name;
  }
  public void setName(String name) {
  this.name = name;
  }
  public int getState() {
  return state;
  }
  public void setState(int state) {
  this.state = state;
  }
  public int getDate() {
  return date;
  }
  public void setDate(int date) {
  this.date = date;
  }
  public int getCount() {
  return count;
  }
  public void setCount(int count) {
  this.count = count;
  }
}


❤️ 2、BookMethod类(部分代码)

        页面底部有全部代码分享链接


package cn.bdqn.demo05;
import java.util.Scanner;
public class BookMethod {
  // 定义一个静态的Scanner
  static Scanner inputsc =new Scanner(System.in);
//    static String bookName;
  // 欢迎使用迷你图书管理器方法
  public static void useBookSystem() {
  // 输出欢迎菜单
  System.out.println("欢迎使用迷你图书管理器");
  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("-------------------------");
  }
  // 新增图书方法
  public static void addBook(Book[] books){
  System.out.println("-->新增图书\n");
  System.out.println("请输入图书名称:");
  String bookName = inputsc.next();
  System.out.println(bookName);
  // 判断添加书是否成功
  boolean flag2 = false;
  // 循环查找图书馆里的可存放书的地方
  for (int i = 0; i < books.length; i++) {
    //逻辑部分
  }
  if (!flag2) {
    System.out.println("抱歉,新增《" + bookName + "》失败!货架已满!");
  }
  System.out.println("*****************************************");
  }
  // 查看图书方法
  public static void lookBook(Book[] books){
  System.out.println("-->查看图书\n");
  System.out.println("序号\t状态\t名称\t借出日期\t借出次数");
  for (int i = 0; i < books.length; i++) {
    if (books[i] != null) {
    //逻辑部分
    }
  }
  System.out.println("*****************************************");
  }
  // 删除图书方法
  public static void delBook(Book[] books){
  System.out.println("-->删除图书\n");
  System.out.println("请输入要删除图书的名称:");
  String delete = inputsc.next();
  boolean flag3 = false;
  int index = -1; // 记录要删除图书的位置
  for (int i = 0; i < books.length; i++) {
    // 逻辑部分
  }
  // 根据记录下来的删除图书的位置进行删除工作
  if (index != -1) {
    for (int j = index; j < books.length; j++) {
    if (j != books.length - 1) {
      books[j].setName(books[j + 1].getName());
      books[j].setState(books[j + 1].getState());
      books[j].setDate(books[j + 1].getDate());
    }
    books[books.length - 1].setName(null);
    }
  }
  if (!flag3) {
    System.out.println("没有找到匹配信息!");
  }
  System.out.println("*****************************************");
  }
  // 借出图书方法
  public static void lendBook(Book[] books){
  System.out.println("-->借出图书\n");
  System.out.print("请输入图书名称:");
  String want = inputsc.next(); // 要借出的图书名称
  for (int i = 0; i < books.length; i++) {
    //逻辑部分
  }
  System.out.println("*****************************************");
  }
  // 归还图书方法
  public static void returnBook(Book[] books){
  System.out.println("-->归还图书\n");
  int charge = 0; // 租金
  System.out.print("请输入归还图书名称:");
  String want = inputsc.next();
  for (int i = 0; i < books.length; i++) {
    //逻辑部分
  }
  System.out.println("*****************************************");
  }
}


❤️ 3、 MyBookSystem类(全部代码)

package cn.bdqn.demo05;
import java.util.*;
/**
 * 图书管理系统类MyBookMgr
 * 
 * @author Administrator
 *
 */
public class MyBookSystem {
  public static void main(String[] args) {
  Scanner input = new Scanner(System.in);
  // 是否退出系统,false代表退出系统
  boolean flag = true;
  // 初始化Book数组
  Book[] books=new Book[6];
  // 初始化第一本本图书
  books[0]=new Book("罗马假日", 1, 1, 15);
  // 初始化第一本本图书
  books[1]=new Book("白雪公主", 0, 0, 12);
  // 初始化第一本本图书
  books[2]=new Book("葫芦兄弟", 0, 0, 30);
  int num = -1;
  // 循环操作
  do {
    // 定义一个BookMethod操作类,将操作方法定义在BookMethod类中,然后调用    
    // 欢迎菜单方法
    BookMethod.useBookSystem();
    System.out.println("请选择:");
    int choose = input.nextInt();
    switch (choose) {
    case 1:
    // 新增图书
    BookMethod.addBook(books);
    break;
    case 2:
    // 查看图书
    BookMethod.lookBook(books);
    break;
    case 3:
    // 删除图书
    BookMethod.delBook(books);
    break;
    case 4:
    // 借出图书
    BookMethod.lendBook(books);
    break;
    case 5:
    // 归还图书
    BookMethod.returnBook(books);
    break;
    case 6:
    // 退出图书
    flag = false;
    break;
    default:
    flag = false;
    break;
    }
    if (flag) {
    System.out.println("输入0返回:");
    num = input.nextInt();
    } else {
    break;
    }
  } while (num == 0);
  System.out.println("谢谢使用!");
  input.close();
  }
}


相关文章
|
11月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
1184 157
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
存储 人工智能 JavaScript
Java从作用域到对象高级应用​
本内容详细讲解了JavaScript中的作用域类型(函数作用域、块作用域、全局作用域)、作用域链、垃圾回收机制、闭包、变量提升、函数参数、数组方法、内置构造函数、对象高级知识、原型链、对象赋值、深浅拷贝、递归、异常处理及this指向等内容,全面覆盖JS核心概念与编程技巧。
174 0
|
存储 Java 索引
java 数组
在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
301 0
|
存储 Java
Java对象的内存布局
在HotSpot虚拟机中,Java对象的内存布局分为三部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头包含Mark Word、Class对象指针及数组长度;实例数据存储对象的实际字段内容;对齐填充用于确保对象大小为8字节的整数倍。
280 0
|
Java 数据库连接 API
Java 对象模型现代化实践 基于 Spring Boot 与 MyBatis Plus 的实现方案深度解析
本文介绍了基于Spring Boot与MyBatis-Plus的Java对象模型现代化实践方案。采用Spring Boot 3.1.2作为基础框架,结合MyBatis-Plus 3.5.3.1进行数据访问层实现,使用Lombok简化PO对象,MapStruct处理对象转换。文章详细讲解了数据库设计、PO对象实现、DAO层构建、业务逻辑封装以及DTO/VO转换等核心环节,提供了一个完整的现代化Java对象模型实现案例。通过分层设计和对象转换,实现了业务逻辑与数据访问的解耦,提高了代码的可维护性和扩展性。
577 1
|
前端开发 Java 数据库连接
java bo 对象详解_全面解析 java 中 PO,VO,DAO,BO,POJO 及 DTO 等几种对象类型
Java开发中常见的六大对象模型(PO、VO、DAO、BO、POJO、DTO)各有侧重,共同构建企业级应用架构。PO对应数据库表结构,VO专为前端展示设计,DAO封装数据访问逻辑,BO处理业务逻辑,POJO是简单的Java对象,DTO用于层间数据传输。它们在三层架构中协作:表现层使用VO,业务层通过BO调用DAO处理PO,DTO作为数据传输媒介。通过在线商城的用户管理模块示例,展示了各对象的具体应用。最佳实践包括保持分层清晰、使用工具类转换对象,并避免过度设计带来的类膨胀。理解这些对象模型的区别与联系。
1075 1