项目Java版本迷你DVD.docx
《项目Java版本迷你DVD.docx》由会员分享,可在线阅读,更多相关《项目Java版本迷你DVD.docx(15页珍藏版)》请在冰豆网上搜索。
项目Java版本迷你DVD
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.Scanner;
publicclassDVDMgr{
Scannerinput=newScanner(System.in);//扫描器,作用:
主要是从键盘输入数据
DVDSetds=newDVDSet();//创建一个对象,实例化DVDSet的一个变量ds.用于在本类调用!
publicvoidstartMenu(){//定义一个菜单方法,用于程序运行的时候显示、选择作用
booleantag=false;//定义一个标志符号,用于do-----while的循环判断
do{
System.out.println("\t\t欢迎使用迷您DVD管理器");
System.out.println("--------------------------------------------");
System.out.println("\t\t0.排序DVD");
System.out.println("\t\t1.新增DVD");
System.out.println("\t\t2.查看DVD");
System.out.println("\t\t3.删除DVD");
System.out.println("\t\t4.借出DVD");
System.out.println("\t\t5.归还DVD");
System.out.println("\t\t6.退出DVD");
System.out.println("--------------------------------------------");
System.out.print("请选择:
");
intchoice=input.nextInt();
switch(choice){//switch()语句,用来选择要执行的方法调用。
case0:
/*list();
list1();*/
list2();
tag=false;
break;
case1:
add();
tag=false;
break;
case2:
search();
tag=false;
break;
case3:
delete();
tag=false;
break;
case4:
lend();
tag=false;
break;
case5:
relend();
tag=false;
break;
case6:
System.out.println("谢谢使用迷你DVD!
");
tag=false;
break;
default:
System.out.println("输入有误,请重新输入....");//输入错误,则直接给标志符号tag=true。
tag=true;
}
}while(tag);//,则while(tag)为真,重新开始菜单选择!
}
publicvoidreMenu(){//定义一个返回到菜单的方法,每次执行完方法后就调用reMenu(),回到startMenu()方法,重新选择需要的选项!
booleanflag=false;//定义一个标志符号flag,用来判断do----while()的循环!
System.out.print("输入0返回:
");
do{
if(input.nextInt()==0){
startMenu();
}else{
System.out.println("您的输入有误,请重新输入...");
flag=true;
}
}while(flag);
}
/*定义一个初始化方法,用来给部分的数组赋值!
具体赋值什么,只要满足项目要求和数据类型,随便赋值!
*/
publicvoidinitial(){
ds.name[0]="罗马假日";
ds.date[0]="2013-7-31";
ds.state[0]=0;
ds.count[0]=30;
ds.name[1]="风声鹤唳";
ds.state[1]=1;
ds.count[1]=13;
ds.name[2]="满屋浪漫";
ds.state[2]=1;
ds.count[2]=69;
ds.name[3]="一个人的武林";
ds.state[3]=1;
ds.count[3]=22;
ds.name[4]="江上美人";
ds.date[4]="2014-7-31";
ds.state[4]=0;
ds.count[4]=82;
}
/*定义一个归还DVD方法*/
publicvoidrelend(){
System.out.println("---->归还DVD");
System.out.print("请输入需要归还的DVD名称:
");
StringName=input.next();
for(inti=0;iif(ds.name[i].equals(Name)&&ds.state[i]==0){//根据“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和是借出的状态!
ds.state[i]=1;//归还之后,借书状态必须要设置为:
未借出状态,用于可以借出!
System.out.println("请输入归还日期:
yyyy-mm-dd");//输入的日期格式必须统一为:
yyyy-mm-dd
Stringdate=input.next();
System.out.println("归还<<"+ds.name[i]+">>成功!
");//调用DVDSet类里面的属性,找到并调用name[i]这个属性值!
System.out.println("借出日期为:
"+ds.date[i]);//调用DVDSet类里面的属性,找到并调用date[i]这个属性值!
System.out.println("归还日期为:
"+date);
doubleMoney=charge(ds.date[i],date);//接收并且调用chargr这个方法,此方法主要用来计算租金!
System.out.println("应付租金为:
"+Money);
break;
}elseif(ds.name[i].equals(Name)&&ds.state[i]==0){//根据“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和而借出的状态为已经借出状态则执行!
System.out.println("您的动作慢了半拍,此<<"+ds.name+">>已经被借出了!
");
}elseif(ds.name[i]==null){//判断根据“需要归还的DVD名称”是否在数组name中存在,如果不存在,直接跳出这个for循环,执行下面的语句!
System.out.println("没有您可以借的DVD!
");
break;
}
}
reMenu();//调用到返回菜单的方法中,继续调用主菜单!
System.out.println("********************************************");
}
publicdoublecharge(Stringdate1,Stringdate2){//定义一个计算租金的方法
doubleTotalMoney=0;//定义总租金的接收变量!
SimpleDateFormatsd=newSimpleDateFormat("yyyy-mm-dd");//一个以与语言环境有关的方式来格式化和解析日期的具体类,使得可以选择任何用户定义的日期-时间格式的模式!
Dated1=null;//定义一个Date的应用变量!
并且付初始值!
try{
d1=sd.parse(date1);//调用SimpleDateFormat中的parse()方法,用来格式化日期数据
}catch(ParseExceptione){
e.printStackTrace();//如果系统检测到异常,则系统匹配会ParseException,并且打印出异常信息!
}
Dated2=null;//定义一个Date的应用变量!
并且付初始值!
try{
d2=sd.parse(date2);//调用SimpleDateFormat中的parse()方法,用来格式化日期数据
}catch(ParseExceptione){
e.printStackTrace();//如果系统检测到异常,则系统匹配会ParseException,并且打印出异常信息!
}
TotalMoney=(d2.getTime()-d1.getTime())/(24*60*60*1000);//计算
returnTotalMoney;//把计算到的总租金返回到调用它的位置!
}
/*定义一个借出方法*/
publicvoidlend(){
System.out.println("---->借出DVD");
System.out.print("请输入需要借出的DVD名称:
");
StringName=input.next();
for(inti=0;iif(ds.name[i]==null){
System.out.println("没有您可以借的DVD!
");
break;
}elseif(ds.name[i].equals(Name)&&ds.state[i]==1){//根据匹配到的“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和是未有借出的状态!
执行相应的代码语句
ds.state[i]=0;
System.out.println("请输入借出日期:
yyyy-mm-dd");
ds.date[i]=input.next();
System.out.println("借<<"+ds.name[i]+">>成功!
");
ds.count[i]++;//主要用于后面排序方法的比较,看哪本DVD借出的次数最多!
break;
}elseif(ds.name[i].equals(Name)&&ds.state[i]==0){//根据匹配到的“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和是借出的状态!
执行相应的代码语句
System.out.println("您的动作慢了半拍,此<<"+ds.name[i]+">>已经被借出了!
");
break;
}
}
reMenu();//调用到返回菜单的方法中,继续调用主菜单!
System.out.println("********************************************");
}
/*定义删除方法*/
publicvoiddelete(){
booleanflag=false;//一个标识符,用于方法内部条件判断的依据
System.out.println("---->删除DVD");
System.out.print("请输入需要删除的DVD名称:
");
StringName=input.next();
for(inti=0;iif(ds.name[i]!
=null&&ds.state[i]==1&&ds.name[i].equals(Name)){//如果匹配到ds.name[i]!
=null,根据匹配到的“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和是未有借出的状态!
执行相应的代码语句
intj=i;//定义一个int的变量,用于下面数组下标的操作!
while(ds.name[j+1]!
=null){//如果name[j+1]不为空null,说明name[j]后面还有数组元素,则执行while语句,这个语句作用就是把下标大于name[j]的数组元素前移,因为name[j]已经删除掉了!
ds.name[j]=ds.name[j+1];//数组元素前移的操作
ds.state[j]=ds.state[j+1];//数组元素前移的操作
ds.date[j]=ds.date[j+1];//数组元素前移的操作
j++;//下标值增加,用于后移判断
}
ds.name[j]=null;//不管是否执行while语句,j最终都是最后的一个数组的下标!
ds.date[j]=null;//不管是否执行while语句,j最终都是最后的一个数组的下标!
System.out.println("删除<<"+ds.name[i]+">>成功!
");
flag=true;
break;
}elseif(ds.name[i]!
=null&&ds.state[i]==0&&ds.name[i].equals(Name)){//如果匹配到ds.name[i]!
=null,根据匹配到的“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和是借出的状态!
执行相应的代码语句
System.out.println("<<"+ds.name[i]+">>"+"为借出状态,无法删除!
");
flag=true;
break;
}
}
if(!
flag){//判断,如果为真说明没有查询到要删除的DVD,这里可以不需要flag进行判断,直接在前面的ifelse语句中,添加一条if(ds.name[i]==null)就t、跳出for循环,我没有验证,只是根绝理论推敲。
System.out.println("Sorry,没有匹配到您要删除的DVD名称!
");
}
reMenu();//调用到返回菜单的方法中,继续调用主菜单!
System.out.println("********************************************");
}
/*查询方法*/
publicvoidsearch(){
System.out.println("---->查看DVD");
System.out.println("序号\t\t状态\t\t名称\t\t借出日期");
for(inti=0;iif(ds.name[i]==null){
break;
}elseif(ds.state[i]==0){//如果匹配到ds.state[i]=0,说明需要归还的DVD归还的状态为借出状态,执行相应的代码语句。
System.out.println((i+1)+"\t\t"+"已经借出"+"\t\t<<"+ds.name[i]+">>"+"\t"+ds.date[i]);
}elseif(ds.state[i]==1){//如果匹配到ds.state[i]=1,说明需要归还的DVD归还的状态为未借出状态,执行相应的代码语句。
System.out.println((i+1)+"\t\t"+"可以借出"+"\t\t<<"+ds.name[i]+">>");
}
}
reMenu();
System.out.println("********************************************");
}
/*添加方法*/
publicvoidadd(){
System.out.println("---->新增DVD");
System.out.print("请输入需要增加的DVD名称:
");
StringName=input.next();
for(inti=0;iif(ds.name[i]==null){//判断name[i]是否为空?
如果为NULL,则执行if语句的代码,对name[i]进行赋值操作
ds.name[i]=Name;
ds.state[i]=1;
System.out.println("新增《"+Name+"》成功!
");
break;
}
}
reMenu();
System.out.println("********************************************");
}
publicvoidlist(){
String[]Name=newString[100];//定义一个新的Name数组,作用:
把之前name数组里面的元素全部复制一份到Name数组中,用于后面的排榜操作!
int[]Count=newint[100];//定义一个新的Count数组,作用:
把之前count数组里面的元素全部复制一份到Count数组中,用于后面的排榜操作!
for(inti=0;iName[i]=ds.name[i];//赋值操作,把name[i]里面的元素赋值给Name[i];
Count[i]=ds.count[i];//赋值操作,把count[i]里面的元素赋值给Count[i];
}
for(inti=0;i冒泡排序算法。
for(intj=0;jif(Count[j]>Count[j+1]){
intSwap(Count,j,j+1);//调用定义好的交换方法
stringSwap(Name,j,j+1);//调用定义好的交换方法
}
}
}
System.out.println("---->借出DVD次数排行版");
System.out.println("排名\t\t名称\t借出次数");
intz=1;//用来显示排名数
for(inti=ds.name.length-1;i>0;i--){
if(Name[i]!
=null){//如果Name[i]!
=null,则执行相应的操作
System.out.println("第"+z+"名"+"\t\t<<"+Name[i]+">>"+"\t"+Count[i]);
z++;
}
}
reMenu();
System.out.println("********************************************");
}
/*DVD借出排行榜*/
publicvoidlist1(){
String[]Name=newString[100];//定义一个新的Name数组,作用:
把之前name数组里面的元素全部复制一份到Name数组中,用于后面的排榜操作!
int[]Count=newint[100];//定义一个新的Count数组,作用:
把之前count数组里面的元素全部复制一份到Count数组中,用于后面的排榜操作!
for(inti=0;iName[i]=ds.name[i];//赋值操作,把name[i]里面的元素赋值给Name[i];
Count[i]=ds.count[i];//赋值操作,把count[i]里面的元素赋值给Count[i];
}
for(inti=0;i选择排序算法。
for(intj=i+1;jif(Count[i]>Count[j]){
intSwap(Count,i,j);//调用定义好的交换方法
stringSwap(Name,i,j);//调用定义好的交换方法
}
}
}
System.out.println("---->借出DVD次数排行版");
System.out.println("排名\t\t名称\t借出次数");
intz=1;//用来显示排名数
for(inti=ds.name.length-1;i>0;i--){