目录
1.实现数组创建
DVD名称数组、DVD借出状态数组、DVD借出日期数组、DVD借出次数数组
package com.softeem.array_.minidvd;
public class DVDSet {
//创建4个数组
String[] name = new String[50];//存储DVD名字
int[] state = new int[50];//存储借出DVD的状态:0借出/ 1可借
String[] date = new String[50];//存储DVD借出日期
int[] count = new int[50];//存储DVD借出次数
}
2.创建程序执行类
package com.softeem.array_.minidvd;
public class DVDStart {
public static void main(String[] args) {
//启动程序
DVDMs dvdMs = new DVDMs();
dvdMs.init();
dvdMs.startMenu();
}
}
3.创建程序菜单类
3.1初始化DVD数据
package com.softeem.array_.minidvd;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DVDMs {
/**
* 创建DVD对象
*/
DVDSet dvd = new DVDSet();
Scanner input = new Scanner(System.in);
/**
* 初始化DVD
* DVD名字、DVD状态、DVD借出时间、DVD借出次数
* 通过DVDSet类的实例化对象来操作数组
*/
public void init(){
dvd.name[0] = "斗破苍穹";
dvd.state[0] = 0;//已经借出
dvd.date[0] = "2018-1-1";//借出的DVD才有借出时间
dvd.count[0] = 10;
dvd.name[1] = "雪中悍刀行";
dvd.state[1] = 1;
dvd.count[1] = 100;
dvd.name[2] = "傲世九重天";//楚阳
dvd.state[2] = 1;
dvd.count[2] = 12;
}
}
3.2完成菜单方法编写
public void startMenu(){
System.out.println("\n欢 迎 使 用 迷 你 DVD 管 理 器");
System.out.println("-------------------------------------");
System.out.println("0. 借出排行榜");
System.out.println("1. 新 增 DVD");
System.out.println("2. 查 看 DVD");
System.out.println("3. 删 除 DVD");
System.out.println("4. 借 出 DVD");
System.out.println("5. 归 还 DVD");
System.out.println("6. 退 出");
System.out.println("--------------------------------------\n");
while (true){
System.out.print("请选择: ");
int choice = input.nextInt();
switch (choice){
case 0:
list();
break;
case 1:
add();
break;
case 2:
search();
break;
case 3:
deleteDvd();
break;
case 4:
lend();
break;
case 5:
returnDvd();
break;
case 6:
System.out.println("\n退出成功,欢迎下次使用");
//退出Java虚拟机
System.exit(0);
break;
default:
System.out.println("输入有误,请重新输入!");
break;
}
}
}
3.3完成借出排行榜功能
/**
* 借出排行榜:次数 + 名字
*/
private void list() {
//对次数进行排序
//创建两个新数组用来保存排序后的DVD
String[] newName = new String[dvd.name.length];
int[] newCount = new int[dvd.count.length];
//分别给新数组来赋值
for (int i = 0; i < dvd.name.length; i++) {
newName[i] = dvd.name[i];
newCount[i] = dvd.count[i];
}
//对新数组进行排序
for (int i = 0; i < newName.length -1; i++) {
for (int j = 0; j < newName.length - 1 - i; j++) {
if(newCount[j] > newCount[j+1]){
//对次数进行互换位置
int temp = newCount[j];
newCount[j] = newCount[j+1];
newCount[j+1] = temp;
//对名字进行互换位置
String nameTemp = newName[j];
newName[j] = newName[j+1];
newName[j+1] = nameTemp;
}
}
}
//打印
System.out.println("---> 排行榜\n");
System.out.println("******************************");
System.out.println("次数\t\t名称");
for (int i = newName.length-1; i >=0 ; i--) {
if(newName[i] != null){
System.out.println(newCount[i]+"\t\t"+newName[i]);
}
}
System.out.println("******************************");
returnMain();
}
3.4完成DVD新增
/**
* 新增DVD
*/
private void add() {
System.out.println("----> 新增DVD\n");
System.out.print("请输入DVD名称:");
String name = input.next();
//找空位置之后,在空位置地方插入
for (int i = 0; i <dvd.name.length ; i++) {
if(dvd.name[i] == null){
dvd.name[i] = name;
//设置DVD可借状态
dvd.state[i] = 1;
System.out.println("新增《"+name+"》成功!");
break;
}
}
System.out.println("****************************");
returnMain();
}
3.5完成DVD查看功能
/**
* 查看DVD
*/
private void search() {
System.out.println("----> 查看DVD\n");
System.out.println("序号\t\t状态\t\t名称\t\t借出日期");
for (int i = 0; i < dvd.name.length; i++) {
if(dvd.name[i] == null){
break;
}else if(dvd.state[i] == 0){//已借出
System.out.println((i+1)+"\t\t已借出\t《"+dvd.name[i]+"》\t\t"+dvd.date[i]);
}else if(dvd.state[i] == 1){//可借
System.out.println((i+1)+"\t\t可借\t《"+dvd.name[i]+"》\t\t");
}
}
System.out.println("****************************");
returnMain();
}
3.6 完成DVD删除功能
/**
* 删除DVD
*/
private void deleteDvd() {
System.out.println("----> 删除DVD\n");
System.out.print("请输入DVD名称:");
String name = input.next();
//遍历数组,匹配信息
for (int i = 0; i < dvd.name.length; i++) {
if(dvd.name[i] == null){
System.out.println("没有匹配信息");
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
//借出DVD不能删除 dvd.state = 0
System.out.println("《"+name+"》已被借出,不能删除!");
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 1){
//没有被借出可以删除 dvd.state = 1
int j = i;
//判断当前元素的后一个元素是否为空
while (dvd.name[j+1] != null){
//后一个元素覆盖前一个元素
dvd.name[j] = dvd.name[j+1];
dvd.state[j] = dvd.state[j+1];
dvd.date[j] = dvd.date[j+1];
dvd.count[j] = dvd.count[j+1];
j++;
}
//把最后一个元素置为空
dvd.name[j] = null;
dvd.date[j] = null;
dvd.count[j] = 0;
//dvd.state[j] = 1;
System.out.println("删除《"+name+"》成功");
break;
}
}
System.out.println("****************************");
returnMain();
}
3.7完成DVD借出功能
/**
* 借出DVD
*/
private void lend() {
System.out.println("----> 借出DVD\n");
System.out.print("请输入DVD名称:");
String name = input.next();
//匹配DVD名称
for (int i = 0; i < dvd.name.length; i++) {
if(dvd.name[i] == null){
System.out.println("没有匹配信息");
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 1){
//DVD的state为1 可借
System.out.println("请输入借出的日期:(年-月-日)");
String date = input.next();
//设置借出DVD的日期时间
dvd.date[i] = date;
//设置DVD的借出状态
dvd.state[i] = 0;
//设置DVD借出次数
dvd.count[i]++;
System.out.println("借出《"+name+"》成功");
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
//DVD的state为0 不可借
System.out.println("此《"+name+"》已借出!");
break;
}
}
System.out.println("****************************");
returnMain();
}
3.8完成DVD归还和计算
/**
* 归还DVD
*/
private void returnDvd() {
System.out.println("----> 归还DVD\n");
System.out.print("请输入DVD名称");
String name = input.next();
for (int i = 0; i < dvd.name.length; i++) {
if(dvd.name[i] == null){
System.out.println("没有匹配信息");
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
//归还DVD的状态是0
System.out.print("请输入归还日期:(年-月-日)");
String date = input.next();
//设置DVD状态state
dvd.state[i] = 1;
//计算佣金
long charge = charge(dvd.date[i], date);
System.out.println("归还《"+name+"》成功");
System.out.println("佣金(元):"+ charge * 0.5);
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 1){
//归还DVD的状态是1,提示DVD没有被借出
System.out.println("此DVD没有被借出! 不能进行归还操作");
break;
}
}
System.out.println("****************************");
returnMain();
}
3.9计算时间差方法和按0返回菜单
/**
* 计算时间差
* @param s
* @param date
*/
private long charge(String s, String date) {
//SimpleDateFormat:日期格式类
//年月日:2022-01-11
long chargeDate = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
//字符串日期文本----->日期对象
Date date1 = sdf.parse(s);
Date date2 = sdf.parse(date);
//date2.getTime() - date1.getTime() 得到归还日期和借出日期的毫秒差值
chargeDate = (date2.getTime() - date1.getTime()) / (1000*60*60*24);
} catch (ParseException e) {
e.printStackTrace();
}
return chargeDate;
}
/**
* 输入0返回菜单
*/
private void returnMain() {
while (true){
System.out.print("请输入0返回:");
int number = input.nextInt();
if(number == 0){
startMenu();
}else {
System.out.println("输入有误! 重新输入");
}
}
}
完成代码
package com.softeem.array_.minidvd;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/**
* @author zhengwen
* @create 2022-01-10 16:16
*/
public class DVDMs {
/**
* 创建DVD对象
*/
DVDSet dvd = new DVDSet();
Scanner input = new Scanner(System.in);
/**
* 初始化DVD
* DVD名字、DVD状态、DVD借出时间、DVD借出次数
* 通过DVDSet类的实例化对象来操作数组
*/
public void init(){
dvd.name[0] = "斗破苍穹";
dvd.state[0] = 0;//已经借出
dvd.date[0] = "2018-1-1";//借出的DVD才有借出时间
dvd.count[0] = 10;
dvd.name[1] = "雪中悍刀行";
dvd.state[1] = 1;
dvd.count[1] = 100;
dvd.name[2] = "傲世九重天";//楚阳
dvd.state[2] = 1;
dvd.count[2] = 12;
}
public void startMenu(){
System.out.println("\n欢 迎 使 用 迷 你 DVD 管 理 器");
System.out.println("-------------------------------------");
System.out.println("0. 借出排行榜");
System.out.println("1. 新 增 DVD");
System.out.println("2. 查 看 DVD");
System.out.println("3. 删 除 DVD");
System.out.println("4. 借 出 DVD");
System.out.println("5. 归 还 DVD");
System.out.println("6. 退 出");
System.out.println("--------------------------------------\n");
while (true){
System.out.print("请选择: ");
int choice = input.nextInt();
switch (choice){
case 0:
list();
break;
case 1:
add();
break;
case 2:
search();
break;
case 3:
deleteDvd();
break;
case 4:
lend();
break;
case 5:
returnDvd();
break;
case 6:
System.out.println("\n退出成功,欢迎下次使用");
//退出Java虚拟机
System.exit(0);
break;
default:
System.out.println("输入有误,请重新输入!");
break;
}
}
}
/**
* 删除DVD
*/
private void deleteDvd() {
System.out.println("----> 删除DVD\n");
System.out.print("请输入DVD名称:");
String name = input.next();
//遍历数组,匹配信息
for (int i = 0; i < dvd.name.length; i++) {
if(dvd.name[i] == null){
System.out.println("没有匹配信息");
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
//借出DVD不能删除 dvd.state = 0
System.out.println("《"+name+"》已被借出,不能删除!");
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 1){
//没有被借出可以删除 dvd.state = 1
int j = i;
//判断当前元素的后一个元素是否为空
while (dvd.name[j+1] != null){
//后一个元素覆盖前一个元素
dvd.name[j] = dvd.name[j+1];
dvd.state[j] = dvd.state[j+1];
dvd.date[j] = dvd.date[j+1];
dvd.count[j] = dvd.count[j+1];
j++;
}
//把最后一个元素置为空
dvd.name[j] = null;
dvd.date[j] = null;
dvd.count[j] = 0;
//dvd.state[j] = 1;
System.out.println("删除《"+name+"》成功");
break;
}
}
System.out.println("****************************");
returnMain();
}
/**
* 归还DVD
*/
private void returnDvd() {
System.out.println("----> 归还DVD\n");
System.out.print("请输入DVD名称");
String name = input.next();
for (int i = 0; i < dvd.name.length; i++) {
if(dvd.name[i] == null){
System.out.println("没有匹配信息");
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
//归还DVD的状态是0
System.out.print("请输入归还日期:(年-月-日)");
String date = input.next();
//设置DVD状态state
dvd.state[i] = 1;
//计算佣金
long charge = charge(dvd.date[i], date);
System.out.println("归还《"+name+"》成功");
System.out.println("佣金(元):"+ charge * 0.5);
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 1){
//归还DVD的状态是1,提示DVD没有被借出
System.out.println("此DVD没有被借出! 不能进行归还操作");
break;
}
}
System.out.println("****************************");
returnMain();
}
/**
* 计算时间差
* @param s
* @param date
*/
private long charge(String s, String date) {
//SimpleDateFormat:日期格式类
//年月日:2022-01-11
long chargeDate = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
//字符串日期文本----->日期对象
Date date1 = sdf.parse(s);
Date date2 = sdf.parse(date);
//date2.getTime() - date1.getTime() 得到归还日期和借出日期的毫秒差值
chargeDate = (date2.getTime() - date1.getTime()) / (1000*60*60*24);
} catch (ParseException e) {
e.printStackTrace();
}
return chargeDate;
}
/**
* 借出DVD
*/
private void lend() {
System.out.println("----> 借出DVD\n");
System.out.print("请输入DVD名称:");
String name = input.next();
//匹配DVD名称
for (int i = 0; i < dvd.name.length; i++) {
if(dvd.name[i] == null){
System.out.println("没有匹配信息");
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 1){
//DVD的state为1 可借
System.out.println("请输入借出的日期:(年-月-日)");
String date = input.next();
//设置借出DVD的日期时间
dvd.date[i] = date;
//设置DVD的借出状态
dvd.state[i] = 0;
//设置DVD借出次数
dvd.count[i]++;
System.out.println("借出《"+name+"》成功");
break;
}else if(dvd.name[i].equals(name) && dvd.state[i] == 0){
//DVD的state为0 不可借
System.out.println("此《"+name+"》已借出!");
break;
}
}
System.out.println("****************************");
returnMain();
}
/**
* 新增DVD
*/
private void add() {
System.out.println("----> 新增DVD\n");
System.out.print("请输入DVD名称:");
String name = input.next();
//找空位置之后,在空位置地方插入
for (int i = 0; i <dvd.name.length ; i++) {
if(dvd.name[i] == null){
dvd.name[i] = name;
//设置DVD可借状态
dvd.state[i] = 1;
System.out.println("新增《"+name+"》成功!");
break;
}
}
System.out.println("****************************");
returnMain();
}
/**
* 查看DVD
*/
private void search() {
System.out.println("----> 查看DVD\n");
System.out.println("序号\t\t状态\t\t名称\t\t借出日期");
for (int i = 0; i < dvd.name.length; i++) {
if(dvd.name[i] == null){
break;
}else if(dvd.state[i] == 0){//已借出
System.out.println((i+1)+"\t\t已借出\t《"+dvd.name[i]+"》\t\t"+dvd.date[i]);
}else if(dvd.state[i] == 1){//可借
System.out.println((i+1)+"\t\t可借\t《"+dvd.name[i]+"》\t\t");
}
}
System.out.println("****************************");
returnMain();
}
/**
* 借出排行榜:次数 + 名字
*/
private void list() {
//对次数进行排序
//创建两个新数组用来保存排序后的DVD
String[] newName = new String[dvd.name.length];
int[] newCount = new int[dvd.count.length];
//分别给新数组来赋值
for (int i = 0; i < dvd.name.length; i++) {
newName[i] = dvd.name[i];
newCount[i] = dvd.count[i];
}
//对新数组进行排序
for (int i = 0; i < newName.length -1; i++) {
for (int j = 0; j < newName.length - 1 - i; j++) {
if(newCount[j] > newCount[j+1]){
//对次数进行互换位置
int temp = newCount[j];
newCount[j] = newCount[j+1];
newCount[j+1] = temp;
//对名字进行互换位置
String nameTemp = newName[j];
newName[j] = newName[j+1];
newName[j+1] = nameTemp;
}
}
}
//打印
System.out.println("---> 排行榜\n");
System.out.println("******************************");
System.out.println("次数\t\t名称");
for (int i = newName.length-1; i >=0 ; i--) {
if(newName[i] != null){
System.out.println(newCount[i]+"\t\t"+newName[i]);
}
}
System.out.println("******************************");
returnMain();
}
/**
* 输入0返回菜单
*/
private void returnMain() {
while (true){
System.out.print("请输入0返回:");
int number = input.nextInt();
if(number == 0){
startMenu();
}else {
System.out.println("输入有误! 重新输入");
}
}
}
}