#题目要求(超级长)#
为某音像店开发一个迷你DVD管理器,实现如下图所示的DVD碟片的管理功能。功能具体包括:新增、查看、删除、借出、归还和退出。程序可参照以下步骤进行开发:
(1)数据初始化
使用对象数组保存DVD信息;每张DVD的信息包含:名称、是否可借的状态、借出的日期、归还的日期、借出的次数。
(2)查看DVD信息
使用循环遍历显示每个DVD的信息。当DVD名字==null时循环结束。
(3)新增DVD信息
向对象数组中存储相应的DVD信息,如果已经存储了6个DVD则提示用户货架已满。
(4)删除DVD信息
按照输入的名称,删除指定DVD信息;删除借出状态的DVD和不存在的DVD时,都要给出相应提示;当删除中间DVD时,后面的DVD进行向前移动处理
(5)借出DVD业务处理
按照输入的名称,借出指定DVD;判断输入的日期是否在1-31之间;若该DVD已借出或没有该DVD,都要给出相应提示。
(6)归还DVD业务处理
实现归还DVD,并计算租金(租金金额自定义);如果用户输入的日期大于31或者小于借出日期将提示用户重新输入(日期只考虑当月的,隔月忽略不计);如果归还未借出的DVD、不存在的DVD或者归还DVD的时间不合理则分别给出相应提示。
(7)菜单切换
使用switch语句实现菜单选择;使用do-while循环来实现返回和退出。
该程序的部分效果如下图所示。
#代码撰写#
1.定义Dvd类并创建属性
import java.util.Scanner;
public class H03_work02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//调用Manager函数
Manager manager=new Manager();
//在Manager中初始化数组是因为如果数组在当前类进行初始化,那么Manager无法使用
while (true) {
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("请输入相应数字");
int number = sc.nextInt();
switch (number) {
case 1:
manager.findAll();
break;
case 2:
System.out.println("请输入DVD的名字");
String Dname=sc.next();
Dvd d=new Dvd(Dname, 0, 0,0, 0);
manager.save(d);
break;
case 3:
System.out.println("请输入想要删除的DVD的名字");
String n=sc.next();
manager.delete(n);
break;
case 4:
System.out.println("请输入DVD的名字");
String Bname=sc.next();
manager.borrow(Bname);
break;
case 5:
System.out.println("请输入DVD的名字");
String Rname=sc.next();
manager.back(Rname);
break;
case 6:
//返回
System.out.println("谢谢使用");
break;
}
}
}
}
2.定义Manager类,并在其中初始化数组
import java.util.Scanner;
public class Manager {
//在Manager中初始化数组是因为如果数组在当前类进行初始化,那么Manager无法使用
Dvd[] dvd = new Dvd[6];
//构造器,在其中调用上面的方法init()
public Manager() {
init();
}
//初始化数组,成员方法
public void init() {
Dvd dvd1 = new Dvd("哈利波特", 0, 12, 18, 1);
Dvd dvd2 = new Dvd("水浒传", 0, 4, 5, 2);
Dvd dvd3 = new Dvd("简.爱", 0, 1, 20, 2);
Dvd dvd4 = new Dvd("红楼梦", 0, 0, 0, 0);
dvd[0] = dvd1;
dvd[1] = dvd2;
dvd[2] = dvd3;
dvd[3] = dvd4;
}
3.实现查看方法(Manager中进行撰写,后续步骤都是,不是时会提醒)
//查找,成员方法
public void findAll() {
System.out.println("序号\tDVD名称\t状态\t借出日期\t归还日期\t借出次数\t");
for (int i = 0; i < dvd.length; i++) {
String statusStr = "已借出";
if (dvd[i] == null) {
continue;
}
if (dvd[i].getState() == 0) {
statusStr = "未借出";
}
System.out.println((i + 1) + "\t" + dvd[i].getName() + "\t" + statusStr + "\t" + dvd[i].getBorrowDate()
+ "\t" + dvd[i].getReturndate() + "\t" + dvd[i].getFrequency() + "\t");
}
}
4.实现添加
//添加DVD
public void save(Dvd d) {
int index = -1;
for (int i = 0; i < dvd.length; i++) {
if (dvd[i] == null) {
index = i;
break;
}
if(dvd[i].getName().equals(d.getName())) {
System.out.println("该DVD已经存在");
return;
}
}
if (index == -1) {
System.out.println("货架已满,无法添加");
} else {
dvd[index] = d;
System.out.println("添加成功");
}
}
5.实现删除
//删除DVD
public void delete(String d) {
for (int i = 0; i < dvd.length; i++) {
if (dvd[i] == null) {
continue;
}
if (dvd[i].getName().equals(d) == true) {
if (dvd[i].getState() == 1) {
System.out.println("该DVD被借走无法删除");
return;
} else {
for (int j = i; j + 1 < dvd.length; j++) {
dvd[j] = dvd[j + 1];
}
System.out.println("删除成功");
return;
}
}
}System.out.println("该DVD不存在");
}
6.借出及归还(我将每日价格规定为3元,可自行更改)
//借出DVD
public void borrow(String name) {
for(int i=0;i<dvd.length;i++) {
if (dvd[i] == null) {
continue;
}
if (dvd[i].getName().equals(name) == true) {
if (dvd[i].getState() == 1) {
System.out.println("该DVD已经被借走了");
}else {
Scanner sc=new Scanner(System.in);
while(true) {
System.out.println("请输入借书日期");
int borrowTime=sc.nextInt();
if(borrowTime>31|borrowTime<1) {
System.out.println("时间输入有误");
continue;
}else {
dvd[i].setBorrowDate(borrowTime);
dvd[i].setState(1);
System.out.println("借书成功");
return;
}
}
}
}
}System.out.println("不存在这本书");
}
//归还
public void back(String name) {
int price;
for(int i=0;i<dvd.length;i++) {
if (dvd[i] == null) {
continue;
}
if (dvd[i].getName().equals(name) == true) {
if (dvd[i].getState() == 0) {
System.out.println("该DVD未被借走");
return;
}else {
Scanner sc=new Scanner(System.in);
while(true) {
System.out.println("请输入还书日期");
int returnTime=sc.nextInt();
if(returnTime<dvd[i].getBorrowDate()|returnTime>31) {
System.out.println("时间输入有误");
continue;
}else {
price=(returnTime-dvd[i].getBorrowDate())*3;
dvd[i].setState(0);
System.out.println("您需要支付的价格是"+price+"元");
return;
}
}
}
}
}System.out.println("不存在这本书");
}
7.主函数(不是Manager里了!)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//调用Manager函数
Manager manager=new Manager();
//在Manager中初始化数组是因为如果数组在当前类进行初始化,那么Manager无法使用
while (true) {
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("请输入相应数字");
int number = sc.nextInt();
switch (number) {
case 1:
manager.findAll();
break;
case 2:
System.out.println("请输入DVD的名字");
String Dname=sc.next();
Dvd d=new Dvd(Dname, 0, 0,0, 0);
manager.save(d);
break;
case 3:
System.out.println("请输入想要删除的DVD的名字");
String n=sc.next();
manager.delete(n);
break;
case 4:
System.out.println("请输入DVD的名字");
String Bname=sc.next();
manager.borrow(Bname);
break;
case 5:
System.out.println("请输入DVD的名字");
String Rname=sc.next();
manager.back(Rname);
break;
case 6:
//返回
System.out.println("谢谢使用");
break;
}
}
}
8.代码运行
运行1,2两个选项供参考
初学java如果有写得不好的地方欢迎指导
标签:管理器,迷你,DVD,System,Manager,dvd,println,out From: https://blog.csdn.net/m0_72186118/article/details/140725417