DVD管理系统 jdbj+反射
立即下载
资源介绍:
DVD管理系统 jdbj+反射
package com.lc.controller;
import com.lc.entity.DVD;
import com.lc.service.DVDService;
import com.lc.service.serviceImpl.DVDServiceImpl;
import javax.xml.crypto.Data;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
public class DVDController {
DVDService service = new DVDServiceImpl();
Scanner sc = new Scanner(System.in);
/**
* 开始菜单 菜单加载,显示可选功能
*/
public void startMenu() {
System.out.println("欢迎使用迷你DVD管理系统");
System.out.println("----------------------");
System.out.println("----add.新增DVD-------");
System.out.println("----see.查看DVD-------");
System.out.println("----del.删除DVD-------");
System.out.println("----lend.借出DVD------");
System.out.println("----ret.归还DVD-------");
System.out.println("----exit.退 出------");
System.out.println("----------------------");
System.out.println("请选择:");
String choose = sc.next();
//反射获取方法名
try {
Class cla = DVDController.class;
Method m = cla.getMethod(choose);
m.invoke(this);
} catch (NoSuchMethodException e) {//方法找不到错误,如果用户输入不存在的方法 则重新输入
System.out.println("没有此功能,请重新输入");
startMenu();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
/**
* 新增DVD的方法 输入DVD的名称和日租金可以新增一条DVD对象
*/
public void add() {
System.out.println("--->新增DVD");
DVD dvd = new DVD();//创建新DVD对象
System.out.println();
System.out.print("请输入新增的DVD名称:");
dvd.setName(sc.next());
System.out.print("请输入DVD的日租金:");
dvd.setMoney(sc.nextDouble());
if (service.add(dvd)) {
System.out.println("添加DVD《" + dvd.getName() + "》成功!");
} else {
System.out.println("添加失败!");
}
returnMenu();
}
/**
* 查看全部DVD的方法
*/
public void see() {
System.out.println("--->查看DVD");
System.out.println();
System.out.println("序号\t状态\t名称\t\t借出日期");
ArrayList list = service.see();
for (int i = 0; i < list.size(); i++) {
System.out.println((i + 1) + "\t" + list.get(i).toString());//前半段打印序号 从1开始 后半段打印DVD信息
}
returnMenu();
}
/**
* 删除DVD的方法 输入要删除的DVD名称可以删除该DVD
*/
public void del() {
System.out.println("--->删除DVD");
System.out.println();
System.out.print("请输入要删除的DVD名称:");
DVD dvd = service.selectForName(sc.next());//根据输入的DVD名称查找到相应的一条DVD对象
if (dvd == null) {//如果找不到,说明不存在该DVD,无法删除
System.out.println("不存在该DVD,无法删除,请重新输入");
del();
} else {
if ("已借出".equals(dvd.getState())) {//判断状态,如果是已借出的状态,也不可删除
System.out.println("该DVD已借出,不可删除");
returnMenu();
} else {
if (service.delete(dvd)) {//条件都满足则删除成功
System.out.println("删除成功!");
returnMenu();
} else {
System.out.println("删除失败");
returnMenu();
}
}
}
}
/**
* 借出DVD的方法 输入要借出的DVD名称可以借出DVD
*/
public void lend() {
System.out.println("--->借出DVD");
System.out.println();
System.out.print("请输入要借出的DVD名称:");
String name = sc.next();
DVD dvd = service.selectForName(name);//根据输入的DVD名称查找到相应的一条DVD对象
if (dvd == null) {//如果找不到,说明不存在该DVD,无法借出
System.out.println("不存在该DVD,请重新输入");
returnMenu();
} else {
if ("已借出".equals(dvd.getState())) {//判断状态,如果是已借出的状态,不可再次借出
System.out.println("该DVD已借出,不可再次借出");
returnMenu();
} else {
//判断输入的日期格式是否正确
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
while (true) {
System.out.print("输入借出时间(yyyy-MM-dd):");
String lendDay = sc.next();
dvd.setLendDay(lendDay);
try {
sdf.setLenient(false); // 不允许宽松的日期格式
sdf.parse(lendDay); // 尝试解析日期
break; // 日期格式正确,退出循环
} catch (ParseException e) {
System.out.println("输入的日期格式不正确,请重新输入。");
}
}
if (service.lend(dvd)) {//均满足则成功借出
System.out.println("借出《" + dvd.getName() + "》成功!");
returnMenu();
} else {
System.out.println("借出失败");
returnMenu();
}
}
}
}
/**
* 归还方法
* @throws ParseException 抛出解析错误异常
*/
public void ret() throws ParseException {
System.out.println("--->归还DVD");
System.out.println();
System.out.print("请输入要归还的DVD名称:");
String name = sc.next();
DVD dvd = service.selectForName(name);
if (dvd.getId() != 0) {//如果输入的名称不正确,则直接返回,不用输入归还日期,节省时间
if ("可借".equals(dvd.getState())) {//判断状态,如果是未被借出状态则无法归还
System.out.println("该DVD未被借出,不可归还");
returnMenu();
} else {
//判断日期格式是否正确
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String returnDay;
while (true) {
System.out.print("输入归还时间(yyyy-MM-dd):");
returnDay = sc.next();
try {
sdf.setLenient(false); // 不允许宽松的日期格式
sdf.parse(returnDay); // 尝试解析日期
break; // 日期格式正确,退出循环
} catch (ParseException e) {
System.out.println("输入的日期格式不正确,请重新输入。");
}
}
if (service.returnDVD(dvd)) {//均满足则归还成功
System.out.println("归还《" + dvd.getName() + "》成功!");
System.out.println("借出日期为:" + dvd.getLendDay());
System.out.println("归还日期为:" + returnDay);
System.out.println(rent(dvd, returnDay));//调用计算租金方法,计算并打印输出租