1、DvdSet类

package dvd_01;
/**
* 定义dvd的一些属性
* @author Administrator
*
*/
public class DvdSet {
String[] name=new String[50]; //定义一个数组存dvd名字
boolean[] state=new boolean[50]; //定义DVD借出状态:true为已借出 false为可借
String[] date=new String[50]; //定义借出日期
}

2、DvdManager类

package dvd_01;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner; public class DvdManager {
Scanner input = new Scanner(System.in);
DvdSet dvd = new DvdSet(); // 初始化对象
boolean isJiechu = true; // 已借出是true 可借是false // 初始化三张DVD信息
public void initial() {
dvd.name[0] = "罗马假日";
dvd.state[0] = true; // 已借出
dvd.date[0] = "2019-9-11"; dvd.name[1] = "变形金刚";
dvd.state[1] = false; // 可借 dvd.name[2] = "生化危机";
dvd.state[2] = false; // 可借 dvd.name[3] = "钢铁侠";
dvd.state[3] = true; // 已借出
dvd.date[3] = "2019-9-10";
} public void startMenu() {
System.out.println("欢迎使用迷你DVD管理器");
System.out.println("--------------------------");
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("---------------------------");
System.out.print("请选择:");
int choice = input.nextInt();
switch (choice) {
case 1:
add(); // 新增DVD
break;
case 2:
search(); // 查看DVD
break;
case 3:
delete(); // 删除DVD
break;
case 4:
lend(); // 借出DVD
break;
case 5:
returnDvd(); // 归还DVD
break;
case 6:
System.out.println("感谢您的使用!");
break;
default:
System.out.println("你的输入有误,请重新输入");
returnMain();
}
} public void returnMain() {
System.out.print("输入0返回:");
if (input.nextInt() == 0) {
startMenu();
} else {
System.out.println("输入错误,程序结束!");
}
} // 新增DVD
public void add() {
/**
* 首先判断i是否为空,如果为空就将name传给i,并将状态改为可借
*/
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.state[i] = false; // 新增的dvd是可借的
System.out.println("新增《" + name + "》成功");
break;
}
}
System.out.println("**************************");
returnMain();
} // 查看DVD
public void search() {
/**
* 如果i为空跳出循环i+1,如果状态为不可借就输出已经借出,并输出时间
*/
System.out.println("--->查看DVD\n");
System.out.println("序号\t状态\t名称\t\t借出日期");
for (int i = 0; i < dvd.name.length; i++) {
if (dvd.name[i] == null) {
break;
} else if (dvd.state[i] == true) {
System.out.println((i + 1) + "\t已借出\t《" + dvd.name[i] + "》\t" + dvd.date[i]);
} else if (dvd.state[i] == false) {
System.out.println((i + 1) + "\t可借\t《" + dvd.name[i] + "》");
}
}
System.out.println("**************************");
returnMain();
} // 删除DVD
public void delete() {
/**
* 判断i位置不为空,名字匹配,状态为可借。循环将名字,状态和日期往前移动,最后一位置空
* 如果状态为借出就跳出,不能删除
*/
System.out.println("--->删除DVD\n");
System.out.print("请输入DVD的名称:");
String name = input.next();
boolean flag = false;
for (int i = 0; i < dvd.name.length; i++) {
if (dvd.name[i] != null && dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == false) {
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];
j++;
}
// 最后一个不为空的元素置空
dvd.name[j] = null;
dvd.date[j] = null;
System.out.println("删除《" + name + "》成功!");
flag = true; // 标识位
break;
} else if (dvd.name[i] != null && dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == true) {
System.out.println("《" + name + "》为借出状态,不能删除!");
flag = true;
break;
} if (flag == true) {
System.out.println("没有找到《"+name+"》这个dvd!");
}
}
System.out.println("**************************");
returnMain();
} // 借出DVD
public void lend() {
/**
* 名字不为空,状态为可借,就可以借出,并将状态改为借出状态
* 按格式输入结束日期,并存储在date中
* 名字不为空,状态为借出,输出不可借
*
*/
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("没有找到《"+name+"》这个dvd!");
break;
} else if (dvd.name[i].equals(name) && dvd.state[i] == false) {
System.out.print("请输入借出日期(年-月-日):");
dvd.date[i] = input.next();
System.out.println("《" + name + "》借出成功");
dvd.state[i] = true;
break;
} else if (dvd.name[i].equals(name) && dvd.state[i] == true) {
System.out.println("不好意思,《" + name + "》已被借出!");
break;
}
}
System.out.println("**************************");
returnMain();
} // 归还DVD
public void returnDvd() {
/**
* 定义一个long存储租金
* 如果名字存在,状态为借出,按规定输入归还日期,将参数传给charge方法,状态改为可借,输出相关信息
* 如果名字存在,状态可借,输出无法操作
*/
System.out.println("--->归还DVD\n");
System.out.print("请输入DVD名称:");
String name = input.next();
long money = 0; // 租金
for (int i = 0; i < dvd.name.length; i++) {
if (dvd.name[i] == null) {
System.out.println("没有找到《"+name+"》这个dvd!");
break;
} else if (dvd.name[i].equals(name) && dvd.state[i] == true) {
System.out.print("请输入归还日期(年-月-日):");
String redate = input.next();
money = charge(dvd.date[i], redate); //租金计算,将两个参数传递给charge方法
System.out.println("\n《" + name + "》归还成功");
dvd.state[i] = false;
System.out.println("借出日期为:" + dvd.date[i]);
System.out.println("归还日期为:" + redate);
System.out.println("应付租金(元):" + money);
break;
} else if (dvd.name[i].equals(name) && dvd.state[i] == false) {
System.out.println("《" + name + "》没有被借出,无法进行归还操作!");
break;
}
}
System.out.println("**************************");
returnMain();
} // 计算日期差
public long charge(String dstr1, String dstr2) {
/**
* 定义返回值为long的方法,调用格式化日期方法,将两个参数分别赋值给date对象,
* 计算money,返回
*/
long money = 0;
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); // 格式化日期
try {
Date d1 = sd.parse(dstr1);
Date d2 = sd.parse(dstr2);
money = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);
} catch (ParseException e) {
e.printStackTrace();
}
return money;
}
}

