/*

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

*/

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. parallelism

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION Traditionally, the co ...

  2. Mock之easymock, powermock, and mockito

    easymock, powermock, and mockito Easymock Class Mocking Limitations To be coherent with interface mo ...

  3. VS2013中使用git发布解决方案master分支的时候出现错误

    VS2013GIT基础用法请自行参考:不会Git命令,照样玩转Git 环境:VS2013+ 码云错误描述:在VS2013中使用git发布解决方案master分支的时候出现“无法将本地分支 master ...

  4. OC ---- 字典集合 iOS学习-----细碎知识点总结

    实例方法的创建 NSDictionary *wukong = [[NSDictionary alloc] initWithObjectsAndKeys:", @"age" ...

  5. Hyper-V 2012 R2 故障转移群集

    和终端用户相比,企业用户对于业务的连续性和可靠性更为在意.相对而言,企业一般不会将追逐单一硬件的性能排在第一位. 如何衡量业务是否持续可用,一般使用"x 个 9"这种方式来定义.如 ...

  6. 移动应用抓包调试利器Charles

    转载:http://www.jianshu.com/p/68684780c1b0 一.Charles是什么? Charles是在 Mac或Windows下常用的http协议网络包截取工具,是一款屌的不 ...

  7. MsChart在MVC下的问题

    项目为webform和mvc混用,新建了Areas,在Areas目录下的aspx页面的图表无法显示. 解决方案 第一种方法: 将控件的ImageStorageMode设置为UseImageLocati ...

  8. nodejs 的ajax获取数据express

    var request = require('request'); request('https://api.weixin.qq.com/cgi-bin/ticket/getticket?access ...

  9. XMLtank测试记录

    1.首先就是这个分辨率对于高分屏的电脑适应太差了....立马让我有弃的想法..(如图) 2.游戏结束之后每次都要从第一关开始,很不方便.建议加入选关功能. 3.鼠标控制不方便,尤其是左键和右键分别控制 ...

  10. Djunit工作记录

    1.下载djunit 解压后放置到eclipse的plugins目录下即可 2.测试程序必须继承DjunitTestCase 3.测试程序完run as DJunitTest 运行 4.在djunit ...