给定一个题目:给定一组学生信息(包括学号,姓名,年龄,年级,成绩),要求将学生的成绩进行处理(90分以上的划为A等,90到80分的划为B等,70到80分的划为C等,60到70分的划为D等,60分以下的划为E等),处理完后将每个学生的基本信息和他的等级一并输出出来,最后将A,B,C,D,E五个等级的成绩个数输出出来。
那么这里主体的思想就是建立学生类并实例化(InPut),取出学生信息处理(Deal with the Data),输出题目要求(OutPut)。
思考:题目要求是将学生信息进行处理,那么可以把过程分为以下几个步骤:
1.我们需要创建一个学生类,设置它的一些属性(学号,姓名,年龄,年级,成绩)和方法(这里用到的就是设置器set和访问器get)。
2.实例化一组学生对象(需要用一个数组来存储这一组学生对象),录入他们的信息(学号,姓名,年龄,年级,成绩)(这个通过构造函数创建或者set访问器设置)。
3.取出他们的成绩信息(用get访问器访问),然后进行处理(用流程控制语句),把成绩进行分类(A,B,C,D,E五类)(流程控制语句实现选择功能)。
4.最后把题目要求输出出来。
下面附Java代码
//构建一个学生类
class Student
{
//定义学生这个类五个属性:学号number,姓名name,年龄age,年级depth,成绩mark
private int number;
private String name;
private int age;
private int depth;
private int mark;
//声明学生类的构造方法(就是学生类是如何组成的),将五个参数变量分别赋值给五个属性
public Student(int a,String b,int c,int d,int e)
{
number = a;
name = b;
age = c;
depth = d;
mark = e;
}
//学生学号的设置器
public void setNumber(int a)
{
number = a;
}
//学生学号的访问器
public int getNumber()
{
return number;
}
//学生名字的设置器
public void setName(String b)
{
name = b;
}
//学生名字的访问器
public String getName()
{
return name;
}
//学生年龄的设置器
public void setAge(int c)
{
age = c;
}
//学生年龄的访问器
public int getAge()
{
return age;
}
//学生年级的设置器
public void setDepth(int d)
{
depth = d;
}
//学生年级的访问器
public int getDepth()
{
return depth;
}
//学生成绩的设置器
public void setMark(int e)
{
mark = e;
}
//学生成绩的访问器
public int getMark()
{
return mark;
}
}
public class StudentCourse
{
//学生成绩主类的主方法,程序就是从这里开始执行的
public static void main(String[] args)
{
//先定义一个学生类数组用于存储多个学生对象
Student [] student= new Student [10];
//将10个学生对象的基本信息(学号,姓名,年龄,年级,成绩)全部实例化出来,可供访问器get访问
student[0]= new Student(1,"张三",21,3,46);
student[1]= new Student(2,"李四",22,3,89);
student[2]= new Student(3,"王五",22,3,56);
student[3]= new Student(4,"高倩",20,2,64);
student[4]= new Student(5,"小玲",23,4,92);
student[5]= new Student(6,"雅静",20,2,76);
student[6]= new Student(7,"谢然",21,2,92);
student[7]= new Student(8,"刘浩",22,3,83);
student[8]= new Student(9,"狗生",22,3,65);
student[9]= new Student(10,"大雨",22,3,79);
//定义五个整形变量,用于计数A,B,C,D,E五等成绩
int A=0;
int B=0;
int C=0;
int D=0;
int E=0;
//定义一个工作变量m,用于表示每个学生对象的成绩等级
char m;
//用一个增强型for循环将学生数组中的每一个学生对象遍历出来
for(Student p : student)
{
//用switch循环实现选择功能,取出学生的成绩,并划分等级
switch(p.getMark()/10)
{
case 9:{
m='A'; //用一个字符表示成绩等级
A++; //等级计数器
break; //终止switch循环并跳到for循环,执行下一次命令,取出下一个学生对象的成绩
}
case 8:{
m='B';
B++;
break;
}
case 7:{
m='C';
C++;
break;
}
case 6:{
m='D';
D++;
break;
}
//当前面所有情况都不满足时,就执行下面程序
default:{
m='E';
E++;
}
}
//每处理完一次学生对象成绩就将该学生对象的基本信息打出来
System.out.println("学号:"+p.getNumber()+" 姓名:"+p.getName()+" 年龄:"+p.getAge()+" 年级:"+p.getDepth()+" 成绩:"+p.getMark()+" 等级:"+m);
}
//最后记录五个等级的成绩个数
System.out.println("A等学生个数:"+A);
System.out.println("B等学生个数:"+B);
System.out.println("C等学生个数:"+C);
System.out.println("D等学生个数:"+D);
System.out.println("E等学生个数:"+E);
}
}
最后我们看看效果: