目录
⛳️ 项目需求
为某图书馆开发一个迷你图书管理系统,实现图书的管理,包括如下功能:
(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、实现归还图书业务处理
"-->归还图书\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();
}
}
标签:借出,15,name,管理器,System,println,Java,图书,out From: https://blog.51cto.com/u_15740516/5747845