功能菜单
思路:
- 首先得有一个放置DVD专辑的容器。(创建DVD对象类放置DVD专辑)
- 创建菜单
- 实现6大功能
- 新增功能
- 查看功能(遍历)
- 删除功能
- 借出功能
- 归还功能
- 查看热榜
第一步,创建DVD对象类
public class Dvd {
private String dvdname;//dvd名字
private String state ;////dvd的状态
private String date ; //借出的日期
private int time ; //借出的次数
public Dvd()
{
super();
}
public Dvd(String dvdname, String state, String date, int time) {
super();
this.dvdname = dvdname;
this.state = state;
this.date = date;
this.time = time;
}
/*
*加\t是为了打印时整齐
*/
@Override
public String toString() {
return state+"\t"+dvdname+"\t"+date+"\t"+time+"次";
}
public String getDvdname() {
return dvdname;
}
public void setDvdname(String dvdname) {
this.dvdname = dvdname;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
}
第二步、创建对象数组(容器)
//需要使用的包
//使用Shift+Alt+o快速导包
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.Scanner;
/*
*也可以这样调包
import java.util.*;
import java.text.*;
*/
//以下代码均写在同一类内
//我的类名是
public class DvdDX{
Dvd [] dvd = new Dvd [6]; //新建对象数组总共有6张DVD
......//后续
最多能够存储6张DVD
//初始化数组 null值时加\t为了打印时能够对其,后续判断是也需要+"\t"
public void init ()
{
dvd[0]= new Dvd ("西游记","可借",null+"\t",0);
dvd[1]= new Dvd ("亮剑","已借出","2018-01-02",2);
dvd[2]= new Dvd ("封神榜","已借出","2018-07-01",1);
}
第三步、创建菜单方法
/*
* 菜单
*/
public void menu()
{
while (true)
{
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("0.退出");
System.out.println("---------------------------------");
System.out.print("请选择:");
if (input.hasNextInt())
{
int check = input.nextInt();
switch (check)
{
case 1:
System.out.println("---------->新增DVD");
add();
fanhui();
break;
case 2:
System.out.println("---------->查看DVD");
see ();
fanhui();
break;
case 3:
System.out.println("---------->删除DVD");
del();
fanhui();
break;
case 4:
System.out.println("---------->借出DVD");
borrow();
fanhui();
break;
case 5:
System.out.println("---------->归还DVD");
still ();
fanhui();
break;
case 6:
System.out.println("---------->排行榜");
rankings();
fanhui();
break;
case 0:
exit();
break;
default :
System.out.println("输入的项目不存在,请重新输入!");
}
}
else
{
System.out.println("输入错误,请重新输入10以内的整数!");
input = new Scanner(System.in);
}
}
}
/*
* 返回方法
* 让用户使用时更加人性化
*/
public void fanhui()
{
System.out.println("*****************");
System.out.println("请输入任意字符返回");
input.next();
}
第四步 、实现各个功能
/*
* 1.新增DVD
* (无法添加重复DVD)
* (最多存在6张DVD)
*/
public void add ()
{
/*
* 查询空位
*/
boolean check = false;
int ceek = 0;
for (int i=0 ;i<dvd.length;i++)
{
if (dvd[i]==null)
{
check = true;
break;
}
ceek ++;
}
if(check)
{
System.out.print("请输入您需要添加的DVD名字:");
String name = input.next();
/*
* 防止重名DVD添加
*/
boolean repeat = true;
for (int i = 0 ; i<dvd.length ;i++)
{
if(dvd[i]==null)
{
break;
}
if(name.equals(dvd[i].getDvdname()))
{
repeat = false;
break;
}
}
if(repeat)
{
dvd[ceek] = new Dvd(name,"可借",null+"\t",0);
System.out.println("新增《"+name+"》DVD成功!!");
}
else
{
System.out.println("已存在该DVD,请勿重复添加。");
}
}
else
{
System.out.println("无法添加,DVD空间不足!!!");
}
}
/*
* 2.查看DVD
* (列出所有DVD)
*/
public void see ()
{
for(int i=0;i<menu.length;i++)
{
System.out.print(menu[i]);
}
System.out.println();
for (int i = 0 ; i <dvd.length ; i++ )
{
if(dvd[i]!=null)
{
System.out.println((i+1)+"\t"+dvd[i]);
}
}
}
/*
* 3.删除DVD
* (无法删除已借出DVD)
*/
public void del()
{
System.out.println("请输入您需要删除DVD的名字:");
String name = input.next();
boolean check = false;
int ceek = 0;
for (int i=0 ;i<dvd.length;i++)
{
if (dvd[i] != null && name.equals(dvd[i].getDvdname()))
{
check = true;
break;
}
ceek ++;
}
if(check == true && (dvd[ceek].getState() ).equals("可借"))
{
if (ceek <dvd.length-1)
{
for (int i = ceek ;i<dvd.length-1 ;i++)
{
dvd[i]=dvd[i+1];
}
dvd[dvd.length-1 ]=null;
}
else
{
dvd[ceek]=null;
}
System.out.println("删除《"+name+"》成功!!");
}
else if(check == false)
{
System.out.println("删除失败,未找到DVD!!!");
}
else
{
System.out.println("删除失败,该DVD已借出!");
}
}
/*
* 4.借出DVD
* (已借出DVD无法再借)
*/
public void borrow()
{
System.out.println("请输入您需要借出DVD的名字:");
String name = input.next();
boolean check = false;
int ceek = 0;
for (int i=0 ;i<dvd.length;i++)
{
if (dvd[i] != null && name.equals(dvd[i].getDvdname()))
{
check = true;
break;
}
ceek ++;
}
if(check == true && (dvd[ceek].getState() ).equals("可借") )
{
dvd[ceek].setState("已借出");
/*
* 记录当前日期
*/
Date now = new Date();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
String time = sdf.format(now);
dvd[ceek].setDate(time);
dvd[ceek].setTime(dvd[ceek].getTime()+1);
System.out.println("借出《"+name+"》DVD成功!\n每天收费1元");
}
else if(check == false)
{
System.out.println("租借失败,未找到DVD!!!");
}
else
{
System.out.println("租借失败,该DVD已借出!请归还后再借。");
}
}
/*
* 5.归还DVD
* (无法归还未借出的DVD)
* (金额最低为1元)
*/
public void still ()
{
System.out.println("请输入您需要归还DVD的名字:");
String name = input.next();
boolean check = false;
int ceek = 0;
for (int i=0 ;i<dvd.length;i++)
{
if (dvd[i] != null && name.equals(dvd[i].getDvdname()))
{
check = true;
break;
}
ceek ++;
}
if(check == true && (dvd[ceek].getState() ).equals("已借出"))
{
dvd[ceek].setState("可借");
int day =0;
Date now = new Date();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
String time = sdf.format(now);
String date1 =dvd[ceek].getDate(); //借出时间
String date2 =time; //现在的时间
//对日期时间进行格式化的类
SimpleDateFormat asd =new SimpleDateFormat("yyyy-MM-dd");
//将String转成Date类型
try {
Date time1 = asd.parse(date1); //需要计算的日期
Date time2 = asd.parse(date2); //今天日期
long haoMiao1 = time1.getTime(); //转成毫秒
long haoMiao2 = time2.getTime();
long jianGeHM = haoMiao2-haoMiao1;
day = (int)(jianGeHM/(24*60*60*1000)+1);
// System.out.println("共借出:"+day+"天");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dvd[ceek].setDate(null+"\t");
System.out.println("归还《"+name+"》成功!!");
System.out.println("共借出"+day+"天");
System.out.println("借书费用为:"+Arrays.asList(day)+"元");
}
else if(check == false)
{
System.out.println("归还失败,未找到DVD!!!");
}
else
{
System.out.println("归还失败,该DVD未借出!");
}
}
/*
* 6.查看排行
* (按借出次数来降序,并更新顺序)
*/
public void rankings()
{
for (int i = 0 ; i< dvd.length-1 ; i++)
{
if(dvd[i+1]!= null &&dvd[i]!= null && (dvd[i].getTime() < dvd[i+1].getTime()))
{
Dvd d = new Dvd();
d = dvd[i];
dvd[i] = dvd[i+1];
dvd[i+1] = d;
}
}
see();
}
/*
* 0.退出DVD
*/
public void exit()
{
System.out.println("*********************************");
System.out.println("------------感谢您的使用-------------");
System.out.println("*********************************");
System.exit(0);//让JVM停止运行,结束程序。
}
}//结束DvdDX类
最后一步、编写测试类调用菜单
public class Test{
public static void main(String[] args) {
DvdDX st = new DvdDX ();
st.init(); //调用初始化
st.menu(); //进入菜单
}
}