java中数组的应用之迷你图书管理系统

import java.util.Scanner;


public class Demo1 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
String[] names=new String[6];   //图书名称
int[] state=new int[6];        //借阅状态  0:在架    1:已借出
int[] date=new int[6];         //借出日期
int[] times=new int[6];        //借出次数
double rent =0.5;//定义租金
//定义图书的状态、借出次数、借出日期等信息,便于在后面进行遍历
names[0]="三国演义";
state[0]=0;
times[0]=2;


names[1]="水浒传";
state[1]=0;
times[1]=3;


names[2]="简爱";
state[2]=1;
date[2]=15;
times[2]=8;


names[3]="红楼梦";
state[3]=0;
times[3]=5;


names[4]="聊斋志异";
state[4]=1;
date[4]=10;
times[4]=7;
//做标记
boolean boo=false;
//使用do-while循环进行
do {
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("          0.返回上一级");
System.out.println("***********让读书成为习惯**************");
System.out.println("输入编号选择功能:");
String choose=sc.next();
switch (choose) {
case "1":
//新增图书
int index1=-1;//对下标做标记,用-1便于区分
boolean boo1=false;//标记
//遍历数组,获取新增图书的下标
for (int i = 0; i < names.length; i++) {
if (names[i]==null) {
index1=i;
boo1=true;//标记
break;//跳出
}
}
if (boo1) {
//对新增图书进行添加
System.out.println("请输入你要新增的图书名称:");
names[index1]=sc.next();
if ("0".equals(names[index1])) {
break;
}
System.out.println("《"+names[index1]+"》添加成功。");
}else{
System.out.println("图书馆已满,请选择其他功能。");
}


break;
case "2":
//查看图书
System.out.println("序号\t图书名称\t状态\t借出日期\t借出次数");
//使用制表符进行制表
for (int i = 0; i < names.length; i++) {
//遍历数组
if (names[i]!=null) {
//使用三目表达式进行状态和日期的选择
String stat=state[i]==0?"可借":"已借出";
String condition=date[i]==0?" ":date[i]+"号";//判断借出图书的日期
System.out.println((i+1)+"\t"+names[i]+"\t"+stat+"\t"+condition+"\t"+times[i]);
}
}
break;
case "3":
//删除图书
System.out.println("请输入你要删除的图书名称:");
String bookName3=sc.next();
if ("0".equals(bookName3)) {
break;
}//判断返回上一级
int index3=-1;//标记
boolean boo2=false;//标记
for (int i = 0; i < names.length; i++) {
//遍历数组
if (bookName3.equals(names[i])) {//获取删除图书的下标
index3=i;
boo2=true;
break;//跳出
}
}
if (boo2) {
if (state[index3]==0) {//对没有借出的图书进行判断
for (int i = index3; i < names.length-1; i++) {
//重新进行赋值
names[i]=names[i+1];
state[i]=state[i+1];
date[i]=date[i+1];
times[i]=times[i+1];
}
System.out.println("《"+bookName3+"》删除成功。");
}else{//两种情况,一种是借出的图书,另一种是不存在的图书
System.out.println("你要删除的图书被借出,无法执行删除操作!");
}
}else{
System.out.println("你要删除的图书不存在!");
}
break;
case "4":
//借出图书
System.out.println("请输入你要借阅的图书名称:");
String bookName4=sc.next();
if ("0".equals(bookName4)) {
break;
}//判断返回上一级
int index4=-1;//标记
boolean boo3=false;//标记
for (int i = 0; i < names.length; i++) {
//遍历数组
if (bookName4.equals(names[i])) {
index4=i;
boo3=true;//获取下标
break;
}
}
if (boo3) {
if (state[index4]==0) {//对存在的图书进行借阅
System.out.println("请输入借阅日期:");
int jiedate=sc.nextInt();//获取借阅日期
while(jiedate>31||jiedate<1){//对借阅日期的合法性进行判断
System.out.println("日期输入有误,请重新输入:");
jiedate=sc.nextInt();
}//使用while循环结构
System.out.println("《"+bookName4+"》借出成功。");
date[index4]=jiedate;//获取借阅日期下标
state[index4]=1;//状态进行赋值
times[index4]++;//次数加一
}else{
System.out.println("你要借阅的书《"+bookName4+"》已被借出。");
}
}else{
System.out.println("你要借阅的书不存在!");
}
break;
case"5":
//归还图书
System.out.println("请输入要归还的图书名称:");
String bookName5=sc.next();
if ("0".equals(bookName5)) {
break;
}//判断返回上一级
int index5=-1;//标记
boolean boo4=false;//标记
for (int i = 0; i < names.length; i++) {
//遍历数组
if (bookName5.equals(names[i])) {//获取下标
index5=i;
boo4=true;
break;
}
}
if (boo4) {
if (state[index5]==1) {
System.out.println("请输入归还日期:");
int huandate=sc.nextInt();//获取归还日期
while(huandate<date[index5]||huandate>31){
System.out.println("输入日期有误,请重新输入:");
huandate=sc.nextInt();//对归还日期的合法性进行判断
}
System.out.println("《"+bookName5+"》归还成功。");
System.out.println("借出日期为:"+date[index5]+"号");
System.out.println("归还日期为:"+huandate+"号");
System.out.println("应付租金为:"+(huandate-date[index5])*rent+"元");
state[index5]=0;//重新对借阅状态进行赋值
date[index5]=0;//对日期进行赋值
}else{//两种情况进行判断
System.out.println("你要归还的书未借出,无法完成归还操作");
}
}else{
System.out.println("你要归还的书不存在!");
}


break;
case"6":
//退出系统
boo=true;
System.out.println("退出系统");
break;
}
} while (!boo);//循环条件进行判断
}

}

本人菜鸟制作,不知道代码中的是否存在错误,望见谅!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值