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<DVD> 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));//调用计算租金方法,计算并打印输出租