15、Java——迷你图书管理器(变量+数组)

 ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。

个人主页:乐趣国学的博客

个人信条:不迁怒,不贰过。小知识,大智慧。

当前专栏:Java案例分享专栏

✨特色专栏:国学周更-心性养成之路

本文内容:Java——迷你图书管理器(变量+数组)

更多内容点击

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

目录

⛳️ 项目需求

⛳️ 覆盖知识

⛳️ 开发思路 

⛳️ 开发步骤

❤️ 1、数据初始化

❤️ 2、实现查看图书信息

❤️ 3、实现新增图书信息

❤️ 4、实现删除图书信息

❤️ 5、实现借出图书业务处理

❤️ 6、实现归还图书业务处理

❤️ 7、实现菜单切换

⛳️ 整体代码展示 


 15、Java——迷你图书管理器(变量+数组)_第1张图片

 

⛳️ 项目需求

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

        (1)新增图书

        (2)查看图书

        (3)删除图书

        (4)借出图书

        (5)归还图书

        (6)退出图书系统

⛳️ 覆盖知识

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

⛳️ 开发思路 

(1)明确需求

(2)编码顺序

        1)、数据初始化

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

        3)、菜单切换

(3)测试

⛳️ 开发步骤

❤️ 1、数据初始化

		// 图书相关信息,最多只能存储6个图书信息
		String[] name = new String[6]; // 图书名称
		int[] state = new int[6]; // 借阅状态,0:可借阅 ;1:已借出
		int[] date = new int[6]; // 借出日期
		int[] count = new int[6]; // 借出次数

		// 初始化第一本本图书
		name[0] = "罗马假日";
		state[0] = 1;
		date[0] = 1;
		count[0] = 15;

		// 初始化第二本图书
		name[1] = "白雪公主";
		state[1] = 0;
		count[1] = 12;

		// 初始化第三本图书
		name[2] = "葫芦兄弟";
		state[2] = 0;
		count[2] = 30;

❤️ 2、实现查看图书信息

System.out.println("-->查看图书\n");
System.out.println("序号\t状态\t名称\t借出日期\t借出次数");
for (int i = 0; i < name.length; i++) {
    if (name[i] != null) {
        // 三目运算符
        String BookState = (state[i] == 0) ? "可借阅" : "已借出";
        String dateStr = (date[i] == 0) ? "" : (date[i] + "日");
        System.out.println(
            (i + 1) + "\t" + BookState + "\t" + name[i] + "\t" + dateStr + "\t" + count[i] + "次");
    }
}

❤️ 3、实现新增图书信息

System.out.println("-->新增图书\n");
System.out.println("请输入图书名称:");
String BookName = input.next();

// 判断添加书是否成功
boolean flag2 = false;

// 循环查找图书馆里的可存放书的地方
for (int i = 0; i < name.length; i++) {
	// 判断某个位置是否能存放书
	if (name[i] == null) {
		name[i] = BookName;
		System.out.println("新增《" + BookName + "》成功!");
		flag2 = true;
		break;
	}
}
if (!flag2) {
	System.out.println("抱歉,新增《" + BookName + "》失败!货架已满!");
}

❤️ 4、实现删除图书信息

System.out.println("-->删除图书\n");
System.out.println("请输入要删除图书的名称:");
String delete = input.next();
boolean flag3 = false;
int index = -1; // 记录要删除图书的位置
for (int i = 0; i < name.length; i++) {
	// 删除的图书存在、状态处于可借阅状态
	if (name[i] != null && delete.equals(name[i]) && state[i] == 0) {
		flag3 = true;
		index = i;
		System.out.println("图书删除成功!");
		break;
	} else if (name[i] != null && delete.equals(name[i]) && state[i] == 1) {
		flag3 = true;
		System.out.println("该图书已被借出,目前无法删除!");
		break;
	}
}
// 根据记录下来的删除图书的位置进行删除工作
if (index != -1) {
	for (int j = index; j < name.length; j++) {
		if (j != name.length - 1) {
			name[j] = name[j + 1];
			state[j] = state[j + 1];
			date[j] = date[j + 1];
		}
	name[name.length - 1] = null;
    }
}
if (!flag3) {
	System.out.println("没有找到匹配信息!");
}

❤️ 5、实现借出图书业务处理

