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();
  }
}


相关文章
|
16天前
|
Java
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
本文介绍了Java中抽象类和抽象方法的使用,以及ArrayList的基本操作,包括添加、获取、删除元素和判断列表是否为空。
16 2
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
|
1天前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
15 6
|
8天前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
|
17天前
|
存储 Java
Java编程中的对象和类
【8月更文挑战第55天】在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
26 10
|
22天前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。
|
20天前
|
存储 Java 开发者
Java编程中的对象序列化与反序列化
【9月更文挑战第20天】在本文中,我们将探索Java编程中的一个核心概念——对象序列化与反序列化。通过简单易懂的语言和直观的代码示例,你将学会如何将对象状态保存为字节流,以及如何从字节流恢复对象状态。这不仅有助于理解Java中的I/O机制,还能提升你的数据持久化能力。准备好让你的Java技能更上一层楼了吗?让我们开始吧!
|
22天前
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
263 4
|
22天前
|
SQL Java 关系型数据库
在Java中,创建数据源对象
在Java中,创建数据源对象
28 1
|
19小时前
|
存储 机器学习/深度学习 Java
【Java】数组详解
【Java】数组详解
8 0
|
14天前
|
存储 Java
java数据结构,线性表顺序存储(数组)的实现
文章介绍了Java中线性表顺序存储(数组)的实现。线性表是数据结构的一种,它使用数组来实现。文章详细描述了线性表的基本操作,如增加、查找、删除、修改元素,以及其他操作如遍历、清空、求长度等。同时,提供了完整的Java代码实现,包括MyList接口和MyLinearList实现类。通过main函数的测试代码,展示了如何使用这些方法操作线性表。