1、项目Java版本迷你DVDimport java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Scanner;public class DVDMgr Scanner input=new Scanner(System.in);/扫描器,作用:主要是从键盘输入数据 DVDSet ds=new DVDSet(); /创建一个对象,实例化DVDSet的一个变量ds.用于在本类调用! public void startMenu()/定义一个菜单方法,用于程序运行的
2、时候显示、选择作用 boolean tag=false;/定义一个标志符号,用于do-while的循环判断 do System.out.println(tt欢迎使用迷您DVD管理器); System.out.println(-); System.out.println(tt0.排 序 DVD); System.out.println(tt1.新 增 DVD); System.out.println(tt2.查 看 DVD); System.out.println(tt3.删 除 DVD); System.out.println(tt4.借 出 DVD); System.out.println(
3、tt5.归 还 DVD); System.out.println(tt6.退 出 DVD); System.out.println(-); System.out.print(请选择:); int choice=input.nextInt(); switch (choice) /switch()语句,用来选择要执行的方法调用。 case 0: /*list(); list1();*/ list2(); tag=false; break; case 1: add(); tag=false; break; case 2: search(); tag=false; break; case 3: del
4、ete(); tag=false; break; case 4: lend(); tag=false; break; case 5: relend(); tag=false; break; case 6: System.out.println(谢谢使用迷你DVD!); tag=false; break; default: System.out.println(输入有误,请重新输入.);/输入错误,则直接给标志符号tag=true。 tag=true; while(tag);/,则while(tag)为真,重新开始菜单选择! public void reMenu()/定义一个返回到菜单的方法,每
5、次执行完方法后就调用reMenu(),回到startMenu()方法,重新选择需要的选项! boolean flag=false;/定义一个标志符号flag,用来判断do-while()的循环! System.out.print(输入0返回:); do if(input.nextInt()=0) startMenu(); else System.out.println(您的输入有误,请重新输入.); flag=true; while(flag); /*定义一个初始化方法,用来给部分的数组赋值!具体赋值什么,只要满足项目要求和数据类型,随便赋值!*/ public void initial()
6、ds.name0=罗马假日; ds.date0=2013-7-31; ds.state0=0; ds.count0=30; ds.name1=风声鹤唳; ds.state1=1; ds.count1=13; ds.name2=满屋浪漫; ds.state2=1; ds.count2=69; ds.name3=一个人的武林; ds.state3=1; ds.count3=22; ds.name4=江上美人; ds.date4=2014-7-31; ds.state4=0; ds.count4=82; /*定义一个归还DVD方法*/ public void relend() System.out.
7、println(- 归还DVD); System.out.print(请输入需要归还的DVD名称:); String Name=input.next(); for (int i = 0; i ds.name.length; i+) /定义的for循环,用来先查找“需要归还的DVD名称”,看看是否存在于name数组,这里的循环数组变量,可以用count或者state等均可! if(ds.namei.equals(Name)&ds.statei=0)/根据“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和是借出的状态! ds.statei=1;/归还之后
8、,借书状态必须要设置为:未借出状态,用于可以借出! System.out.println(请输入归还日期:yyyy-mm-dd); /输入的日期格式必须统一为:yyyy-mm-dd String date=input.next(); System.out.println(归还成功!);/调用DVDSet类里面的属性,找到并调用namei这个属性值! System.out.println(借出日期为:+ds.datei);/调用DVDSet类里面的属性,找到并调用datei这个属性值! System.out.println(归还日期为:+date); double Money=charge(ds
9、.datei,date);/接收并且调用chargr这个方法,此方法主要用来计算租金! System.out.println(应付租金为:+Money); break; else if(ds.namei.equals(Name)&ds.statei=0)/根据“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和而借出的状态为已经借出状态则执行! System.out.println(您的动作慢了半拍,此已经被借出了!); else if(ds.namei=null) /判断根据“需要归还的DVD名称”是否在数组name中存在,如果不存在,直接跳出这个f
10、or循环,执行下面的语句! System.out.println(没有您可以借的DVD!); break; reMenu();/调用到返回菜单的方法中,继续调用主菜单! System.out.println(*); public double charge(String date1, String date2) /定义一个计算租金的方法 double TotalMoney=0;/定义总租金的接收变量! SimpleDateFormat sd=new SimpleDateFormat(yyyy-mm-dd);/一个以与语言环境有关的方式来格式化和解析日期的具体类,使得可以选择任何用户定义的日期-
11、时间格式的模式! Date d1 = null; /定义一个Date的应用变量!并且付初始值! try d1 = sd.parse(date1);/调用SimpleDateFormat中的parse()方法,用来格式化日期数据 catch (ParseException e) e.printStackTrace();/如果系统检测到异常,则系统匹配会ParseException,并且打印出异常信息! Date d2 = null; /定义一个Date的应用变量!并且付初始值! try d2 = sd.parse(date2);/调用SimpleDateFormat中的parse()方法,用来格
12、式化日期数据 catch (ParseException e) e.printStackTrace();/如果系统检测到异常,则系统匹配会ParseException,并且打印出异常信息! TotalMoney=(d2.getTime()-d1.getTime()/(24*60*60*1000);/计算 return TotalMoney;/把计算到的总租金返回到调用它的位置! /*定义一个借出方法*/ public void lend() System.out.println(- 借出DVD); System.out.print(请输入需要借出的DVD名称:); String Name=in
13、put.next(); for (int i = 0; i ds.name.length; i+) /定义的for循环,用来先查找“需要归还的DVD名称”,看看是否存在于name数组,这里的循环数组变量,可以用count或者state等均可! if(ds.namei=null) System.out.println(没有您可以借的DVD!); break; else if(ds.namei.equals(Name)&ds.statei=1)/根据匹配到的“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和是未有借出的状态!执行相应的代码语句 ds.st
14、atei=0; System.out.println(请输入借出日期:yyyy-mm-dd); ds.datei=input.next(); System.out.println(借成功!); ds.counti+;/主要用于后面排序方法的比较,看哪本DVD借出的次数最多! break; else if(ds.namei.equals(Name)&ds.statei=0)/根据匹配到的“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和是借出的状态!执行相应的代码语句 System.out.println(您的动作慢了半拍,此已经被借出了!); bre
15、ak; reMenu();/调用到返回菜单的方法中,继续调用主菜单! System.out.println(*); /*定义删除方法*/ public void delete() boolean flag=false; /一个标识符,用于方法内部条件判断的依据 System.out.println(- 删除DVD); System.out.print(请输入需要删除的DVD名称:); String Name=input.next(); for (int i = 0; i ds.name.length; i+) /定义的for循环,用来先查找“需要归还的DVD名称”,看看是否存在于name数组,
16、这里的循环数组变量,可以用count或者state等均可! if(ds.namei!=null&ds.statei=1&ds.namei.equals(Name)/如果匹配到ds.namei!=null,根据匹配到的“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和是未有借出的状态!执行相应的代码语句 int j=i; /定义一个int的变量,用于下面数组下标的操作! while(ds.namej+1!=null)/如果namej+1不为空null,说明namej后面还有数组元素,则执行while语句,这个语句作用就是把下标大于namej的数组元素前
17、移,因为namej已经删除掉了! ds.namej=ds.namej+1;/数组元素前移的操作 ds.statej=ds.statej+1;/数组元素前移的操作 ds.datej=ds.datej+1;/数组元素前移的操作 j+;/下标值增加,用于后移判断 ds.namej=null;/不管是否执行while语句,j最终都是最后的一个数组的下标! ds.datej=null;/不管是否执行while语句,j最终都是最后的一个数组的下标! System.out.println(删除成功!); flag=true; break; else if(ds.namei!=null&ds.statei=0
18、&ds.namei.equals(Name)/如果匹配到ds.namei!=null,根据匹配到的“需要归还的DVD名称”和“需要归还的DVD归还的状态”,如果匹配到“需要归还的DVD名称”和是借出的状态!执行相应的代码语句 System.out.println(+为借出状态,无法删除!); flag=true; break; if(!flag)/判断,如果为真说明没有查询到要删除的DVD,这里可以不需要flag进行判断,直接在前面的if else语句中,添加一条if(ds.namei=null)就t、跳出for循环,我没有验证,只是根绝理论推敲。 System.out.println(Sor
19、ry,没有匹配到您要删除的DVD名称!); reMenu();/调用到返回菜单的方法中,继续调用主菜单! System.out.println(*); /*查询方法*/ public void search() System.out.println(- 查看DVD); System.out.println(序号tt状态tt名称tt借出日期); for (int i = 0; i ds.name.length; i+) /定义的for循环,这里的循环数组变量,可以用count或者state等均可! if(ds.namei=null) break; else if(ds.statei=0)/如果匹
20、配到ds.statei=0,说明需要归还的DVD归还的状态为借出状态,执行相应的代码语句。 System.out.println(i+1)+tt+已经借出+tt+t+ds.datei); else if(ds.statei=1)/如果匹配到ds.statei=1,说明需要归还的DVD归还的状态为未借出状态,执行相应的代码语句。 System.out.println(i+1)+tt+可以借出+tt); reMenu(); System.out.println(*); /*添加方法*/ public void add() System.out.println(- 新增DVD); System.ou
21、t.print(请输入需要增加的DVD名称:); String Name=input.next(); for (int i = 0; i ds.name.length; i+) /定义的for循环,这里的循环数组变量,可以用count或者state等均可! if(ds.namei=null)/判断namei是否为空?如果为NULL,则执行if语句的代码,对namei进行赋值操作 ds.namei=Name; ds.statei=1; System.out.println(新增+Name+成功!); break; reMenu(); System.out.println(*); public v
22、oid list() String Name=new String100;/定义一个新的Name数组,作用:把之前name数组里面的元素全部复制一份到Name数组中,用于后面的排榜操作! int Count=new int 100;/定义一个新的Count数组,作用:把之前count数组里面的元素全部复制一份到Count数组中,用于后面的排榜操作! for (int i = 0; i ds.name.length; i+) /定义的for循环,这里的循环数组变量,可以用count均可! Namei=ds.namei;/赋值操作,把namei里面的元素赋值给Namei; Counti=ds.co
23、unti;/赋值操作,把counti里面的元素赋值给Counti; for (int i = 0; i Count.length-1; i+) /这里根据借出次数来进行排序,排序的方法为:冒泡排序算法。 for (int j = 0; j Countj+1) intSwap(Count,j,j+1);/调用定义好的交换方法 stringSwap(Name,j,j+1); /调用定义好的交换方法 System.out.println(- 借出DVD次数排行版); System.out.println(排 名tt名 称t借出次数); int z=1;/用来显示排名数 for (int i = ds
24、.name.length-1; i 0 ; i-) if(Namei!=null)/如果Namei!=null,则执行相应的操作 System.out.println(第+z+名+tt+t+Counti); z+; reMenu(); System.out.println(*); /*DVD借出排行榜*/ public void list1() String Name=new String100;/定义一个新的Name数组,作用:把之前name数组里面的元素全部复制一份到Name数组中,用于后面的排榜操作! int Count=new int 100;/定义一个新的Count数组,作用:把之前
25、count数组里面的元素全部复制一份到Count数组中,用于后面的排榜操作! for (int i = 0; i ds.name.length; i+) /定义的for循环,这里的循环数组变量,可以用Count均可! Namei=ds.namei;/赋值操作,把namei里面的元素赋值给Namei; Counti=ds.counti;/赋值操作,把counti里面的元素赋值给Counti; for (int i = 0; i Count.length-1; i+) /这里根据借出次数来进行排序,排序的方法为:选择排序算法。 for (int j = i+1; j Countj) intSwap(Count,i,j);/调用定义好的交换方法 stringSwap(Name, i,j);/调用定义好的交换方法 System.out.println(- 借出DVD次数排行版); System.out.println(排 名tt名 称t借出次数); int z=1;/用来显示排名数 for (int i = ds.name.length-1; i 0 ; i-)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1