System.out.println("-->借出图书\n");
System.out.print("请输入图书名称:");
String want = input.next(); // 要借出的图书名称
for (int i = 0; i < name.length; i++) {
	if (name[i] == null) { // 无匹配
		System.out.println("没有找到匹配信息!");
		break;
	} else if (want.equals(name[i]) && state[i] == 0) { // 找到匹配可借
		state[i] = 1; // 将此图书置于借出状态
		System.out.print("请输入借出日期:");
		date[i] = input.nextInt();
		while (date[i] < 1 || date[i] > 31) { // 当输入借出的日期不满足1-31时
		System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");
		date[i] = input.nextInt();
	}
	System.out.println("借出《" + want + "》成功!");
	count[i]++;
	break;
	} else if (want.equals(name[i]) && state[i] == 1) { // 找到匹配已被借出
		System.out.println("《" + want + "》已被借出!");
		break;
	}
}

❤️ 6、实现归还图书业务处理

                System.out.println("-->归还图书\n");
				int charge = 0; // 租金
				System.out.print("请输入归还图书名称:");
				want = input.next();
				for (int i = 0; i < name.length; i++) {
					if (name[i] == null) { // 无匹配
						System.out.println("没有找到匹配信息!");
						break;
					} else if (want.equals(name[i]) && state[i] == 1) {// 找到匹配
						state[i] = 0; // 将借阅状态修改为可借阅
						System.out.print("请输入归还日期:");
						int redate = input.nextInt();
						while (redate < date[i] || redate > 31) { // 归还日期不能小于借出日期,也不能大于31
							if (redate < date[i]) {
								System.out.println("归还日期不能小于借出日期,请重新输入:");
							} else {
								System.out.println("一个月只有31天,请重新输入:");
							}
							redate = input.nextInt();
						}
						charge = redate - date[i];

						System.out.println("\n归还《" + want + "》成功!");
						System.out.println("借出日期为:" + date[i] + "日");
						System.out.println("归还日期为:" + redate + "日");
						System.out.println("应付租金(元):" + charge);
						date[i] = 0;
						break;
					} else if (want.equals(name[i]) && state[i] == 0) {// 找到匹配但没有借出
						System.out.println("该图书没有被借出!无法进行归还操作。");
						break;
					}
				}

❤️ 7、实现菜单切换

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

			System.out.println("请选择:");
			int choose = input.nextInt();

⛳️ 整体代码展示 

package cn.book.bookmgr;

import java.util.*;

/**
 * 图书管理系统类MyBookMgr
 * 
 * @author Administrator
 *
 */
