问题描述
班级,姓名,是否出勤(0:未出勤;1:出勤),是否迟到(0:未迟到,1:迟到),每月每人总的考勤统计为4天
现有class20、class21、class22、三个班级的月度考勤主要涵盖学生信息(学生的班级、姓名、是否旷课、是否迟到、考勤日期等)
1.统计出每个同学月度的出勤率(出勤总天数/(未出勤天数+出勤天数)),旷课总天数、出勤总天数、根据出勤率排序,倒叙排列
输出数据格式如下
班级 姓名 出勤率 出勤总天数 未出勤天数
class20 sunliu 50 2 2
2.将各班学生的统计结果,分开输出到不同的文本中,并根据出勤率排序,倒叙排列
数据源
class20,lisi,1,0,09-01
class20,lisi,1,0,09-07
class20,lisi,1,0,09-15
class20,lisi,1,0,09-25
class20,sunliu,1,0,09-01
class20,sunliu,0,0,09-07
class20,sunliu,0,0,09-15
class20,sunliu,1,0,09-25
class20,zhaoqi,1,0,09-01
class20,zhaoqi,1,0,09-07
class20,zhaoqi,1,0,09-15
class20,zhaoqi,1,0,09-25
class20,changyang,1,0,09-01
class20,changyang,1,1,09-07
class20,changyang,0,0,09-15
class20,changyang,1,0,09-25
class21,jingkun,1,0,09-01
class21,jingkun,0,0,09-07
class21,jingkun,0,0,09-15
class21,jingkun,1,0,09-25
class21,xian,1,0,09-01
class21,xian,1,0,09-07
class21,xian,1,0,09-15
class21,xian,1,0,09-25
class21,renming,1,0,09-01
class21,renming,0,0,09-07
class21,renming,1,1,09-15
class21,renming,1,0,09-25
class21,jingkun,1,0,09-01
class21,jingkun,0,0,09-07
class21,jingkun,0,0,09-15
class21,jingkun,1,0,09-25
class22,xian,1,0,09-01
class22,xian,1,1,09-07
class22,xian,1,0,09-15
class22,xian,1,0,09-25
class22,zhaosi,1,1,09-01
class22,zhaosi,1,1,09-07
class22,zhaosi,1,1,09-15
class22,zhaosi,1,1,09-25
class22,jingshui,1,0,09-01
class22,jingshui,1,1,09-07
class22,jingshui,1,1,09-15
class22,jingshui,1,1,09-25
class22,liuzhi,1,0,09-01
class22,liuzhi,1,1,09-07
class22,liuzhi,1,0,09-15
class22,liuzhi,1,1,09-25
代码实现
1.bean对象
package com.zj.mergine_test;
import org.apache.hadoop.io.WritableComparable;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
public class stu_bean implements WritableComparable<stu_bean> {
// 班级
private String grade;
// 姓名
private String name;
// 是否出勤
private int participation;
// 是否迟到
private int late;
// 日期
private String date;
// 出勤率
private float attendanceRate;
// 出勤天数
private float workday;
// 未出勤天数
private float no_workday;
public stu_bean() {
}
public stu_bean(String grade, String name, int participation, int late, String date, float attendanceRate, float workday, float no_workday) {
this.grade = grade;
this.name = name;
this.participation = participation;
this.late = late;
this.date = date;
this.attendanceRate = attendanceRate;
this.workday = workday;
this.no_workday = no_workday;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getParticipation() {
return participation;
}
public void setParticipation(int participation) {