/*

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

*/

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. hibernate学习(5)——一对多关系表达

    一对多实现 1. 实现类 package com.alice.hibernate02.vo; import java.util.HashSet; import java.util.Set; publi ...

  2. Flink – Trigger,Evictor

    org.apache.flink.streaming.api.windowing.triggers;   Trigger public abstract class Trigger<T, W e ...

  3. json转js对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. iOS相关笔记

    #协议[1] [2] @property (nonatomic, assign) id<EveryFrameDelegate> delegate; 表明,这个delegate是一个需要实现 ...

  5. vert.x学习(二),使用Router来定义用户访问路径

    这里需要用到vertx-web依赖了,依然是在pom.xml里面导入 <?xml version="1.0" encoding="UTF-8"?> ...

  6. 《javascript高级程序设计》第三章学习笔记

    Undefined类型 该类型只有一个值,即undefined. 对未初始化的变量和未定义的变量,用typeof检测,都会返回'undefined' Null类型 该类型只有一个值,null.并且从逻 ...

  7. Quoit Design---hdu1007(最近点对问题 分治法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007 题意:给你n(2<=n<=10^6)个点的坐标,然后找到两个点使得他们之间的距离最小 ...

  8. C++学习笔记 宏 const 内联 枚举

    宏, const变量, 内联, 枚举 宏 宏定义: 宏即宏替换,在C语言源程序中允许用一个标识符来表示一个字符串,称为宏,关键字 define,在所有使用到宏的地方都只是直接的替换而不做任何类型检查 ...

  9. Android 解析Json_fastJson

    FastJSON是一个很好的java开源json工具类库,相比其他同类的json类库,它的速度的确是fast,最快!但是文档做得不好,在应用前不得不亲测一些功能.   实际上其他的json处理工具都和 ...

  10. u-boot FIT image介绍_转自“蜗窝科技”

    转自:http://www.wowotech.net/u-boot/fit_image_overview.html 1. 前言 Linux kernel在ARM架构中引入设备树device tree( ...