public class MyBookMgr {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);

		// 是否退出系统,false代表退出系统
		boolean flag = true;

		// 图书相关信息,最多只能存储6个图书信息
		String[] name = new String[6]; // 图书名称
		int[] state = new int[6]; // 借阅状态,0:可借阅 ;1:已借出
		int[] date = new int[6]; // 借出日期
		int[] count = new int[6]; // 借出次数

		// 初始化第一本本图书
		name[0] = "罗马假日";
		state[0] = 1;
		date[0] = 1;
		count[0] = 15;

		// 初始化第二本图书
		name[1] = "白雪公主";
		state[1] = 0;
		count[1] = 12;

		// 初始化第三本图书
		name[2] = "葫芦兄弟";
		state[2] = 0;
		count[2] = 30;

		int num = -1;
		// 循环操作
		do {
			// 输出欢迎菜单
			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("-------------------------");

			System.out.println("请选择:");
			int choose = input.nextInt();
			switch (choose) {
			case 1:
				// 新增图书
				System.out.println("-->新增图书\n");
				System.out.println("请输入图书名称:");
				String BookName = input.next();

				// 判断添加书是否成功
				boolean flag2 = false;

				// 循环查找图书馆里的可存放书的地方
				for (int i = 0; i < name.length; i++) {
					// 判断某个位置是否能存放书
					if (name[i] == null) {
						name[i] = BookName;
						System.out.println("新增《" + BookName + "》成功!");
						flag2 = true;
						break;
					}
				}
				if (!flag2) {
					System.out.println("抱歉,新增《" + BookName + "》失败!货架已满!");
				}
				System.out.println("*****************************************");
				break;

			case 2:
				// 查看图书
				System.out.println("-->查看图书\n");
				System.out.println("序号\t状态\t名称\t借出日期\t借出次数");
				for (int i = 0; i < name.length; i++) {
					if (name[i] != null) {
						// 三目运算符
						String BookState = (state[i] == 0) ? "可借阅" : "已借出";
						String dateStr = (date[i] == 0) ? "" : (date[i] + "日");
						System.out.println(
								(i + 1) + "\t" + BookState + "\t" + name[i] + "\t" + dateStr + "\t" + count[i] + "次");
					}
				}
				System.out.println("*****************************************");
				break;

			case 3:
				// 删除图书
				System.out.println("-->删除图书\n");
				System.out.println("请输入要删除图书的名称:");
				String delete = input.next();
				boolean flag3 = false;
				int index = -1; // 记录要删除图书的位置
				for (int i = 0; i < name.length; i++) {
					// 删除的图书存在、状态处于可借阅状态
					if (name[i] != null && delete.equals(name[i]) && state[i] == 0) {
						flag3 = true;
						index = i;
						System.out.println("图书删除成功!");
						break;
					} else if (name[i] != null && delete.equals(name[i]) && state[i] == 1) {
						flag3 = true;
						System.out.println("该图书已被借出,目前无法删除!");
						break;
					}
				}
				// 根据记录下来的删除图书的位置进行删除工作
				if (index != -1) {
					for (int j = index; j < name.length; j++) {
						if (j != name.length - 1) {
							name[j] = name[j + 1];
							state[j] = state[j + 1];
							date[j] = date[j + 1];
						}
						name[name.length - 1] = null;

					}
				}
				if (!flag3) {
					System.out.println("没有找到匹配信息!");
				}
				System.out.println("*****************************************");
				break;

			case 4:
				// 借出图书
				System.out.println("-->借出图书\n");
				System.out.print("请输入图书名称:");
				String want = input.next(); // 要借出的图书名称
				for (int i = 0; i < name.length; i++) {
					if (name[i] == null) { // 无匹配
						System.out.println("没有找到匹配信息!");
						break;
					} else if (want.equals(name[i]) && state[i] == 0) { // 找到匹配可借
						state[i] = 1; // 将此图书置于借出状态
						System.out.print("请输入借出日期:");
						date[i] = input.nextInt();
						while (date[i] < 1 || date[i] > 31) { // 当输入借出的日期不满足1-31时
							System.out.println("必须输入大于等于1且小于等于31的数字,请重新输入:");
							date[i] = input.nextInt();
						}
						System.out.println("借出《" + want + "》成功!");
						count[i]++;
						break;
					} else if (want.equals(name[i]) && state[i] == 1) { // 找到匹配已被借出
						System.out.println("《" + want + "》已被借出!");
						break;
					}
				}
				System.out.println("*****************************************");
				break;

			case 5:
				// 归还图书
				System.out.println("-->归还图书\n");
				int charge = 0; // 租金
				System.out.print("请输入归还图书名称:");
				want = input.next();
				for (int i = 0; i < name.length; i++) {
					if (name[i] == null) { // 无匹配
						System.out.println("没有找到匹配信息!");
						break;
					} else if (want.equals(name[i]) && state[i] == 1) {// 找到匹配
						state[i] = 0; // 将借阅状态修改为可借阅
						System.out.print("请输入归还日期:");
						int redate = input.nextInt();
						while (redate < date[i] || redate > 31) { // 归还日期不能小于借出日期,也不能大于31
							if (redate < date[i]) {
								System.out.println("归还日期不能小于借出日期,请重新输入:");
							} else {
								System.out.println("一个月只有31天,请重新输入:");
							}
							redate = input.nextInt();
						}
						charge = redate - date[i];

						System.out.println("\n归还《" + want + "》成功!");
						System.out.println("借出日期为:" + date[i] + "日");
						System.out.println("归还日期为:" + redate + "日");
						System.out.println("应付租金(元):" + charge);
						date[i] = 0;
						break;
					} else if (want.equals(name[i]) && state[i] == 0) {// 找到匹配但没有借出
						System.out.println("该图书没有被借出!无法进行归还操作。");
						break;
					}
				}
				System.out.println("*****************************************");
				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();
	}
}

       码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,请关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

你可能感兴趣的:(二,Java案例分享专栏,java,jvm,servlet)