题目
定义一个学生类用来存储学生的信息(包括:学号,姓名,英语成绩、高数成绩、体育成绩),在main方法中定义一个数组存储5名学生的信息。
要求:
(1)按名字查询并输出某位同学成绩,要求能够实现部分匹配的查找,例如:希望查找John,可查找到所有名字包含John的人,例如:John Brown,John Smith都能得到(可以使用字符串类String的contains方法,来判断某个字符串中是否包含某个子串) 。
(2)查询并输出所有科目不及格的人数及名单。
输出格式为:
英语成绩不及格的有:张三、李四、王五,总共有3人
高数成绩不及格的有:张三,总共有1人
体育成绩不及格的有:张三丰、张无忌,总共有2人
提示:
(1)定义的学生类:包括属性、属性的getter、setter方法。
(2)类中其他方法可自由发挥,比如打印学生信息的方法(如print())或 toString())
(3)自己定义包含main方法的类,类中定义2个方法,分别用来实现按名字查询成绩、查找不及格人数并打印不及格名单的功能。
Student.java
package com.hitmt.work2;
/**
*
* <p>Description: 学生类</p>
* @author HiTMT
* @date 2019年9月23日上午11:27:48
*/
public class Student {
private String sno;
private String name;
private float englishGrade;
private float mathGrade;
private float sportsGrade;
public Student() {}
public Student(String sno, String name, float englishGrade, float mathGrade, float sportsGrade) {
super();
this.sno = sno;
this.name = name;
this.englishGrade = englishGrade;
this.mathGrade = mathGrade;
this.sportsGrade = sportsGrade;
}
public String getGradeInfo() {
return "英语:"+englishGrade+",高数:"+mathGrade+",体育:"+sportsGrade;
}
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getEnglishGrade() {
return englishGrade;
}
public void setEnglishGrade(float englishGrade) {
this.englishGrade = englishGrade;
}
public float getMathGrade() {
return mathGrade;
}
public void setMathGrade(float mathGrade) {
this.mathGrade = mathGrade;
}
public float getSportsGrade() {
return sportsGrade;
}
public void setSportsGrade(float sportsGrade) {
this.sportsGrade = sportsGrade;
}
}
StudentManager.java
/**
*
*/
package com.hitmt.work2;
import java.util.ArrayList;
import java.util.List;
/**
* <p>Description: 处理学生信息的管理器</p>
* @author HiTMT
* @date 2019年9月23日上午11:30:10
*/
public class StudentManager {
public static void main(String[] args) {
Student[] sts= {new Student("1", "张三", 59, 59, 60),
new Student("1", "李四", 59, 60, 60),
new Student("1", "王五", 59, 60, 60),
new Student("1", "张三丰", 60, 60, 59),
new Student("1", "张无忌", 60, 60, 59)};
StudentManager sm=new StudentManager();
sm.printGrade(sts, "张");
sm.printFlunk(sts);
}
/**
* 根据姓名查询并打印对应的成绩
* @param students 待查询的学生数组
* @param name 学生的姓名子串,可以匹配到多个学生
*/
public void printGrade(Student[] students, String name) {
for(Student st : students) {
String stName=st.getName();
if(stName.contains(name)) {
System.out.println(stName+"的成绩为,"+st.getGradeInfo());
}
}
}
/**
* 查询并打印不及格人数和名单
* @param students
*/
public void printFlunk(Student[] students) {
List<Student> elSL =new ArrayList<>();
List<Student> mtSL =new ArrayList<>();
List<Student> spSL =new ArrayList<>();
for(Student st : students) {
if(st.getEnglishGrade()<60) {
elSL.add(st);
}
if(st.getMathGrade()<60) {
mtSL.add(st);
}
if(st.getSportsGrade()<60) {
spSL.add(st);
}
}
System.out.println("英语成绩不及格的有:"+getNameString(elSL)+",总共有"+elSL.size()+"人");
System.out.println("高数成绩不及格的有:"+getNameString(mtSL)+",总共有"+mtSL.size()+"人");
System.out.println("体育成绩不及格的有:"+getNameString(spSL)+",总共有"+spSL.size()+"人");
}
/**
* 返回由学生列表中所有学生名字构成的字符串
* @param Students 学生列表
* @return 包含所有学生名字的字符串
*/
private String getNameString(List<Student> Students) {
String s="";
int size=Students.size();
for(int i=0;i<size;i++) {
s+=Students.get(i).getName();
if(i<size-1) {
s+="、";
}
}
return s;
}
}