一、题目

编写一个学生类Student,属性包括:学号、姓名、年龄和成绩,数据由键盘进行输入且数据自拟,实现如下操作:
1、所有属性的getter和setter方法以及类的有参和无参构造方法;
2、将所有输入的学生信息打印出来;
3、可以通过学号查找学生信息;
4、显示成绩最高和成绩最低的学生信息;
5、对学生成绩进行升序和降序排列;
6、将所有学生年龄增加一岁;
7、显示所有年龄大于20岁的学生信息。

二、实验代码

package fighting;
import java.util.Scanner;
public class fighting 
{
	public static class Student{ //以public class开头的内部类为动态的,而主程序以public static class开头
		//在java中,类中的静态方法不能直接调用动态方法,只有将某个内部类修饰为静态类,能够在静态类中调用该类的成员变量与成员方法。即此处应改为public static class Student
		int num;//学号
		String name;//姓名
		int age;//年龄
	    int score;//成绩
		
	public Student()//空参构造
	{
	   super();
	}
	
	public Student(int num,String name,int age,int score) //有参构造
	{
		this.num=num;
		this.name=name;
		this.age=age;
		this.score=score;
	}
	//各属性的getter和setter方法
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}


	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}


	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}


	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}

	//数组中顺序显示所有学生信息
	void Print(Student[] array)//Student[] array为对象数组,其在使用时必须逐一实例化
		{
			for(int i=0;i<array.length;i++)
			{
				System.out.println("学号:"+array[i].num+"  姓名:"+array[i].name+"  年龄:"+array[i].age+"  成绩:"+array[i].score);
			}
		}
		
	//通过学生学号查找学生信息
	void Find(int num,Student[] array)//参数为num和学生类数组array  
	{
		for(int i=0;i<array.length;i++)
		{
			if(num==array[i].getNum())
			{
				System.out.println("学号:"+array[i].num+"  姓名:"+array[i].name+"  年龄:"+array[i].age+"  成绩:"+array[i].score);
			}
		}
	}

	//根据成绩最高和成绩最低学生信息
	void Score(Student[] array)
	{
		for(int i=0;i<array.length;i++)
		{
			int max=array[0].score;
			int min=array[0].score;
			if(array[i].score>max)
			{
				max=array[i].score;
				System.out.println("学号:"+array[i].num+"  姓名:"+array[i].name+"  年龄:"+array[i].age+"  成绩:"+array[i].score);
			}
			if(array[i].score<min)
			{
				min=array[i].score;
				System.out.println("学号:"+array[i].num+"  姓名:"+array[i].name+"  年龄:"+array[i].age+"  成绩:"+array[i].score);
			}
		}
	}
	
	//按学生成绩降序排列
	void ScoreLow(Student[] array)
	{
		for(int i=0;i<array.length;i++)
		{
			for(int j=i+1;j<array.length;j++) 
			{
				if(array[i].getScore()<array[j].getScore())
				{
					Student temp=null;//对象的空值用null表示
					temp=array[i];
					array[i]=array[j];
					array[j]=temp;	
				}
			}
			System.out.println("学号:"+array[i].num+"  姓名:"+array[i].name+"  年龄:"+array[i].age+"  成绩:"+array[i].score);
		}
	}
	
	//按学生成绩升序排列
	void ScoreHigh(Student[] array)
	{
		for(int i=0;i<array.length;i++)
		{
			for(int j=i+1;j<array.length;j++) 
			{
				if(array[i].getScore()>array[j].getScore())
				{
					Student temp=null;//对象的空值用null表示
					temp=array[i];
					array[i]=array[j];
					array[j]=temp;	
				}
			}
			System.out.println("学号:"+array[i].num+"  姓名:"+array[i].name+"  年龄:"+array[i].age+"  成绩:"+array[i].score);
		}
	}
	
	//所有学生年龄加一岁
	void Add(Student[] array)
	{
		for(int i=0;i<array.length;i++)
		{
			array[i].age+=1;
		}
	}
	

	//显示所有年龄大于20岁的学生名单
	void Check(Student[] array)
	{
		for(int i=0;i<array.length;i++)
		{
			if(array[i].age>20)
			{
				System.out.println("学号:"+array[i].num+"  姓名:"+array[i].name+"  年龄:"+array[i].age);
			}
		}
	}
}
	
	public static void main(String[] args)
	{ 
		//法一:手动输入学生信息
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入学生人数:");
		int x=sc.nextInt();
		Student[] array=new Student[x];
		for(int i=0;i<array.length;i++)
		{
			 array[i]=new Student();//若在编写一个java程序时没有添加无参构造方法,编译器会自动添加无参构造方法;
             //但是若编写时添加了有参构造方法而未添加无参构造方法,则编译器只认有参构造方法而不会默认添加无参构造方法,需要注意的是如果需要使用无参构造方法,一定要在类中里面添加
			 
			 System.out.println("请输入第"+(i+1)+"个学生的学号");
			 int num=sc.nextInt();//输入学号
			 array[i].setNum(num);
			 
			 System.out.println("请输入第"+(i+1)+"个学生的姓名");
			 String name=sc.next();//输入姓名
			 array[i].setName(name);
			 
			 System.out.println("请输入第"+(i+1)+"个学生的年龄");
			 int age=sc.nextInt();//输入年龄
			 array[i].setAge(age);
			 
			 System.out.println("请输入第"+(i+1)+"个学生的成绩");
			 int score=sc.nextInt();//输入成绩
			 array[i].setScore(score);
		}
		System.out.println("所有学生初始信息如下:");
		array[1].Print(array);
		System.out.println("----------------------------------");
		
		System.out.println("学号为201801学生信息如下:");
		array[1].Find(201801, array);
		System.out.println("----------------------------------");
		
		System.out.println("成绩最高和成绩最低的学生信息如下:");
		array[1].ScoreHigh(array);
		System.out.println("----------------------------------");
		
		System.out.println("成绩降序排列:");
		array[1].ScoreLow(array);
		System.out.println("----------------------------------");
		
		System.out.println("成绩升序排列:");
		array[1].ScoreLow(array);
		System.out.println("----------------------------------");
		
		System.out.println("所有学生年龄加一后信息如下:");
		array[1].Add(array);
		array[1].Print(array);
		System.out.println("----------------------------------");
		
		System.out.println("年龄大于20的学生名单:");
		array[1].Check(array);
		System.out.println("----------------------------------");
		
		/*  法二:直接在程序设置学生信息
		 * Student s1=new Student(20180001,"张三",19,87);
	     * Student s2=new Student(20180002,"李四",20,65);
		 * Student s3=new Student(20180003,"王五",21,99);
		 * Student[] array= {s1,s2,s3};
		 * System.out.println("所有学生初始信息如下:");
		 * s1.Print(array);
		 * System.out.println("----------------------------------");
		
		 * System.out.println("学号为201801学生信息如下:");
		 * s1.Find(201801, array);
		 * System.out.println("----------------------------------");
		
		 *  System.out.println("成绩最高和成绩最低的学生信息如下:");
		 *  s1.ScoreHigh(array);
		 *  System.out.println("----------------------------------");
		
		 *  System.out.println("成绩降序排列:");
		 *  s1.ScoreLow(array);
		 *  System.out.println("----------------------------------");
		
		 *  System.out.println("成绩升序排列:");
		 *  s1.ScoreLow(array);
		 *  System.out.println("----------------------------------");
		
		 *  System.out.println("所有学生年龄加一后信息如下:");
		 *  s1.Add(array);
		 *  s1.Print(array);
		 *  System.out.println("----------------------------------");
		
		 *  System.out.println("年龄大于20的学生名单:");
		 *  s1.Check(array);
		 *  System.out.println("----------------------------------");*/
	}
}

三、运行结果
在这里插入图片描述
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