package DVD;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.TreeSet;

class Dvd{
    String name;
    String date;
    int state;
    int count;
    
    public Dvd(String name,int state,String date,int count){
        this.name = name;
        this.date = date;
        this.state = state;
        this.count = count;
    }
    
    public String toString() {
        // TODO Auto-generated method stub
        if(state==1){
            return "可借\t"+"《"+name+"》\t"+date;
        }
        return "不可借\t"+"《"+name+"》\t"+date;
    }
}

//比较器
class DVDCompar implements Comparator<Dvd>{
    @Override
    public int compare(Dvd o1, Dvd o2) {
        // TODO Auto-generated method stub
        return o2.count-o1.count;
    }
}

class DvdMgr{
    
    List<Dvd> list = new ArrayList<Dvd>(); //创建一个list集合
    
    public void initial(){  
        Dvd dvd = new Dvd("罗马假日", 0, "2016-12-1", 20);
        Dvd dvd2 = new Dvd("浪漫满屋", 1, " ", 30);
        Dvd dvd3 = new Dvd("风声鹤唳", 1, " ", 10);
        
        // 初始化集合
        list.add(dvd);
        list.add(dvd2);
        list.add(dvd3);
    }

// 菜单
    public void returnMenu(){
        System.out.println("******欢迎使用迷你DVD管理器******");
        System.out.println("****************************");
        System.out.println("******* 0.借出排行榜 **********");
        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("****************************\n");
        
        System.out.print("请选择:");
        Scanner scanner = new Scanner(System.in);
        int input = scanner.nextInt();
        
        switch (input) {
        case 0:
            Top();  
            break;
        case 1:
            add();
            break;
        case 2:
            search();
            break;
        case 3:
            delete();
            break;
        case 4:
            lend();
            break;
        case 5:
            returnDVD();
            break;
        case 6:
            System.out.println("*****欢迎下次继续使用!*****");
            break;
        default:
            System.out.println("输入错误,这个功能正在完善中....");
            break;
        }
    }
//添加    
    public void add(){
        System.out.println("欢迎进入新增页面!");
        System.out.print("请输入DVD名称: ");
        Scanner scanner = new Scanner(System.in);
        String inputName = scanner.next();
        int num = list.size();
        
        Dvd dvd = new Dvd(inputName, 1, " ", 0);
        list.add(dvd);
        
        if(list.size()>num){
            System.out.println("新增《"+inputName+"》成功");
            
            returnCom();
            
        } else {
            System.out.println("新增失败");
        }
    }
//查找    
    public void search(){
        System.out.println("********欢迎进入查找页面********\n");
        System.out.println("序号\t状态\t"+"名称\t\t"+"借出日期");
        for(int i = 0; i < list.size(); i++){
            System.out.println((i+1)+"\t"+list.get(i));
        }
        
        returnCom();
    }
//删除    
    public void delete(){
        System.out.println("*****欢迎进入删除页面*****");
        while(true){
            System.out.print("请输入DVD名称:");
            Scanner scanner = new Scanner(System.in);
            String input = scanner.next();
            
            boolean b = false;        
            for(int i = 0; i < list.size(); i++){
                if(list.get(i).name.equals(input)){
                    list.remove(i);
                    b = true;
                }
            }
            
            if(b == true){
                System.out.println("删除《"+input+"》成功");
                returnCom();
            }else {
                System.out.println("没有这个DVD,请重新输入!");
            }
        }
    }
    
// 借出    
    public void lend(){
        System.out.println("******欢迎进入借出页面*****");
        System.out.print("请输入DVD名称:");
        Scanner scanner = new Scanner(System.in);
        String input = scanner.next();
        
        boolean b = false;
        for(int i = 0; i < list.size(); i++){
            Dvd dvd = list.get(i);
            if(dvd.name.equals(input)){
                b = true;
                if(dvd.state==1){    
                    System.out.println("请输入借出日期:(yyyy-MM-dd):");
                    Scanner scanner2 = new Scanner(System.in);
                    String string = scanner2.next();
                    dvd.date = string;
                    dvd.state = 0;
                    dvd.count++;
                }else {
                    System.out.println("您要借的DVD已被借出!");
                }
            }
        }
        
        if(b == false){
            System.out.println("您输入的DVD不存在");
        }
        returnCom();
    }
    
//归还
    public void returnDVD(){
        System.out.println("******欢迎进入归还页面*****");
        System.out.print("请输入DVD名称:");
        Scanner scanner = new Scanner(System.in);
        String input = scanner.next();
        
        for(int i = 0; i < list.size(); i++){
            Dvd dvd = list.get(i);
            if(dvd.name.equals(input)){
                if(dvd.state == 0){
                    dvd.state = 1;
                    System.out.print("请输入归还的日期(yyyy-MM-dd): ");
                    Scanner scanner2 = new Scanner(System.in);
                    String string = scanner2.next();
                    long money = money(string,dvd);
                    System.out.println("归还《"+input+"》成功");
                    System.out.println("需要付租金(¥):"+money);
                }else {
                    System.out.println("这DVD不是我们这里的吧,我们的DVD没有被借出!");
                }
            }
        }
        returnCom();
    }

// 算钱
    public long money(String string, Dvd dvd){
        long change = 0;
        SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");  // 字符串转为Date做计算
        try{
            Date d1 = sd.parse(dvd.date);  //该时间是以毫秒为单位,计算时记得转换
            Date d2 = sd.parse(string);
            change = (d2.getTime()-d1.getTime())/(24*60*60*1000);  //转换得到天
        } catch(ParseException e){
            e.printStackTrace();
        }
        dvd.date = " ";
        return change;
    }

// 排行榜
    public void Top(){
        System.out.println("------TOP------");
        System.out.println("次数\t名称");
        
        Iterator<Dvd> it = list.iterator();
        TreeSet<Dvd> tSet = new TreeSet<>(new DVDCompar());  //传个比较器比较
        while(it.hasNext()){
            tSet.add(it.next());
        }
        it = tSet.iterator();
        while(it.hasNext()){
            Dvd dvd = it.next();
            System.out.println(dvd.count+"\t"+dvd.name);
        }
        
        returnCom();
    }

// 输入0返回菜单
    public void returnCom(){
        while(true){
            System.out.print("请输入0返回: ");
            Scanner scanner2 =  new Scanner(System.in);
            int inputNum = scanner2.nextInt();
            
            if(inputNum == 0){
                System.out.println();
                returnMenu();
                break;
            } else {
                System.out.println("指令错误,请重新输入!");
            }
        }
    }
    
}
public class Demo {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        DvdMgr dvdMgr = new DvdMgr();
        dvdMgr.initial();
        dvdMgr.returnMenu();
    }
}

