package com.javatom.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class BookMgr {
/**
* 创建图书对象
*/
BookSet book = new BookSet();
/**
* 初始三个图书
*/
public void initial() {
book.name[0] = "数据结构";
book.state[0] = 0;
book.date[0] = "2018-7-1";
book.count[0] = 15;
book.name[1] = "数据库";
book.state[1] = 1;
book.count[1] = 12;
book.name[2] = "离散数学";
book.state[2] = 1;
book.count[2] = 30;
}
/**
* 开始菜单
*/
public void startMenu() {
System.out.println("欢迎使用图书借阅系统");
System.out.println("-------------------------------------");
System.out.println("0.查 看 图 书");
System.out.println("1.添加图书 ");
System.out.println("2.查找图书 ");
System.out.println("3.删除图书 ");
System.out.println("4.借出图书 ");
System.out.println("5.归还图书 ");
System.out.print("--------------------------------------\n");
System.out.print("请选择: ");
Scanner input = new Scanner(System.in);
int choice = input.nextInt();
switch (choice) {
case 0:// 查 看 图 书
list();
break;
case 1:// 添加图书
add();
break;
case 2:
search(); // 查看图书
break;
case 3:// 退出
delete();// 删除图书
break;
case 4:
lend();// 借出图书
break;
case 5:
returnbook();// 归还图书
break;
}
}
private void returnbook() {
System.out.println("---> 归还图书\n");
Scanner input = new Scanner(System.in);
long loan = 0;// 租金
System.out.print("请输入图书名称: ");
String want = input.next();
for (int i = 0; i < book.name.length; i++) {
if (book.name[i] == null) { // 无匹配
System.out.println("没有找到匹配信息!");
break;
} else if (book.name[i].equals(want) && book.state[i] == 0) { // 找到匹配
book.state[i] = 1;
System.out.print("请输入归还日期(年-月-日):");
String redate = input.next();
// 计算租金
loan = charge(book.date[i], redate);
System.out.println("\n归还《" + want + "》成功!");
System.out.println("借出日期为:" + book.date[i]);
System.out.println("归还日期为:" + redate);
System.out.println("应付租金(元):" + loan);
break;
} else if (book.name[i].equals(want) && book.state[i] == 1) { // 找到匹配但没有借出
System.out.println("该图书没有被借出!无法进行归还操作。");
break;
}
}
System.out.println("**************************");
returnMain();
}
// 计算租金
private long charge(String data1, String data2) {
// TODO Auto-generated method stub
long charge=0;
//日期类
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
try {
Date d1=sd.parse(data1);
Date d2=sd.parse(data2);
charge=(d2.getTime()-d1.getTime())/(24*60*60*100);//计算出归还天数,精确到小时分
} catch (ParseException e) {
e.printStackTrace();
}
return charge;
}
private void lend() {
System.out.println("借出图书\n");
Scanner input = new Scanner(System.in);
System.out.println("请输入图书名称");
String want = input.next();// 用户输入要借出书名
for (int i = 0; i < book.name.length; i++) {
if (book.name[i] == null) {
System.out.println("没有找到匹配图书信息");
break;
} else if (book.name[i].equals(want) && book.state[i] == 1) {
book.state[i] = 0;// 借出状态
System.out.println("请输入借出日期(年-月-日):");
book.date[i] = input.next();
System.out.println("借出<<" + want + ">>成功!");
book.count[i]++;
break;
} else if (book.name[i].equals(want) && book.state[i] == 0) {
System.out.println("<<" + want + ">>图书已被借出");
break;
}
}
System.out.println("*************************************");
returnMain();
}
private void delete() {
Scanner input = new Scanner(System.in);
boolean flag = false;// 声明变量用来表示删除标识--是否删除成功
System.out.println("删除图书\n");
System.out.println("请输入要删除图书名称:");
String name = input.next();
// 遍历数组,查找匹配信息
for (int i = 0; i < book.name.length; i++) {
// 查找到,每个元素前移一位
if (book.name[i] != null && book.name[i].equalsIgnoreCase(name) && book.state[i] == 1) {
int j = i;
while (book.name[j + 1] != null) {
book.name[j] = book.name[j + 1];
book.state[j] = book.state[j + 1];
book.date[j] = book.date[j + 1];
j++;
}
// 最后一个不为空的元素
book.name[j] = null;
book.date[j] = null;
System.out.println("删除<<" + name + ">>成功");
flag = true;// 这个标识删除成功
break;
} else if (book.name[i] != null && book.name[i].equalsIgnoreCase(name) && book.state[i] == 0) {
System.out.println("<<" + name + ">>" + "没有借出,不能删除");
flag = false;
break;
}
}
System.out.println("*****************************");
returnMain();// 删除完后,返回主菜单
}
private void add() {
Scanner input = new Scanner(System.in);
System.out.println("---> 新增图书\n");
System.out.print("请输入图书名称: ");
String name = input.next();
for (int i = 0; i < book.name.length; i++) {
if (book.name[i] == null) { // 查询最后一个空位置插入
book.name[i] = name;
book.state[i] = 1;// 更改新增的图书可借状态
System.out.println("新增《" + name + "》成功!");
break;
}
}
System.out.println("**************************");
returnMain();
}
private void list() {
// 定义新数组,用来存放排序后图书信息
String[] newname = new String[50]; //
int[] newcount = new int[50];
for (int k = 0; k < book.name.length; k++) {
newname[k] = book.name[k];
newcount[k] = book.count[k];
}
// 利用冒泡排序算法进行排序
for (int i = 0; i < newname.length; i++) {
for (int j = i + 1; j < newname.length; j++) {
if (newcount[i] > newcount[j]) {
int tempc = newcount[i];
newcount[i] = newcount[j];
newcount[j] = tempc;
String tempn = newname[i];
newname[i] = newname[j];
newname[j] = tempn;
}
}
}
System.out.println("---> 排行榜\n");
System.out.println("**************************");
System.out.println("次数\t名称");
// 显示排行榜信息
for (int i = newname.length - 1; i >= 0; i--) {
if (newname[i] != null) {
System.out.println(newcount[i] + "\t<<" + newname[i] + ">>");
}
}
System.out.println("**************************");
returnMain();
}
/**
* 返回主菜单
*/
public void returnMain() {
Scanner input = new Scanner(System.in);
System.out.print("输入0返回:");
if (input.nextInt() == 0) {
startMenu();
} else {
System.out.println("输入错误, 异常终止!");
}
}
/**
* 查看图书
*/
public void search() {
System.out.println("---> 查看图书\n");
System.out.println("序号\t状 态\t名称\t\t借出日期");
for (int i = 0; i < book.name.length; i++) {
if (book.name[i] == null) {
break;
} else if (book.state[i] == 0) {
System.out.println((i + 1) + "\t已借出\t" + "<<" + book.name[i] + ">>\t" + book.date[i]);
} else if (book.state[i] == 1) {
System.out.println((i + 1) + "\t可 借\t" + "<<" + book.name[i] + ">>");
}
}
System.out.println("**************************");
returnMain();
}
}