⛳️ 项目需求
为某图书馆开发一个迷你图书管理系统,实现图书的管理,包括如下功能:
(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(); } }