——简单面向对象(OO)的练习——
1.题目要求
学生设备管理系统:
每个学校都有很多班级,每个班级都有很多设备。(设备可以更新)
每个设备都有购买价格,每种设备都有折旧率(如每年折旧10%)
①按班级进行统计,指定的班级有多少的设数量?
②按班级进行统计,当前时间,指定班级的设备价格总和?(考虑折旧)
2.代码实现
(1)输出案例
java-1班:共有设备6
编号:d001 设备类型:电脑 购买时间:2017-10-01
编号:d002 设备类型:电脑 购买时间:2017-10-01
编号:d005 设备类型:投影仪 购买时间:2017-10-01
编号:d007 设备类型:桌子 购买时间:2017-10-01
编号:d008 设备类型:桌子 购买时间:2017-10-01
编号:d012 设备类型:椅子 购买时间:2017-10-01
java-2班:共有设备7
编号:d003 设备类型:电脑 购买时间:2017-10-01
编号:d004 设备类型:电脑 购买时间:2017-10-01
编号:d006 设备类型:投影仪 购买时间:2017-10-01
编号:d009 设备类型:桌子 购买时间:2017-10-01
编号:d010 设备类型:桌子 购买时间:2017-10-01
编号:d011 设备类型:桌子 购买时间:2017-10-01
编号:d013 设备类型:椅子 购买时间:2017-10-01
java-1班的设备情况
d001电脑 购买时的价格:3500.0 折旧后的价格:2402
d002电脑 购买时的价格:3500.0 折旧后的价格:2402
d005投影仪 购买时的价格:3000.0 折旧后的价格:2215
d007桌子 购买时的价格:200.0 折旧后的价格:165
d008桌子 购买时的价格:200.0 折旧后的价格:165
d012椅子 购买时的价格:100.0 折旧后的价格:82
java-2班的设备情况
d003电脑 购买时的价格:3500.0 折旧后的价格:2402
d004电脑 购买时的价格:3500.0 折旧后的价格:2402
d006投影仪 购买时的价格:3000.0 折旧后的价格:2215
d009桌子 购买时的价格:200.0 折旧后的价格:165
d010桌子 购买时的价格:200.0 折旧后的价格:165
d011桌子 购买时的价格:200.0 折旧后的价格:165
d013椅子 购买时的价格:100.0 折旧后的价格:82
java-1班设备总和是:7431.0
java-2班设备总和是:7596.0
两个班级目前的设备总和是:15027.0
(2)班级类
package com.lut.biz;
import java.util.ArrayList;
import java.util.List;
public class SClass {
private String sno;
private String sname;
private List<Device> devList;
public SClass(String sno,String sname) {
this.sname=sname;
this.sno=sno;
devList =new ArrayList<Device>(30);
}
//添加设备
public void addDevice(Device dev) {
devList.add(dev);
}
//移除设备
public void removeDevice(String dno) {
for(Device dev:devList) {
if(dev.getDno().equals(dno)) {
devList.remove(dev);
break;
}
}
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public List<Device> getDevList() {
return devList;
}
public void setDevList(List<Device> devList) {
this.devList = devList;
}
}
(3)学校类
package com.lut.biz;
public class School {
private String name;
public School(String name) {
this.name =name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
}
(4)设备名称接口
package com.lut.biz;
public interface DevName {
public String COMPUTER="电脑";
public String TOU_YING="投影仪";
public String TABLE="桌子";
public String CHAIR="椅子"
}
(5)设备类型类
package com.lut.biz;
public class DevType {
private String tno; //设备类型编号
private String name; //设备类型名称
private double price;//价格
private double oldRate;//折旧率
public DevType(String tno,String name) {
this.tno=tno;
this.name=name;
}
public String getTno() {
return tno;
}
public void setTno(String tno) {
this.tno = tno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getOldRate() {
return oldRate;
}
public void setOldRate(double oldRate) {
this.oldRate = oldRate;
}
}
(6)设备类
package com.lut.biz;
import java.util.Date;
public class Device {
private DevType type; //设备类型
private Date buydate; //购买时的日期
private String dno; //设备编号
public Device(String dno, DevType type) {
this.dno = dno;
this.type = type;
}
public DevType getType() {
return type;
}
public void setType(DevType type) {
this.type = type;
}
public Date getBuydate() {
return buydate;
}
public void setBuydate(Date buydate) {
this.buydate = buydate;
}
public String getDno() {
return dno;
}
public void setDno(String dno) {
this.dno = dno;
}
// 计算设备折旧后(当前的)的价格
public double getNowPrice() {
Date now = new Date();
int days = (int)( (now.getTime() - this.buydate.getTime())/(24*3600*1000)) + 1;
int nowPrice = (int)(this.type.getPrice() * (1 - this.type.getOldRate()/365 * days));
System.out.println(this.getDno() + this.getType().getName() +" 购买时的价格:" +this.type.getPrice()+" 折旧后的价格:" + nowPrice);
return nowPrice;
}
}
(7)测试类
package com.lut.ui;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import com.lut.biz.DevName;
import com.lut.biz.DevType;
import com.lut.biz.Device;
import com.lut.biz.SClass;
public class TsetDevice {
public static void main(String[] args) {
// 创建两个班级对象
SClass c1 = new SClass("C001", "java-1班");
SClass c2 = new SClass("C002", "java-2班");
// 创建设备名称对象,设置 设备名称 ,设备类型,价格,折旧率
DevType t1 = new DevType("T001", DevName.COMPUTER);
t1.setOldRate(0.18); // 折旧率
t1.setPrice(3500); // 原价
DevType t2 = new DevType("T002", DevName.TOU_YING);
t2.setOldRate(0.15);
t2.setPrice(3000);
DevType t3 = new DevType("T003", DevName.TABLE);
t3.setOldRate(0.1);
t3.setPrice(200);
DevType t4 = new DevType("T004", DevName.CHAIR);
t4.setOldRate(0.1);
t4.setPrice(100);
// 创建一系列具体的设备
Device d1 = new Device("d001", t1);
Device d2 = new Device("d002", t1);
Device d3 = new Device("d003", t1);
Device d4 = new Device("d004", t1);// 电脑
Device d5 = new Device("d005", t2);
Device d6 = new Device("d006", t2);// 投影仪
Device d7 = new Device("d007", t3);
Device d8 = new Device("d008", t3);
Device d9 = new Device("d009", t3);
Device d10 = new Device("d010", t3);
Device d11 = new Device("d011", t3);// 桌子
Device d12 = new Device("d012", t4);
Device d13 = new Device("d013", t4);// 椅子
// 日期格式化
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
try {
//设置购买时的日期
Date buyDate = sd.parse("2017-10-1");
d1.setBuydate(buyDate);
d2.setBuydate(buyDate);
d3.setBuydate(buyDate);
d4.setBuydate(buyDate);
d5.setBuydate(buyDate);
d6.setBuydate(buyDate);
d7.setBuydate(buyDate);
d8.setBuydate(buyDate);
d9.setBuydate(buyDate);
d10.setBuydate(buyDate);
d11.setBuydate(buyDate);
d12.setBuydate(buyDate);
d13.setBuydate(buyDate);
} catch (Exception e) {
e.printStackTrace();
}
//添加设备
c1.addDevice(d1);
c1.addDevice(d2);
c2.addDevice(d3);
c2.addDevice(d4);
c1.addDevice(d5);
c2.addDevice(d6);
c1.addDevice(d7);
c1.addDevice(d8);
c2.addDevice(d9);
c2.addDevice(d10);
c2.addDevice(d11);
c1.addDevice(d12);
c2.addDevice(d13);
// 创建存储集合
List<Device> devList1 = c1.getDevList();
System.out.println(c1.getSname() + ":共有设备" + devList1.size());
for (Device dev1 : devList1) {
System.out.println("编号:" + dev1.getDno() + " 设备类型:" + dev1.getType().getName() + " 购买时间:"
+ sd.format(dev1.getBuydate()));
}
System.out.println();
List<Device> devList2 = c2.getDevList();
System.out.println(c2.getSname() + ":共有设备" + devList2.size());
for (Device dev2 : devList2) {
System.out.println("编号:" + dev2.getDno() + " 设备类型:" + dev2.getType().getName() + " 购买时间:"
+ sd.format(dev2.getBuydate()));
}
System.out.println();
double allPrice = 0, allPrice1 = 0, allPrice2 = 0;
// 遍历输出当前设备的价格
System.out.println(c1.getSname() + "的设备情况");
for (Device dev : devList1) {
allPrice1 += dev.getNowPrice();
}
System.out.println();
System.out.println(c2.getSname() + "的设备情况");
for (Device dev : devList2) {
allPrice2 += dev.getNowPrice();
}
allPrice = allPrice1 + allPrice2;
System.out.println();
System.out.println(c1.getSname() + "设备总和是:" + allPrice1);
System.out.println(c2.getSname() + "设备总和是:" + allPrice2);
System.out.println("两个班级目前的设备总和是:" + allPrice);
}
}
新人博主,技术有限,如有错误,还望指出。