为某音像店开发一个迷你DVD管理器,实现DVD碟片的管理,
包括如下功能:新增DVD、查看DVD、删除DVD、借出DVD、归还DVD。(后台使用ArrayList来存放DVD对象。)
设计:
1) DVD类(属性:id ,name ,lendCount ,lendDate ,status)
(默认每张DVD都是唯一的) lendCount字段每借一次加1
2) DVDDB类(提供一个动态数组来保存多张DVD)
3) DVDManager类(提供操纵功能),
添加DVD、查看DVD、删除DVD、借出DVD、归还DVD、DVD排行榜(按借出次数降序排序),退出系统
————————————————————————————————
数据结构:
Dao
DVDDB 提供一个动态数组来保存多张DVD ArrayList<DVD对象>
Entity
Dvd (id ,name ,lendCount ,lendDate ,status)
Service
DVDManager类(提供操纵功能),
添加DVD、查看DVD、删除DVD、借出DVD、归还DVD、DVD排行榜(按借出次数降序排序),退出系统
DVD
package com.tsxy.DVD.Entity;
public class DVD {
private int id = temp;//DVD的id
private static int temp = 1;
private String name;//DVD名字
private int lendCount;//每借一次+1
private String lendDate;//借书日期
private boolean status = true;//状态,
{
temp++;
}
public DVD(int id, String name, boolean status, String lendDate) {
this.id = id;
this.name = name;
this.lendDate = lendDate;
this.status = status;
}
public DVD(int id, String name, int lendCount, boolean status, String lendDate) {
this.id = id;
this.name = name;
this.lendCount = lendCount;
this.lendDate = lendDate;
this.status = status;
}
public DVD(int id, String name, boolean status) {
this.id = id;
this.name = name;
this.status = status;
}
public DVD(String name) {
this.name = name;
}
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;
}
public DVD() {
}
}
DVDDB
package com.tsxy.DVD.Dao;
import com.tsxy.DVD.Entity.DVD;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class DVDDB {
private static ArrayList<DVD> dvds = new ArrayList<>();
static {
dvds.add(new DVD(1, "罗马假日", 1, false, "2010-7-1"));
dvds.add(new DVD(2, "风声鹤唳", true));
dvds.add(new DVD(3, "浪漫满屋", true));
}
public String add(String name) {
String s = "";
for (int i = 0; i < dvds.size(); i++) {
if (dvds.get(i).getName().equals(name)) {
s = "已经存在该DVD!";
break;
} else if (i == dvds.size() - 1) {
dvds.add(new DVD(name));
s = "添加成功!";
break;
}
}
return s;
}
public StringBuilder view(int i) {
StringBuilder s = new StringBuilder();
ArrayList<DVD> sortDvds;
if (i == 1) {
for (DVD dvd : dvds) {
s.append(dvd.getId() + "\t\t" + (dvd.isStatus() ? "可借 " : "已借出") + "\t\t" + "《" + dvd.getName() + "》" + "\t\t" + (dvd.isStatus() ? " " : dvd.getLendDate()) + "\t\t" + dvd.getLendCount() + "\n");
}
} else {
sortDvds = dvds;
Collections.sort(dvds, new Comparator<DVD>() {
@Override
public int compare(DVD o1, DVD o2) {
return o2.getLendCount() - o1.getLendCount();
}
});
for (DVD dvd : sortDvds) {
s.append(dvd.getId() + "\t\t" + (dvd.isStatus() ? "可借 " : "已借出") + "\t\t" + "《" + dvd.getName() + "》" + "\t\t" + (dvd.isStatus() ? " " : dvd.getLendDate()) + "\t\t" + dvd.getLendCount() + "\n");
}
}
return s;
}
public String del(String name) {
String s = "没有找到这本书!";
for (int i = 0; i < dvds.size(); i++) {
if (dvds.get(i).getName().equals(name)) {
if (dvds.get(i).isStatus() == true) {
dvds.remove(dvds.remove(i));
s = "删除成功!";
} else {
s = "该书还未归还!";
}
}
}
return s;
}
public String lend(String name) {
String s = "没有这本书!";
for (DVD dvd : dvds) {
if (dvd.getName().equals(name)) {
if (dvd.isStatus() == true) {
//借出时间
String date = LocalDate.now().toString();
dvd.setStatus(false);
dvd.setLendDate(date);
dvd.setLendCount(dvd.getLendCount() + 1);
s = "借阅成功,祝你生活愉快!";
} else {
s = "该书已被借出!";
}
}
}
return s;
}
public void revert(String name) {
for (DVD dvd : dvds) {
if (dvd.getName().equals(name)) {
dvd.setStatus(true);
dvd.setLendDate("");
}
}
}
}
DVDManager
package com.tsxy.DVD.Service;
import com.tsxy.DVD.Dao.DVDDB;
import java.util.Scanner;
public class DVDManager {
private DVDDB dvddb = new DVDDB();
private String judge;
private Scanner scanner = new Scanner(System.in);
public void main() {
while (true) {
menu();
System.out.print("请选择:");
int i = scanner.nextInt();
switch (i) {
case 1:
add();
break;
case 2:
view();
break;
case 3:
del();
break;
case 4:
lend();
break;
case 5:
revert();
break;
case 6:
return;
}
}
}
private void revert() {
do {
System.out.println("——————>归还DVD");
System.out.println("请输入你要归还的DVD名:");
String name = scanner.next();
dvddb.revert(name);
System.out.println("归还成功!");
System.out.println("是否继续归还:(Y/N)");
judge = scanner.next();
} while (judge.equals("Y"));
}
private void lend() {
do {
System.out.println("——————>借出DVD");
System.out.println("请输入你要借的DVD名:");
String name = scanner.next();
System.out.println(dvddb.lend(name));
System.out.println("是否继续借阅:(Y/N)");
judge = scanner.next();
} while (judge.equals("Y"));
}
private void del() {
System.out.println("——————>删除DVD");
System.out.println("请输入DVD名称:");
String name = scanner.next();
System.out.println(dvddb.del(name));
}
private void view() {
System.out.println("——————>查看DVD");
System.out.println("1--按序号查看\n2--按排行榜查看");
int i = scanner.nextInt();
System.out.println("序号\t\t状态\t\t\t\t名称\t\t\t\t借出日期\t\t\t借阅次数");
System.out.println(dvddb.view(i));
}
private void add() {
do {
System.out.println("——————>添加DVD");
System.out.println("请输入DVD名称:");
String name = scanner.next();
System.out.println(dvddb.add(name));
System.out.println("是否继续添加:(Y/N)");
judge = scanner.next();
} while (judge.equals("Y"));
}
public void menu() {
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、退 出");
System.out.println("___________________");
}
}
DVDDemo
package com.tsxy.DVD.View;
import com.tsxy.DVD.Service.DVDManager;
public class DVD_Demo {
public static void main(String[] args) {
DVDManager manager = new DVDManager();
manager.main();
}
}