今天,老师让我们做了关于DVD管理的小项目,虽然说是个小项目,但是对于我这种小白来说,还是挺不容易的,查了很多资料,看了很多案例,终于自主完成了。下面就是我写的代码。如有不满意的地方,理解万岁~
import java.util.*;
import java.text.*;
public class DVD {
String[] name = new String[50];//定义DVD片名
boolean[] state = new boolean[50]; //
String[] date = new String[50];
int[] count = new int[50];
String[] name1 = new String[50];
}
class DVDMgr {
boolean islend = false;
DVD dvd = new DVD(); //new一个对象
public void initial() {
dvd.name[0] = "罗马假日";
dvd.state[0] = true;
dvd.date[0] = "2011-9-17";
dvd.count[0] = 0;
dvd.name[1] = "风声鹤唳";
dvd.state[1] = false;
dvd.date[1] = "2011-9-17";
dvd.count[1] = 0;
dvd.name[2] = "浪漫满屋";
dvd.state[2] = false;
dvd.date[2] = "2011-9-17";
dvd.count[2] = 0;
}
public void startMenu() { //定义一个菜单输出方法
System.out.println("----欢迎使用迷你DVD管理器----");
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.退出.\n");
Scanner input = new Scanner(System.in);
System.out.print("请选择操作,按对应的数字:");
int i = input.nextInt();
switch(i){
case 1:
System.out.println("新增DVD");
addDVD();
break;
case 2:
System.out.println("查看DVD");
show();
break;
case 3:
System.out.println("删除DVD");
deleteDVD();
break;
case 4:
System.out.println("借出DVD");
lendDVD();
break;
case 5:
System.out.println("归还DVD");
returnDVD();
break;
case 6:
System.out.println("系统已退出,欢迎再次使用!");
break;
}
}
public void show(){
System.out.println("查看DVD\n");
System.out.println("序号\t状态\t名称\t\t借出日期");
int dizhi = 0;
for (int i = 0; i <= dvd.name.length; i++) {
if (dvd.name[i] != null) {
continue;
} else {
dizhi = i - 1;
break;
}
}
for (int i = 0; i <= dizhi; i++) {
if (dvd.state[i] == false) {
System.out.println(i + "\t" + "已借出" + "\t" + dvd.name[i]+ "\t\t" + dvd.date[i]);
} else if (dvd.state[i] == true) {
System.out.println(i + "\t" + "可借" + "\t" + dvd.name[i]+ "\t\t");
}
}
returnMain();
}
public void returnMain() { //定义一个返回菜单的方法
for (; ; )
{
Scanner input = new Scanner(System.in);
System.out.print("输入0,返回主菜单:");
if (input.nextInt() == 0) {
startMenu();
}
}
}
public void addDVD() { //定义一个增加DVD的方法
Scanner input = new Scanner(System.in);
System.out.print("请输入DVD名称:");
String name = input.next();
for (int i = 0; i < dvd.name.length; i++) {
if (dvd.name[i] == null) {
dvd.name[i] = name;
dvd.state[i] = false;
System.out.println(name + "新增成功!");
break;
}
}
returnMain();
}
// 删除
public void deleteDVD(){
Scanner input = new Scanner(System.in);
System.out.println("--->删除DVD\n");
System.out.print("请输入DVD的名称:");
String name = input.next();
boolean flag = false;
for (int i = 0 ;i < dvd.name.length ; i++ )
{
if (dvd.name[i] != null && dvd.name[i].equalsIgnoreCase(name)
&& dvd.state[i] == false)
{
int j = i ;
while (dvd.name[j] != null)
{
dvd.name[j] = dvd.name[j + 1]; // 删除元素,元素前移
dvd.state[j] = dvd.state[j + 1];
dvd.date[j] = dvd.date[j + 1];
j++;
}
//最后一个不为空的元素置空
dvd.name[j] = null;
dvd.date[j] = null;
System.out.println("删除《" + name + " 》成功!");
flag = true; //标识位
break;
}else if (dvd.name[i] != null
&& dvd.name[i].equalsIgnoreCase(name)
&& dvd.state[i] == true)
{
System.out.println("《" + name + "》为借出状态,不能删除!");
flag = true;
break;
}
if (flag)
{
System.out.println("没有找到匹配信息");
}
}
System.out.println("----------------------------");
returnMain();
}
public void lendDVD() { //定义一个借DVD的方法
Scanner input = new Scanner(System.in);
System.out.print("请输入要借的DVD名称:");
String lend = input.next();
for (int i = 0; i < dvd.name.length; i++) {
if (dvd.name[i] == null) {
System.out.println("没有找到匹配信息!!!");
returnMain();
break;
} else if (dvd.name[i].equals(lend) && dvd.state[i] == true) {
System.out.print("请输入借出日期(年-月-日):");
dvd.date[i] = input.next();
dvd.state[i] = false;
System.out.println(lend + "\t借出成功!");
dvd.count[i]++;
dvd.name1[i] = dvd.name[i];
returnMain();
break;
} else if (dvd.name[i].equals(lend) && dvd.state[i] == false) {
System.out.println(lend + "\t已借出!");
returnMain();
break;
}
}
}
public void returnDVD() { //定义一个还DVD的方法
Scanner input = new Scanner(System.in);
System.out.print("请输入归还的DVD名称:");
String returndvd = input.next();
for (int i = 0; i <= dvd.name.length; i++) {
if (returndvd.equals(dvd.name[i]) && dvd.state[i] == false) {
System.out.print("请输入归还的日期:");
String date = input.next();
System.out.println(returndvd + "归还成功!");
System.out.println("借出日期为:" + dvd.date[i]);
System.out.println("归还日期为:" + date);
String d1 = dvd.date[i];
String d2 = date;
long day = charge(d2, d1);
System.out.println("应付租金:" + day + "元");
dvd.date[i] = date;
dvd.state[i] = true;
break;
}else if(i==49){
System.out.println("无该DVD,输入错误。");
break;
}
}
returnMain();
}
//param dstr1 第一个日期 param dstr2 第二个日期
public long charge(String dstr1,String dstr2){ //借出日期利用“年-月-日”的字符串形式
long charge=0;
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
try {
Date d1=sd.parse(dstr1);
Date d2=sd.parse(dstr2);
charge=(d2.getTime()-d1.getTime())/(24*60*60*1000);
} catch (ParseException e) {
e.printStackTrace();
}return charge;
}
public void list() { //定义一个列表
String[] newName = new String[50];
int[] newcount = new int[50];
for (int i = 0; i < dvd.name.length; i++) {
newName[i] = dvd.name[i];
newcount[i] = dvd.count[i];
}for (int i = 0; i < newName.length; i++) {
for (int j = i + 1; j < newName.length; j++) {
if (newcount[i] > newcount[j]) {
int zhongjianbianliang = newcount[i];
newcount[i] = newcount[j];
newcount[j] = zhongjianbianliang;
String zhongjianliang = newName[i];
newName[i] = newName[j];
newName[j] = zhongjianliang;
}
}
}
System.out.println("次数\t名称");
for (int i = dvd.name.length - 1; i >= 0; i--) {
if (newName[i] != null) {
System.out.println(newcount[i] + "次" + "\t" + newName[i]);
}
}
returnMain();
}
}
class TestDVD {
public static void main(String[] args) {
DVDMgr dm = new DVDMgr();
dm.initial();
dm.startMenu();
}
}