小人物成长史二
前情绪要
话说主角刚创出一个数组级别的DVD管理系统,让灵恢复了一点力量,然而危险也接憧而来,远处几千米外飞速掠过一道身影,不一会儿就到了身前,跟灵战斗了起来。“快点,我现在打不过对面,我传给你面向对象,你要进化这个程序,让我有更强的力量”
一、进化:面向对象-DVD管理系统
数组级别的力量是最弱小的,少年,你还需要成长啊
二、准备
1.创建类
面向对象是一种思想,你要学会去理解它,当主角闭上了眼睛去阅读少女传给他知识的时候,少女的声音也随之传来,“首先,你需要一个实体类,然后往这个类里添加其所共有的属性,所以还是那5个属性,记住这一句话-类是对象的模板,对象是类的实例”。少女停顿了一会儿,似乎在等少年消化,“我教你面向对象是里面有一个办法可以对付他的篡改大法,此法名为封装,通过独特的方法去访问里面的属性,实体类一般有属性,构造方法,setter和getter方法,所以我们还需要一个对象类去做具体的事情,最后一个类去启动他们”
三 方法
3.1 新增
//1.输入新增的DVD的两项信息
Scanner sc=new Scanner(System.in);
System.out.print("输入DVD的名称:");
String dvdName=sc.next();
System.out.print("输入DVD的日租金:");
double price=sc.nextDouble();
//找到新DVD在数组中的位置(第一个为null的位置)
int index=-1;
for (int i = 0; i < dvds.length; i++) {
if(dvds[i]==null) {
index=i;
break;
}
}
if(index==-1) {
System.out.println("新增失败,库存已满!");
}else {
dvds[index]=new Dvd(dvdName, price);
System.out.println("操作成功!");
}
3.2 显示
System.out.println("名称\t租金\t出租时间\t状态\t出租次数");
for (int i = 0; i < dvds.length; i++) {
if(dvds[i]==null) {
break;
}
dvds[i].showInfo();
}
3.3 删除
Scanner input=new Scanner(System.in);
System.out.print("输入要删除DVD的名称:");
String dvdName=input.next();
//1.调用本类中的findIndexByDVDName查询DVD的位置
int index=findIndexByDVDName(dvdName);
if(index==-1) {
System.out.println("没有此dvd!");
}else {
for(int i=index;i<dvds.length;i++) {
if(dvds[i]==null) {
break;
}
dvds[i]=dvds[i+1];
}
System.out.println("删除成功!");
}
}
//根据DVD名称获取DVD在数组中的位置
private int findIndexByDVDName(String name) {
int index=-1;
for (int i = 0; i < dvds.length; i++) {
if(dvds[i]==null) {
break;
}else {
if(dvds[i].getName().equals(name)) {
index=i;
break;
}
}
}
return index;
3.4 修改
Scanner input=new Scanner(System.in);
System.out.print("输入要修改租金的碟片名称:");
String dvdName=input.next();
//1.调用本类中的findIndexByDVDName查询DVD的位置
int index=findIndexByDVDName(dvdName);
if(index==-1) {
System.out.println("没有此dvd!");
}else {
System.out.print("请输入修改后的单价");
double price=input.nextDouble();
dvds[index].setPrice(price);
System.out.println("修改成功");
}
3.5 出租
Date date=new Date();
Scanner input=new Scanner(System.in);
System.out.print("输入要出租DVD的名称:");
String dvdName=input.next();
//1.调用本类中的findIndexByDVDName查询DVD的位置
int index=findIndexByDVDName(dvdName);
if(index==-1) {
System.out.println("没有此dvd!");
}else if(dvds[index].isStatus()) {
System.out.println("已出租");
}
else {
dvds[index].setStatus(true);
dvds[index].setDate(new Date());
int temp=dvds[index].getCount()+1;
dvds[index].setCount(temp);
System.out.println("出租成功!");
}
3.6 归还
Scanner input=new Scanner(System.in);
System.out.print("输入要归还DVD的名称:");
String dvdName=input.next();
//1.调用本类中的findIndexByDVDName查询DVD的位置
int index=findIndexByDVDName(dvdName);
if(index==-1) {
System.out.println("没有此dvd!");
}else {
dvds[index].setBackdate(new Date());
dvds[index].setStatus(false);
Date date2=dvds[index].getBackdate(new Date());
long day=0;
long days=day<0 ? ((date2.getTime()-dvds[index].getDate().getTime())/1000/60/60/24):-1;
//long day=dvd.calrate(dvds[index].getBackdate(new Date()), dvds[index].getDate());
System.out.println("出租日期:"+dvds[index].show());
System.out.println("归还日期:"+dvds[index].showback());
System.out.println("共计:"+days);
System.out.println("日租金:"+dvds[index].getPrice());
System.out.println("应支付"+days*dvds[index].getPrice()+"元");
System.out.println("归还成功!");
}
3.7 排行榜
//重新建一个数组对象,不影响原先的数组
Dvd[] d=new Dvd[50];
for (int i = 0; i < dvds.length; i++) {
d[i]=dvds[i];
}
//冒泡排序,对对象也有用
for (int i = 0; i < d.length; i++) {
for (int j = 0; j < d.length-1; j++) {
if(d[j].getCount()<d[j+1].getCount()) {
dvd=d[j];
d[j]=d[j+1];
d[j+1]=dvd;
}
}
}
//前三名
for (int i = 0; i < 3; i++) {
System.out.println(d[i]);
}
图片
总结
不行,你bug太多了,时间不多,我想你需要一些援军,上传代码,集众人之力把排行榜功能完善吧
dvd管理系统源代码