临近期末,学习更加紧张,Java更是安排了实习周,在经过几天的知识复习后,老师布置了图书管理项目作为作业,当然了,老师自然是做了结果演示,并将要求进行了详细解说。
图书管理项目
技术: 数组
功能:
1. 新 增 图书
2. 查 看 图书
3. 删 除 图书
4. 借 出 图书
5. 归 还 图书
6. 退 出图书
功能解析:
1. 新增图书
如果图书已经存在,则新增失败;如果图书不存在,则实现新增功能
2. 查看图书
遍历打印所有的图书
3. 删除图书
如果要删除的图书不存在,则删除失败;
如果要删除的图书已借出,则删除失败;
如果图书存在,并且是可解状态,则可以删除
4. 借出图书
如果图书不存在,则借出失败;
如果图书存在,但是是已借出状态,则借出失败;
如果图书存在,并且是可借出状态,则可以借出
5. 归还图书
如果图书不存在,则归还失败。
如果图书存在,但是是可借状态,则归还失败
如果图书存在,并且是已借出状态,则可以归还
6. 退出
选择该功能后,程序退出
在经过一系列的学习,练习,更正后,我终于打出了代码
package com.java;
import java.util.Scanner;
public class book {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
boolean flag = true;
String[] name = new String[8];//书的数量
int[] state = new int[8];//借阅状态:0可借阅,1已借阅
int[] date = new int[8];//借出日期
int[] count = new int[8];//借出次数
//将每本书初始化
name[0] = "西游记";
state[0] = 1;
date[0] = 2;
count[0] = 3;
name[1] = "红楼梦";
state[1] = 1;
date[1] = 1;
count[1] = 6;
name[2] = "三国演义";
state[2] = 0;
count[2] = 4;
name[3] = "水浒传";
state[3] = 0;
count[3] = 10;
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.println("请输入图书名称:");
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.println("请输入借出日期:");
date[i] = input.nextInt();
while (date[i] < 1 || date[i] > 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");
System.out.println("请输入归还图书名称:");
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.println("请输入归还日期:");
int redate = input.nextInt();
while (redate < date[i] || redate > 31) {
if (redate < date[i]) {
System.out.println("归还日期不能小于借出日期,请重新输入:");
} else {
System.out.println("一个月只有31天,请重新输入:");
}
redate = input.nextInt();
}
System.out.println("归还《" + want + "》成功!");
System.out.println("借出日期为:" + date[i] + "日");
System.out.println("归还日期为:" + redate + "日");
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;
}
if(flag){
System.out.println("请输入0返回:");
num = input.nextInt();
}else{
break;
}
}while (num == 0);
System.out.println("谢谢使用!");
input.close();
}
}
可以说,我的学习并不是很好,每次打代码,总会出现各种各样的问题,或是单词打错,或是符号用错。但我相信之后我会更加细心,出的错误也会越来越少。
在这个作业里,运用到了数组,循环,三元运算符,boolean等知识,可以说很考验对这些知识的理解和掌握。在家学习要克服人的惰性,没有在学校的时候高效,希望接下来能提高我的学习效率,好好复习,为期末考试做准备。
希望我们的期末考试都不会挂科吧!