3、Test类

package dvd_01;

public class Test {
public static void main(String[] args) { DvdManager dvdManager = new DvdManager();
dvdManager.initial(); //调用初始化方法
dvdManager.startMenu(); //调用开始菜单
}
}

4、运行结果

java 迷你DVD管理器的更多相关文章

  1. 迷你DVD管理器

    import java.text.*; import java.util.*; class DVDSet { String[] name=new String[50]; //定义一个DVD数组 boo ...

  2. 迷你DVD管理器项目

    package chapter5; import java.util.*; public class MiniDVD { public static void main(String[] args){ ...

  3. java模拟DVD管理器

    import java.util.*;import java.text.*;class DVDSet{    String[] name = new String[50]; //名字    int[] ...

  4. 迷你DVD管理器(Java版)

    import java.text.SimpleDateFormat;import java.util.Date;import java.util.Scanner;class Test {    pub ...

  5. DVD管理器集合版

    利用所学的集合写出的DVD管理系统,运用到了所学到集合基础. import java.text.ParseException; import java.text.SimpleDateFormat; i ...

  6. 运用集合来做一个DVD管理器(全代码)

    package DVD;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Array ...

  7. 控制台输出<迷你DVD管理>

    使用顺序.选择.循环.跳转语句 数组 功能实现菜单显示和切换 输入的数字不符合要求直接退出程序 用户可以选择新增.查看. 删除.借出.归还.退出 思路分析 使用switch语句实现菜单选择 使用do- ...

  8. java基础 布局管理器

    概念: 组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理. 种类: java共提供了物种布局管理器:流式布局管理 ...

  9. JAVA 网格布局管理器

    //网格布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian3 extends JFrame{ //定义组件 JBut ...

随机推荐

  1. ajax 重复提交

    1.一次点击事件触发两次请求,找到的原因是重复引用了同一个.js文件,后台返回来的数据是个页面,在这个页面里面又引用了.js,所以导致一次点击多次请求

  2. ISA虚拟化的条件

    ISA(Instruction Set Architecture) 指令集体系结构,是硬件与软件层之间的接口. 本地系统虚拟机 本地系统虚拟机,就是Bare-Metal虚拟机,直接运行在硬件上,在它上 ...

  3. 第一章 Linux是什么

    Linux是核心与系统调用接口两层中间的操作系统 不同硬件的功能函数并不相同,IBM的Power CPU与Inter的x86架构不同,所以同一套操作系统是不能在不同的硬件平台上面运行的.也就是说,每种 ...

  4. js 正则替换的使用方法

    function compress(source) { const keys = {}; ⇽--- 存储目标key source.replace( /([^=&]+)=([^&]*)/ ...

  5. TFS发布的时候出现 ENOENT: no such file or directory, stat 'E:\vsts-agent\_work\r57\a\KingEagle-Mysql-Dev\drop\12917.zip' 解决方案

    出现 ENOENT: no such file or directory, stat 'E:\vsts-agent\_work\r57\a\KingEagle-Mysql-Dev\drop\12917 ...

  6. 笔记49 在Spittr应用中整合Hibernate

    在前边构建的Spittr应用中整合Hibernate 由于最近所学的hibernate都是使用xml方式进行配置的,所以在与以Java方式配置的Spittr应用结合时就会出现一些小问题,在此进行总结. ...

  7. CSIC_716_20191205【TCP-解决粘包问题、UDP模板】

    ---------------------------------------------------------------------------------------------------- ...

  8. jQuery - 事件相关

    <script> $(function() { // 事件绑定 // 第一种方式 $("#btn").click(function() { alert("1 ...

  9. 使用jQuery对象

    1基本行为 * size()/length: 包含的DOM元素个数 * [index]/get(index): 得到对应位置的DOM元素 * each(): 遍历包含的所有DOM元素 * index( ...

  10. 【SPOJ DQUERY】区间数字统计

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 因为区间的端点移动一个单位的话,只会涉及到一个元素的增多或减少. 因此可以用莫队算法来解决. 只需要开一个数组(大小1百万),用下标来快速检索 ...