运用集合来做一个DVD管理器(全代码)的更多相关文章

  1. DVD管理器集合版

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

  2. java模拟DVD管理器

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

  3. 迷你DVD管理器

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

  4. 迷你DVD管理器项目

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

  5. java 迷你DVD管理器

    1.DvdSet类 package dvd_01; /** * 定义dvd的一些属性 * @author Administrator * */ public class DvdSet { String ...

  6. 做一个阅读管理APP

    背景 由于最近在看的书有点多,所以一直想找一个能够管理阅读进度的书(鄙人记性不是很好,两天不看就忘了)可惜Android平台上一直找不到合适的APP: 有没有读书进度管理的网站或软件啊? 有没有记录读 ...

  7. debian系统的另一个包管理器aptitude

    最近在玩OPI的时候遇到了一个包因为各种依赖问题死活装不上.苦搜很久找到这个aptitude包管理器. 基于debain衍生的各种操作系统比较常用包管理器是apt,不过apt在遇到依赖问题的时候处理得 ...

  8. 用树莓派Raspberry Pi和Micro:bit做一个自拍器

    在这个项目中,我们将使用Python来构建一个由Micro:bit触发树莓派Raspberry Pi和相机模块的自拍器.这是开始使用硬件和简单文本编程的好方法. 我们将学习: 如何设置Raspberr ...

  9. Spring jdbctemplate和事务管理器 全注解配置 不使用xml

    /** * spring的配置类,相当于bean.xml */@Configuration//@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans ...

随机推荐

  1. js 中map的几种实现方式

    简单使用 1, 通过对象方式: var myHash = {}; myHash["deviceID"] = "HY_000001"; myHash[" ...

  2. 利用CCProxy管理小型企业的上网行为

    本实验以实例方式,从操作条件.背景.需求.以及具体要求的几个部分进行说明. 1. 操作条件: 装有Windows Server 2003系统,安装了代理服务程序的虚拟机一台 2. 背景: 为了提高员工 ...

  3. 音频(3)Android TTS技术支持朗读英文

    Android对TTS技术的支持 Android 1.6开始支持TTS(Text To Speech)技术,通过该技术可以将文本转换成语音.目前2015-09-06只支持朗读英文. TTS技术的核心是 ...

  4. Windows CE,你妈吗喊你在多核上玩玩

    转自:http://hezongjian.com/blog/?p=9693 众所周知,CE的内核是完全重新写的,与9x根nt没有任何关系,这给CE带来了较好的实时性及灵活性.从诞生之日起,CE的内核改 ...

  5. win8.1 64 安装用友T3+sql2005-64步骤

    1. 环境:win8.1 64 专业版  4G内存  .net framwork 3.5 2.初始过程及所需软件 安装sql2008数据库,安装完T3发现并不支持此数据库,运行T3老是出现连接数据时的 ...

  6. Java [leetcode 14] Longest Common Prefix

    小二好久没有更新博客了,真是罪过,最近在看linux的东西导致进度耽搁了,所以今晚睡觉前怒刷一题! 问题描述: Write a function to find the longest common ...

  7. 彩色网页变黑白色CSS代码变黑白色调!

    <style> html { -webkit-filter: grayscale(%); -moz-filter: grayscale(%); -ms-filter: grayscale( ...

  8. Erlang入门(四)——错误处理和鲁棒性

    去了趟福州,事情没搞定,托给同学帮忙处理了,回家休息了两天就来上班了.回家这几天最大的收获是第四次重读<深入Java虚拟机>,以前不大明了的章节豁然开朗,有种开窍的感觉,水到渠成,看来技术 ...

  9. 5、四大组件之一-Activity与Intent

    一.Activity的定义及作用 1)官方定义:Activity是Android应用程序提供交互界面的一个重要组件 . 也是Android最重要的组件之一 2)Activity是业务类 , 是承载应用 ...

  10. 28、activity之间传递数据&批量传递数据

    import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android ...