/*

这个代码中涉及到的知识点很多,大家要慢慢悟!!

*/

import java.util.*;

import java.text.*;

class DvdSet {

//定义三个属性
String[] name = new String[50]; // 为保证数组足够大
String[] date = new String[50];// 借书的时间
int[] state = new int[50]; // 借书的状态 , 0表示借出 ,1.表示可以借。
int[] count = new int[50]; // 借书的次数
}

class DvdMgr {

//创建一个DvdSet对象
DvdSet dvd = new DvdSet();

//1.第一个方法初始化三个DVD数据
public void initial(){
//初始化三个Dvd
dvd.name[0]= "罗马假日";
dvd.state[0]=0;
dvd.count[0] = 30;
dvd.date[0]= "2016-11-18";
dvd.name[1]="风声鹤唳";
dvd.state[1]=1;
dvd.name[2]= "浪漫满屋";
dvd.state[2]=1;
dvd.count[2] = 10;
}

//2.实现一个菜单切换
public void startMenu() {

System.out.println("*********************************");
System.out.println("******欢迎使用迷你DVD管理器******");
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.DVD排行榜 ******");
System.out.println("****** 7.退出 ******");
System.out.println("*********************************");

Scanner input = new Scanner(System.in);
System.out.println("请输入您的操纵:");
int option = input.nextInt();

switch(option){

case 1 :
addDvd();
returnMenu();
break;

case 2 :
searchDvd();
returnMenu();
break;
case 3 :
deleteDvd();
returnMenu();
break;
case 4 :
lendDvd();
returnMenu();
break;
case 5 :
returnDvd();
returnMenu();
break;
case 6:
list();
returnMenu();

break;
case 7:
System.out.println("谢谢使用,欢迎下次在来");
break;
default:
System.out.println("输入异常,程序已经吓崩溃,正在重启中...");
break;

}

}

//3.返回菜单
public void returnMenu() {
System.out.println("输入0返回:");
Scanner input = new Scanner(System.in);

if(input.nextInt() == 0){

//在此进入菜单切换
startMenu();
}else {

System.out.println("输入异常,请从输入:");
returnMenu(); // 递归调用。
}

}

//4.查看的功能
public void searchDvd(){
System.out.println("******欢迎进入查看页面*****");
//\t Tap
System.out.println("序号\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"+"<<"+dvd.name[i]+">>\t已借出\t"+dvd.date[i]);
}else if(dvd.state[i] == 1){

//代没有借出
System.out.println(i+1+"\t"+"<<"+dvd.name[i]+">>\t可借\t");
}
}

System.out.println("**************************************");

}

//5.新增Dvd
public void addDvd(){
System.out.println("******欢迎进入添加页面*****");
System.out.println("请输入您要添加的Dvd:");
Scanner input = new Scanner(System.in);
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] = 1;
System.out.println("<<"+name+">>dvd添加成功");
break;
}
}

}

//6.删除dvd

public void deleteDvd(){
System.out.println("******欢迎进入删除页面*****");
System.out.println("请输入您要删除的Dvd名称:");
Scanner input = new Scanner(System.in);
String name = input.next();

//1.没有找到 : 提示没有找到 请重新输入
//2.找到 :
//1.已经借出去 : 不能够删除
//2.没有借出去 : 删除

for(int i = 0;i<dvd.name.length;i++){
//查找是否存在
if(dvd.name[i] != null){

if(dvd.name[i].equalsIgnoreCase(name)){ //已经找到

//是否已经被借出
if(dvd.state[i] == 0){ // 借出
System.out.println("《"+name+"》已经被借出");
break;
}else if(dvd.state[i] == 1) {

//没有借出需要删除
//思路 : 1.用后面一个替换前面的。
//2.把最后面多余的地方赋值为null.

for(int j = i ;j<dvd.name.length;j++){

//做交换
if(dvd.name[j +1] != null){
dvd.name[j] = dvd.name[j+1];
dvd.state[j] = dvd.state[j+1];

}else{
//清空最后一个值
dvd.name[j] = null;
dvd.date[j] = null;
break;
}

}

System.out.println("删除《"+name+"》成功");
break;
}
}

}else {

System.out.println("没有您要删除的dvd");
System.out.println("***********************************************");
break;
}
}

}

