Java--练习--DVD管理系统
一、详细代码
package demo2.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DVD2 {
//DVD管理系统
//声明三个数组 用来存储 名称 状态 借出日期 借出次数
String[] names = new String[50];
String[] state = new String[50];//状态
String[] dts = new String[50];//借出日期
int[] num = new int[50];//借出次数
Scanner sc =new Scanner(System.in);
//初始化定义
public void init() {
names[0] = "罗马假日";
names[1] = "超级玛丽";
names[2] = "功夫熊猫";
state[0] = "可借";
state[1] = "借出";
state[2] = "可借";
dts[0] = null;
dts[1] = "2012-12-13";
dts[2] = null;
num[0] = 20;
num[1] = 15;
num[2] = 36;
}
public static void main(String[] args) {
DVD2 dvd2 = new DVD2();//创建了一个 DVD2 类的 新实例,并将 其引用赋值 给 变量 dvd2。具体功能取决于 DVD2 类的定义
dvd2.init();//调用的是对象 dvd2的 init方法,用于初始化dvd2相关资源或状态
dvd2.menu();
}
// 1.菜单
public void menu() {
System.out.println("---------------------欢迎:DVD管理系统-------------------------");
System.out.println("0.热门排行;1.查看;2.新增;3.删除;4.借用;5.归还并结算;6.退出系统");
int i = sc.nextInt();
switch (i) {
case 0:
System.out.println("0.热门排行");
sort();
break;
case 1:
System.out.println("1.查看");
check();
break;
case 2:
System.out.println("2.新增");
add();
break;
case 3:
System.out.println("3.删除");
delete();
break;
case 4:
System.out.println("4.借用");
lend();
break;
case 5:
System.out.println("5.归还并结算");
back();
break;
case 6:
System.out.println("退出成功,感谢使用");
System.exit(6);
}
menu();
}
//2. 热门排行
public void sort() {
int sum = 0;
for (int i = 0; i < names.length; i++) {
if (names[i] == null) {
sum = i ;
break;
}
}
for (int i = 1; i <= sum - 1; i++) { //count - 1:表示数组最后一个元素的索引。
for (int j = 0; j <= sum - 1 - i; j++) {//count - 1 - i:表示当前未排序部分的最后一个元素的索引
if (num[j] < num[j + 1]) {
int tnum = num[j];
String tstate = state[j];
String tnames = names[j];
String tdts = dts[j];
num[j] = num[j + 1];
state[j] = state[j + 1];
names[j] = names[j + 1];
dts[j] = dts[j + 1];
num[j + 1] = tnum;
state[j + 1] = tstate;
names[j + 1] = tnames;
dts[j + 1] = tdts;
}
}
}
check();
}
//3. 查看
public void check() {
for (int i = 0; i < names.length; i++) {
if (names[i] != null) {
System.out.println("序 号 状态 名称 借出日期 借次数");
System.out.println((i + 1) + "\t\t" + state[i] + "\t\t" + names[i] + "\t" + dts[i] + "\t\t\t" + num[i]);
}
}
}
// 4.新增
public void add() {
System.out.println("请输入新增名称:");
String name = sc.next();
for (int i = 0; i < names.length; i++) {
if (name.equals(names[i])) {//查到 说明 已经存在 不能增加
System.out.println("名称已经存在,请重新输入:");
add();
break;
} else if (names[i] == null) {//没查找到 可以新增 赋值给正好置空的位置
names[i] = name;
state[i] = "可借";
for (int j = 0; j < names.length; j++) {
if (name.equals(names[i])) {
dts[j] = null;//因为有的DVD没有借出 借出日期是空的 所以如果跟着之前的循环走 会串格
break;
}
}
break;
}
}
check();
}
// 删除
public void delete() {
System.out.println("输入删除作品的名称:");
String name = sc.next();
boolean bool = false;
for (int i = 0; i < names.length; i++) {//遍历数组
if (name.equals(names[i]) && "可借".equals(state[i])) {
bool = true;
for (int j = 0; j < names.length; j++) {//可以删除 进行删除动作 最后一位置空 最后之前的每一位
if (names[j]!=null) {//为空时 说明没有数据,或者到最后一位 表示已经删除
names[j] = names[j + 1];
state[j] = state[j + 1];
dts[j] = dts[j + 1];
num[j] = num[j + 1];
} else if (j == names.length - 1) {
names[j] = null;
state[j] = null;
dts[j] = null;
num[j] = 0;
}
}
} else if (!bool) {
System.out.println("该书无法删除(借出/查无),重新输入");
delete();
break;
}
}
check();
}
// 借用
public void lend() {
System.out.println("请输入借用名称:");
String name = sc.next();
boolean found = false;
for (int i = 0; i < names.length; i++) {
if (name.equals(names[i])) {
found = true;
if (state[i].equals("可借")) {
System.out.println("请输入借出日期:");
String dtsl = sc.next();
state[i] = "借出";
dts[i] = dtsl;
num[i]++;
System.out.println("借出成功!!!");
check();
break;
} else if (state[i].equals("借出")) {
System.out.println("已借出,请重新输入:");
lend();
break;
}
break;
}
}
if (!found) { // 只在未找到时打印
System.out.println("名称不存在,请重新输入:");
lend();
}
}
// 归还结算费用
public void back() {
System.out.println("输入归还名称:");
String name = sc.next();
boolean found = false;
for (int i = 0; i < names.length; i++) {
if (name.equals(names[i])) {
found = true;
if (state[i].equals("借出")) {
state[i] = "可借";
String dtsl = dts[i];
System.out.println("请输入归还日期:");
String dtsb = sc.next();
dts[i] = null;
System.out.println("归还成功");
System.out.println("应付租金:" + getmoney(dtsl, dtsb));
check();
break;
} else if (state[i].equals("可借")) {
System.out.println("该名称未借出,请重新输入:");
back();
break;
}
break;
}
}
if (!found) {
System.out.println("未查找到该项,请重新输入:");
back();
}
}
//租金
public int getmoney(String dtsl,String dtsb) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//控制日期输入标准格式
try{
Date date1 =sdf.parse(dtsl);
Date date2=sdf.parse(dtsb);
long lon=(date2.getTime()-date1.getTime())/(1000*60*60*24);//求出时间差 目前设置 1天1块钱 租金就等于时间差
return (int)lon;
}catch(ParseException e){
e.printStackTrace();
return 1;
}
}
}
// 退出系统 输入6直接退出
二、运行结果
备注:谁有好方法能让输入的日期和上面的题头“借出日期”对齐!!!打在评论区,观摩一下~
原文地址:https://blog.csdn.net/PangQinghua/article/details/142989600
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!