题目
- 为某音像店开发一个迷你DVD管理器,实现DVD碟片的管理,包括如下功能:新增DVD、查看DVD、删除DVD、借出DVD、归还DVD。
- 设计:
- 1) DVD类(属性:id ,name ,lendCount ,lendDate ,status)(默认每张DVD都是唯一的) lendCount字段每借一次加1
- 2) DVDDB类(用来保存多张DVD)
- 3) DVDManager类(提供操纵功能),添加DVD、查看DVD、删除DVD、借出DVD、归还DVD、DVD排行榜(按借出次数降序排序),退出系统
- 效果图

使用ArrayList解决该问题
- 使用到的类及方法:
- (1)Java本来就有的类
- java.util.ArrayList类 add方法 get方法 remove方法
- java.text.SimpleDateFormat类 format方法(按指定格式"yyyy-MM-dd HH:mm:ss"输出当期日期)
- java.util.Scanner类 next方法和nextInt方法
- (2)自定义类
- DVD类 DVDDB类 DVDManager类 DVDManagerSystem类
DVD类
public class DVD {
private int id;
private String name;
private int lendCount;
private String lendDate;
private boolean status;
public DVD() {
}
public DVD(int id, String name) {
this.id = id;
this.name = name;
this.lendCount = 0;
this.status= true;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLendCount() {
return lendCount;
}
public void setLendCount(int lendCount) {
this.lendCount = lendCount;
}
public String getLendDate() {
return lendDate;
}
public void setLendDate(String lendDate) {
this.lendDate = lendDate;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
}
DVDDB类
import java.util.ArrayList;
public class DVDDB {
private ArrayList<DVD> dvddb;
public DVDDB(ArrayList<DVD> dvddb) {
this.dvddb = dvddb;
}
public DVDDB() {
}
public ArrayList<DVD> getDvddb() {
return dvddb;
}
public void setDvddb(ArrayList<DVD> dvddb) {
this.dvddb = dvddb;
}
}
DVDManager类
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class DVDManager {
public void addDVD(DVDDB dvddb,DVD dvd){
dvddb.getDvddb().add(dvd);
}
public void lookDVD(DVDDB dvddb){
System.out.println("序号 "+" 状态"+" 名称"+" 借出日期");
ArrayList<DVD> dvds = dvddb.getDvddb();
for (int i = 0; i < dvds.size(); i++) {
DVD dvd = dvds.get(i);
String lendStatus;
if(dvd.isStatus()){
lendStatus = "可借";
}else{
lendStatus = "已借出";
}
System.out.println(dvd.getId()+" "+lendStatus + " "+dvd.getName()+" "+dvd.getLendDate());
}
}
public void deleteDVD(DVDDB dvddb,int id){
for (int i = 0; i < dvddb.getDvddb().size(); i++) {
if(dvddb.getDvddb().get(i).getId() == id){
dvddb.getDvddb().remove(i);
}
}
}
public void sendDVD(DVDDB dvddb,int id){
for (int i = 0; i < dvddb.getDvddb().size(); i++) {
if(dvddb.getDvddb().get(i).getId() == id){
dvddb.getDvddb().get(i).setStatus(false);
dvddb.getDvddb().get(i).setLendCount(dvddb.getDvddb().get(i).getLendCount()+1);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = simpleDateFormat.format(new Date());
dvddb.getDvddb().get(i).setLendDate(time);
}
}
}
public void returnDVD(DVDDB dvddb,int id){
for (int i = 0; i < dvddb.getDvddb().size(); i++) {
if(dvddb.getDvddb().get(i).getId() == id){
dvddb.getDvddb().get(i).setStatus(true);
dvddb.getDvddb().get(i).setLendDate("无");
}
}
}
public void rankDVD(DVDDB dvddb){
DVDDB temp = new DVDDB(new ArrayList<DVD> ());
for (int i = 0; i < dvddb.getDvddb().size(); i++) {
temp.getDvddb().add(dvddb.getDvddb().get(i));
}
int max = 0;
for (int i = 0; i < temp.getDvddb().size(); i++) {
max = i;
for (int j = i+1; j < temp.getDvddb().size(); j++) {
if(temp.getDvddb().get(max).getLendCount() < temp.getDvddb().get(j).getLendCount()){
max = j;
}
}
if(i != max){
DVD dvd = temp.getDvddb().get(i);
temp.getDvddb().add(i,temp.getDvddb().get(max));
temp.getDvddb().add(max,dvd);
}
}
lookDVD(temp);
}
}
客户端(或测试)类 DVDManagerSystem
import java.util.ArrayList;
import java.util.Scanner;
public class DVDManagerSystem {
public static void main(String[] args) {
DVDDB dvddb = new DVDDB(new ArrayList<DVD>());
DVDManager dvdManager = new DVDManager();
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("欢迎使用迷你DVD管理器");
System.out.println("------------------------------");
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("------------------------------");
System.out.println("请选择功能");
int i = sc.nextInt();
switch (i){
case 1:
System.out.println("请输入要添加的DVD的id号和名字(用回车分割输入)");
int id = sc.nextInt();
String name = sc.next();
DVD dvd = new DVD(id,name);
dvdManager.addDVD(dvddb,dvd);break;
case 2:
dvdManager.lookDVD(dvddb);break;
case 3:
System.out.println("请输入要删除的DVD的id号");
int dvdDelete = sc.nextInt();
dvdManager.deleteDVD(dvddb,dvdDelete);
break;
case 4:
System.out.println("请输入要借的DVD的id号");
int dvdLend = sc.nextInt();
dvdManager.sendDVD(dvddb,dvdLend);break;
case 5:
System.out.println("请输入要归还的DVD的id号");
int dvdReturn = sc.nextInt();
dvdManager.returnDVD(dvddb,dvdReturn);break;
case 6:dvdManager.rankDVD(dvddb);break;
case 7:
System.out.println("期待您的下次使用!再见!");return;
default:
System.out.println("输入的数字不正确,请重新输入");
}
while (true) {
System.out.println("------------------------------");
System.out.println("按0返回");
int j = sc.nextInt();
if (j == 0) {
break;
} else {
System.out.println("输入数据错误,请重试");
}
}
}
}
}
程序运行结果

使用Vector解决该问题
使用数组解决该问题