运用面向对象
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;
}
}
}
}