//7.借dvd的功能
public void lendDvd(){
System.out.println("********欢迎进入借DVD页面********");
System.out.println("请输入您要借的dvd名称:");
Scanner input = new Scanner(System.in);
String name = input.next();

//1.判断有没有dvd
//1.又没有被借出去。
for(int i = 0;i<dvd.name.length;i++){

if(dvd.name[i] != null){ // 有dvd

if(dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == 1){ //有DVD并且没有被借出去

//借DVD
//1.修改状态
dvd.state[i] = 0;
System.out.println("请输入借DVD的时间(年-月-日):");
Scanner inputDate = new Scanner(System.in);
dvd.date[i] = inputDate.next();
System.out.println("借DVD成功");
dvd.count[i]++;
break;

}else if(dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == 0){
System.out.println("不好意思此借DVD已经被借出");
break;
}

}else { // dvd

System.out.println("没有您要找的DVD");
break;
}
}

}

//8.还Dvd 计算价格
public void returnDvd(){

System.out.println("********欢迎进入还DVD页面******************");
System.out.println("请输入还dvd的名称:");
Scanner input = new Scanner(System.in);
double price = 0.0;
String name = input.next();
for(int i = 0;i<dvd.name.length;i++){

if(dvd.name[i]!=null){ //有

if(dvd.name[i].equalsIgnoreCase(name) && dvd.state[i] == 0){ //以借出就可以归还
dvd.state[i] = 1;
System.out.println("请输入归还DVD的时间(年-月-日):");
Scanner inputDate = new Scanner(System.in);
//获取时间差
long charge = charge(dvd.date[i],inputDate.next());
price = charge * 1;
System.out.println("《"+dvd.name[i]+"》归还成功");
System.out.println("您应付"+price+"元");
//清空时间
dvd.date[i] = null;
break;

}

}else{
System.out.println("没有找到匹配的信息");
break;
}
}
System.out.println("************************************************");

}

public long charge(String date1,String date2){

//做时间差
//将String转为Date做计算
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
long charge = 0;
try{
Date d1 = sd.parse(date1);
Date d2 = sd.parse(date2);
//时间也是以毫秒为单位。
charge = (d2.getTime() - d1.getTime()) / (1000*24*60*60);
}catch(ParseException e){
System.out.println(e);
}

return charge;
}

//排行榜
public void list(){

System.out.println("欢迎进入Dvd排行榜");
//排序
for(int i = 0 ; i <dvd.name.length-1;i++){

if(dvd.name[i] != null){

for(int j = 0; j<dvd.name.length-1-i;j++){

if(dvd.name[j] != null){

if(dvd.count[j] < dvd.count[j+1]){

int temp = dvd.count[j];
dvd.count[j] = dvd.count[j+1];
dvd.count[j+1]= temp;

String name1 = dvd.name[j];
dvd.name[j] = dvd.name[j+1];
dvd.name[j+1] = name1;

String date1= dvd.date[j];
dvd.date[j] = dvd.date[j+1];
dvd.date[j+1] = date1;

int state1= dvd.state[j];
dvd.state[j] = dvd.state[j+1];
dvd.state[j+1] = state1;

}
}else {
break;
}


}

}else{
break;
}
}
System.out.println("序号\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"+"<<"+dvd.name[i]+">>\t已借出\t"+dvd.date[i]);
}else if(dvd.state[i] == 1){

//代没有借出
System.out.println(i+1+"\t"+"<<"+dvd.name[i]+">>\t可借\t");
}
}

System.out.println("**************************************");

}

class DvdMain{

public static void main (String[] args){

DvdMgr dvd = new DvdMgr();
//初始化dvd
dvd.initial();

//开始进入切换菜单
dvd.startMenu();
}
}

}

