需求:请设计一个班级学生的信息管理模块,学生的数据有:姓名,性别,成绩
功能1:要求打印出来全部学生的信息;
功能2:要求打印出全班同学的平均成绩。
使用两套方案:
1.能打印班级全部学生的信息,能打印班级全部学生的平均分。
2.能打印班级全部学生的信息,包括男女人数,能打印班级全部学生的平均分,除去最高分和最低分。
Student类:
public class Student {
private String name;
private char sex;
private double score;
public Student() {
}
public Student(String name, char sex, double score) {
this.name = name;
this.sex = sex;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
}
ClassManager类
public class ClassManager {
private ArrayList<Student> students = new ArrayList<>();
private StudentOperator studentOperator = new StudentOperator02();
//private StudentOperator studentOperator = new StudentOperator01();
public ClassManager() {
// Student s1 = new Student("小红", '女', 100);
// students.add(s1);
students.add(new Student("小红", '女', 100));
students.add(new Student("小茗", '女', 70));
students.add(new Student("小晴", '女', 50));
students.add(new Student("小鸣", '男', 60));
students.add(new Student("小言", '男', 100));
}
public void printInfo(){
studentOperator.printallInfo(students);
}
public void printScore(){
studentOperator.printallaverageScore(students);
}
}
StudentOperater接口
public interface StudentOperator {
void printallInfo(ArrayList<Student> students);
void printallaverageScore(ArrayList<Student> students);
}
两个实现类
public class StudentOperator01 implements StudentOperator {
@Override
public void printallInfo(ArrayList<Student> students) {
System.out.println("--全部同学信息如下--");
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
System.out.println("学生姓名:" + s.getName() + "\t学生性别:"
+ s.getSex() + "\t学生分数" + s.getScore());
}
}
@Override
public void printallaverageScore(ArrayList<Student> students) {
System.out.println("--全部同学平均分如下--");
double allScore = 0.0;
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
allScore += s.getScore();
}
System.out.println("全部同学的平均分:" + (allScore/ students.size()));
}
}
public class StudentOperator02 implements StudentOperator {
@Override
public void printallInfo(ArrayList<Student> students) {
System.out.println("--全部同学信息如下--");
int count01 = 0;
int count02 = 0;
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
System.out.println("学生姓名:" + s.getName() + "\t学生性别:"
+ s.getSex() + "\t学生分数" + s.getScore());
if(s.getSex()=='男') {
count01++;
}else{
count02++;
}
}
System.out.println("男学生人数" + count01 + "\t女学生人数" + count02);
}
@Override
public void printallaverageScore(ArrayList<Student> students) {
System.out.println("--全部同学平均分如下--");
// double max = 0.0;
// double min = 0.0;
double max = students.get(0).getScore();
double min =students.get(0).getScore();
double allScore = 0.0;
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
allScore += s.getScore();
if(s.getScore()>max) {
max = s.getScore();
} if(s.getScore()<min){
min=s.getScore();
}
}
System.out.println("全部同学的平均分(去掉最高和最低):"
+ (allScore-max-min) / (students.size()-2));
}
}
Test:
public class Test {
public static void main(String[] args) {
ClassManager clazz =new ClassManager();
clazz.printInfo();
clazz.printScore();
}
}
1方案运行结果:
2方案运行结果: