音像店迷你DVD管理器

运用面向对象

package com.accp;


import java.text.SimpleDateFormat;
import java.util.Date;


/**
 * 碟片信息类
 * @author Administrator
 *
 */
public class DVD {
    private String name;
    private double price;
    private boolean lended;
    private long date;
    private int counter;

    public DVD() {
    }
    
    public DVD(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public boolean isLended() {
        return lended;
    }

    public void setLended(boolean lended) {
        this.lended = lended;
    }

    public long getDate() {
        return date;
    }

    public void setDate(long date) {
        this.date = date;
    }

    public int getCounter() {
        return counter;
    }

    public void setCounter(int counter) {
        this.counter = counter;
    }

    @Override
    public String toString() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return "《" + name + "》" + "\t" +
                (date == 0? "----------" : sdf.format(new Date(date)))
                + "\t" + counter;
    }

}




package com.accp;

import java.util.ArrayList;
import java.util.List;


public class DVDManager {
    private static final long MILLS_PER_DAY = 24 * 60 * 60 * 1000;
    
    private List<DVD> list = new ArrayList<DVD>();

    public DVDManager() {
        list.add(new DVD("阿甘正传", 0.8));
        list.add(new DVD("盗梦空间", 0.5));
        list.add(new DVD("廊桥遗梦", 1.8));
        list.add(new DVD("魂断蓝桥", 1.2));
        list.add(new DVD("音乐之声", 0.8));
    }
    
    /**
     * 获取所有碟片信息
     * @return 装所有碟片的List对象
     */
    public List<DVD> getAll() {
        return list;
    }
    
    /**
     * 添加新碟片
     * @param dvd 被添加的碟片对象
     * @return 添加成功返回true 否则返回false
     */
    public boolean addDVD(DVD dvd) {
        for(int i = 0; i < list.size(); i++) {
            DVD temp = list.get(i);
            if(temp.getName().equals(dvd.getName())) {
                return false;
            }
        }
        
        list.add(dvd);
        return true;
    }
    
    /**
     * 删除碟片
     * @param name 待删除的碟片的名字
     * @return 删除成功返回true 没有指定名字的碟片返回false
     */
    public boolean removeDVD(String name) {
        for(int i = 0; i < list.size(); i++) {
            DVD temp = list.get(i);
            if(temp.getName().equals(name)) {
                list.remove(i);
                return true;
            }
        }
        
        return false;
    }
    
    /**
     * 借出碟片
     * @param name 待借出的碟片的名字
     * @return 借出成功返回true 没有碟片或已经借出返回false
     */
    public boolean lend(String name) {
        for(int i = 0; i < list.size(); i++) {
            DVD temp = list.get(i);
            if(temp.getName().equals(name)) {
                if(temp.isLended() == false) {
                    temp.setDate(System.currentTimeMillis());
                    temp.setCounter(temp.getCounter() + 1);
                    temp.setLended(true);
                    return true;
                }
                else {
                    return false;
                }
            }
        }
        return false;
    }
    
    /**
     * 归还碟片
     * @param name 待归还的碟片的名字
     * @return 返回碟片租金
     */
    public double getBack(String name) {
        for(int i = 0; i < list.size(); i++) {
            DVD temp = list.get(i);
            if(temp.getName().equals(name)) {
                if(temp.isLended()) {
                    long days = Math.round(((System.currentTimeMillis() - temp.getDate()) / (double)MILLS_PER_DAY));
                    if(days < 1) {
                        days = 1;
                    }
                    temp.setDate(0);
                    temp.setLended(false);
                    return Math.round(temp.getPrice() * days * 10) / 10.0;
                }
            }
        }
        return 0.0;
    }
    
    /**
     * 获取Top 10排行榜
     * @return 保存Top 10排行DVD的数组
     */
    public DVD[] getRankList() {
        DVD[] dvds = new DVD[list.size() < 10? list.size() : 10];
        List<DVD> tempList = new ArrayList<DVD>();
        for(int i = 0; i < list.size(); i++) {
            tempList.add(list.get(i));
        }
        
        for(int i = 0; i < dvds.length; i++) {
            DVD max = tempList.get(0);
            for(int j = 1; j < tempList.size(); j++) {
                if(tempList.get(j).getCounter() > max.getCounter()) {
                    max = tempList.get(j);
                }
            }
            dvds[i] = max;
            tempList.remove(max);
        }
        
        return dvds;
    }
}



package com.accp;

import java.util.List;
import java.util.Scanner;

public class DvdMisSystem {

    public static void main(String[] args) {
        DVDManager manager = new DVDManager();
        Scanner sc = new Scanner(System.in);
        boolean isRunning = true;
        String name = "";
        double price = 0;
        
        while (isRunning) {
            int choice = 0;
            do {
                System.out.println("-----欢迎使用迷你DVD管理系统-----");
                System.out.println("\t1. 查看所有碟片");
                System.out.println("\t2. 新增DVD");
                System.out.println("\t3. 删除DVD");
                System.out.println("\t4. 借出DVD");
                System.out.println("\t5. 归还DVD");
                System.out.println("\t6. 查看排行榜");
                System.out.println("\t7. 退出系统");
                System.out.print("请选择: ");
                if (sc.hasNextInt()) {
                    choice = sc.nextInt();
                }
                sc.nextLine();
            } while (choice < 1 || choice > 7);
            switch (choice) {
            case 1:
                List<DVD> list = manager.getAll();
                for(int i = 0; i < list.size(); i++) {
                    System.out.println(list.get(i));
                }
                break;
            case 2:
                System.out.print("请输入碟片的名称: ");
                name = sc.nextLine();
                System.out.print("请输入碟片的价格: ");
                price = sc.nextDouble();
                DVD dvd = new DVD(name, price);
                if(manager.addDVD(dvd)) {
                    System.out.println("添加成功!");
                }
                else {
                    System.out.println("添加失败, 可能是重复的碟片!");
                }
                break;
            case 3:
                System.out.print("请输入碟片的名称: ");
                name = sc.nextLine();
                if(manager.removeDVD(name)) {
                    System.out.println("删除成功!");
                }
                else {
                    System.out.println("删除失败, 请检查碟片名称是否正确!");
                }
                break;
            case 4:
                System.out.print("请输入碟片的名称: ");
                name = sc.nextLine();
                if(manager.lend(name)) {
                    System.out.println("借出成功!");
                }
                else {
                    System.out.println("借出失败, 可能是没有的碟片或已被借出!");
                }
                break;
            case 5:
                System.out.print("请输入碟片的名称: ");
                name = sc.nextLine();
                double money = manager.getBack(name);
                if(money != 0) {
                    System.out.println("租金: ¥" + money);
                }
                else {
                    System.out.println("对不起,不是本店DVD!");
                }
                break;
            case 6:
                DVD[] dvds = manager.getRankList();
                for(int i = 0; i < dvds.length; i++) {
                    System.out.println(dvds[i]);
                }
                break;
            case 7:
                isRunning = false;
                break;
            }
        }
    }
}












  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值