Java面向对象之简单项目制作(DVD管理系统)
任务:完成DVD的管理
主要功能:
1.新增DVD
2.查看DVD
3.删除DVD
4.借出DVD
5.归还DVD
DVD类
String name;//DVD名字
int state;//DVD状态
String date;//DVD借出时间
/**
* 空的构造函数
*/
public DVD() {
}
/**
* 带参的构造函数
* @param name
* @param state
* @param date
*/
public DVD(String name,int state,String date) {
this.name=name;
this.state=state;
this.date=date;
}
DVDMgr类
public class DVDMgr {
DVD[] dvdSet;//定义一个DVD类型的数组
int count;
Scanner scan=new Scanner(System.in);
public void init() { //0表示借出,1表示在库
dvdSet=new DVD[3];
dvdSet[0]=new DVD("罗马假日",0, "2017-5-12");
dvdSet[1]=new DVD("人名的名义",1,"");
dvdSet[2]=new DVD("三生三世",1,"");
}
//显示所有DVD信息
public void showAllDVD(){
System.out.println("序号"+"\t名称"+"\t\t状态"+"\t日期");
int j=1;
for(int i=0;i<dvdSet.length;i++) {
if(dvdSet[i]!=null) {
System.out.println((j++)+"\t"+dvdSet[i].name+"\t\t"+dvdSet[i].state+"\t"+dvdSet[i].date);
}
}
}
/**
* 菜单切换功能及输入非法数字时程序报错功能
*/
public void showMenu() {
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("------------------------------------");
boolean flag=false;
do {
System.out.println("请选择:");
String num=scan.next();
num.charAt(0);//转换获取输入的第一个字符
if(num.length()>1) {//输入的字符串长度大于1,重新输入
System.out.println("非法字符!请重新输入");
flag=true;
}else {
if(num.charAt(0)>'0'&&num.charAt(0)<='9') {
if(num.charAt(0)>='7'&&num.charAt(0)<'9') {
System.out.println("非法操作!请重新输入");
flag=true;
}else {
switch (num.charAt(0)) {
case '1':
addDVD();
flag=false;
break;
case '2':
searchDVD();
flag=false;
break;
case '3':
deleteDVD();
flag=false;
break;
case '4':
borrowDVD();
flag=false;
break;
case '5':
returnDVD();
flag=false;
break;
case '6':
System.out.println("退出DVD");
System.exit(0);
default:
flag=false;
break;
}
}
}else {
System.out.println("必须输入整数,请重新输入!");
flag=true;
}
}
}while(flag);
}
/**
* 新增DVD
*/
public void addDVD() {
System.out.println("请输入要添加的DVD名称:");
String name=scan.next();
dvdSet=Arrays.copyOf(dvdSet, dvdSet.length+1);//数组扩容
dvdSet[dvdSet.length-1]=new DVD(name, 1, "");
System.out.println("新增DVD成功!");
System.out.println("***********************");
showMenu();
}
/**
* 查看DVD
*/
public void searchDVD() {
System.out.println("---> 查看DVD");
showAllDVD();
System.out.println("***********************************");
showMenu();
}
/**
* 删除DVD
*/
public void deleteDVD() {
System.out.println("---> 删除DVD");
System.out.println("请选择要删除的DVD名称:");
String name=scan.next();
//遍历数组,判断输入的DVD在库中是否存在,不存在直接返回主菜单
for(int i=0;i<dvdSet.length;i++) {
if(dvdSet[i].name.equals(name)!=true) {
count++;
}
}
if(count==dvdSet.length) {
System.out.println("未找到你要删除的DVD名称,返回主菜单!");
}
for(int i=0;i<dvdSet.length;i++) {
if(dvdSet[i].name.equals(name)) {
dvdSet[i]=null;
System.out.println("删除成功");
System.out.println("***********************");
}
}
showMenu();
}
/**
* 借阅DVD
*/
public void borrowDVD() {
System.out.println("---> 借出DVD");
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Date date=new Date();
int j=0;
System.out.println("请输入要借的DVD名称");
String name=scan.next();
for(int i=0;i<dvdSet.length;i++) {
if(dvdSet[i].name.equals(name)!=true) {
count++;
}
}
if(count==dvdSet.length) {
System.out.println("您要借阅的DVD不在仓库中,回到主菜单");
}
for(int i=0;i<dvdSet.length;i++) {
if(dvdSet[i]!=null && dvdSet[i].state==1 && dvdSet[i].name.equals(name)) {
System.out.println("借出"+dvdSet[i].name+"成功!");
dvdSet[i].state=0;
dvdSet[i].date=sd.format(date.getTime());
break;
}
j++;
if(j==dvdSet.length) {
System.out.println("该dvd已借出"+dvdSet[i].name+"失败");
break;
}
}
showMenu();
}
/**
* 归还DVD
*/
public void returnDVD() {
Boolean flag=false;
System.out.println("---> 归还DVD");
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
long charge=0;
do {
for(int i=0;i<dvdSet.length;i++) {
System.out.println("请输入要归还的DVD名称");
String name=scan.next();
if(dvdSet[i].name.equals(name)) {
System.out.println("请输入归还日期:");
String date=scan.next();
try {
Date d1 = sd.parse(dvdSet[i].date);
Date d2 = sd.parse(date);
charge = (d2.getTime() - d1.getTime()) / (24 * 3600 * 1000);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("归还成功!");
System.out.println("借出日期为:" + dvdSet[i].date+"归还日期为:" + date+"应付钱:" + charge+"元"
+"归还"+dvdSet[i].name+"成功");
dvdSet[i].date = "";// 归还日期归零
dvdSet[i].state = 1;// 状态转为可借
showMenu();
}else {
System.out.println("您输入的DVD名称有误;请重新输入");
flag=true;
break;
}
}
}while(flag);
}
}
主函数
public class Test {
public static void main(String[] args) {
DVDMgr dvdMgr=new DVDMgr();
dvdMgr.init();
dvdMgr.showMenu();
}
}