类和数组的练习:学生数组作业

题目

  定义一个学生类用来存储学生的信息(包括:学号,姓名,英语成绩、高数成绩、体育成绩),在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;
	}
}

输出结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值