如何用Java实现DVD的一些功能的更多相关文章

  1. 如何用Java编写一段代码引发内存泄露

    本文来自StackOverflow问答网站的一个热门讨论:如何用Java编写一段会发生内存泄露的代码. Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码.这个问题我一点思路都没有, ...

  2. 如何用java实现使用电子邮件控制你的电脑

    上两天看到一篇文章,用python实现电子邮件控制电脑的有趣的小程序 python 实现微信控制电脑     python版的视频教程 但是苦于自己没接触过python于是想到能不能用java实现,于 ...

  3. JAVA实现双向链表的增删功能

    JAVA实现双向链表的增删功能,完整代码 package linked; class LinkedTable{ } public class LinkedTableTest { //构造单链表 sta ...

  4. java实现循环链表的增删功能

    java实现循环链表的增删功能,完整代码 package songyan.test.demo; public class Demo { // java 实现循环链表 public static voi ...

  5. Atitit php java python nodejs错误日志功能的比较

    Atitit php  java  python  nodejs错误日志功能的比较 1.1. Php方案 自带 1 1.2. Java解决方案 SLF4J 1 1.3. Python解决方案 自带lo ...

  6. Fastjson是一个Java语言编写的高性能功能完善的JSON库。

    简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson. ...

  7. java实现网站paypal支付功能并且异步修改订单的状态

    java实现网站paypal支付功能并且异步修改订单的状态:步骤如下 第一步:去paypal的官网https://www.paypal.com注册一个个人账号,在创建沙箱测试账号时需要用到 第二步:p ...

  8. Java实现在线预览功能

    java实现在线预览功能,需要用到  jacob.dll jacob.jar   预览pdf所需js  pdfobject.min.js 将上传文件转为pdf保存. <div class=&qu ...

  9. Java案例之随机验证码功能实现

    实现的功能比较简单,就是随机产生了四个字符然后输出.效果图如下,下面我会详细说一下实现这个功能用到了那些知识点,并且会把 这些知识点详细的介绍出来.哈哈 ,大神勿喷,对于初学Java的人帮助应该蛮大的 ...

随机推荐

  1. Thinking in Java——笔记(12)

    Error Handling with Exceptions The ideal time to catch an error is at compile time, before you even ...

  2. SSH配置中出现问题

    问题1:org.springframework.beans.factory.NoSuchBeanDefinitionException: org.springframework.beans.facto ...

  3. python学习道路(day10note)(线程,进程)

    1.计算机的发展史 看alex的博客吧,了解一下可以了 2.线程与GIL简介 #线程 #一道单一的指令的控制流,寄生在进程中 #单一进程里的多个线程是共享数据的 #多个线程涉及修改共享数据的时候需要枷 ...

  4. Apache Kafka – KIP 32,33 Time Index

    32, 33都是和时间相关的, KIP-32 - Add timestamps to Kafka message 引入版本,0.10.0.0 需要给kafka的message加上时间戳,这样更方便一些 ...

  5. java基础总结——基础语法1

    一.标示符 二.关键字 三.java基本数据类型 3.1 常量 ● 常量表示不能改变的数值. ● java中常量的分类: 1. 整数常量.所有整数 2. 小数常量.所有小时 3. 布尔型常量.较为特有 ...

  6. SVM经典论文

    1. P. H. Chen, C. J. Lin, and B. Schölkopf, A tutorial on ν-support vector machines, Appl. Stoch. Mo ...

  7. C# LINQ

    Sorting: OrderBy ThenBy OrderByDescending ThenByDescending Reverse public IEnumerable<Customer> ...

  8. linux io stack

  9. Docker的容器

    容器是一个打包了应用和服务的环境,是一个轻量级的虚拟机,每一个容器都由一组特定的应用和必要的依赖库组成. 容器的管理操作 容器常见的命令:查看.创建.启动.终止和删除 创建容器 docker crea ...

  10. App.domain http->https

    App.domain = `${location.origin}/toa-mgw/rest/gateway`.replace(/http:\/\//, 'https://');