20145303 实验一 Java开发环境的熟悉(Linux + Eclipse)

20145303 实验一 Java开发环境的熟悉(Linux + Eclipse)

实验题目(4):实现学生成绩管理功能,并进行测试

思路:

对于实现学生成绩管理(student performance management system)功能,我的理解是在获取到学生成绩以后,对学生进行排名并打印。
通过利用Scanner获取控制台输入的学生姓名、人数、成绩,课程名字、数目等,然后计算总分、平均分,得到学生名次,最后输出数据。

代码及注释:

import java.util.Scanner;
public class SPMS {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);            			//创建一个Scanner,等待输入内容
		
		System.out.println("请输入学生的人数:");
		int number=0;
		number=input.nextInt();            			                //获取学生人数
		
		System.out.println("请输入课程的数目:");
		int courses=0;
		courses=input.nextInt();									//获取课程数目
		
		String [] coursesname=new String[courses];					//课程的名字(字符串)
		for(int i=0;i<coursesname.length;i++){
			System.out.println("请输入第"+(i+1)+"门课的名字:");
			coursesname[i]=input.next();							//获取课程名字
		}
		
		String [] name=new String[number];							//学生的名字
		int [][] score=new int[number][courses];					//学生的科目成绩(二维数组)
		for(int i=0;i<name.length;i++){
			System.out.println("请输入第"+(i+1)+"个学生的名字:");
			name[i]=input.next();									//获取学生名字
			for(int j=0;j<coursesname.length;j++){
				System.out.println("请输入"+name[i]+coursesname[j]+"的成绩:");
				score[i][j]=input.nextInt();						//获取第(i+1)学生第j科目成绩
			}
		}
		int sum=0;													//每个学生的成绩总分
		int [] scoreSum=new int [number];
		int [] ci=new int[number];									//学生的名次
		for(int i=0;i<number;i++){
			for(int j=0;j<courses;j++){
				sum+=score[i][j];
			}
			scoreSum[i]=sum;
			ci[i]=sum;
			sum=0;
		}
		
		for(int i=0;i<number-1;i++){
			for(int j=i+1;j<number;j++){
				if(ci[i]<ci[j]){
					int temp=ci[j];
					ci[j]=ci[i];
					ci[i]=temp;
				}
					
			}
		}														//根据总分对名次排序
		
		
		System.out.print("学生\t");
		for(int i=0;i<courses;i++){
			System.out.print(coursesname[i]+"\t");
		}
		System.out.print("总分\t");
		System.out.print("平均分\t");
		System.out.print("排行榜");
		System.out.print("\n");
		
		int[]  temp=new int[number];
		for(int i=0;i<temp.length;i++){
			for(int j=0;j<scoreSum.length;j++){
				if(ci[i]==scoreSum[j]){
					temp[i]=j;
				}
			}
		}														//根据名次打印学生名字
		
		for(int i=0;i<number;i++){
			System.out.print(name[temp[i]]+"\t");				//学生名字打印
			for(int j=0;j<courses;j++){
				System.out.print(score[temp[i]][j]+"\t");
			}													//分数打印
			
			System.out.print(scoreSum[temp[i]]+"\t");			//总分
			System.out.print((scoreSum[temp[i]]/courses)+"\t"); //平均分
			System.out.print("第"+(i+1)+"名");				  //名次排行
			System.out.print("\n");
		}
	}
}

测试结果:

难点及自己的理解:

在这次实验中,遇到的最大问题在获取控制台输入的时候。
解决的时候可以通过new Scanner(System.in)创建一个Scanner,调用nextInt()方法调用获取输入的内容。相比于其他的API方法,要容易得多。
在遇到题目时,首先要对自己预期实现的目的做一个设想,根据这个设想思考如何实现的方法,在最后敲代码就要简单得多。

PSP

步骤 耗时 百分比
需求分析 30min 30
设计 20min 20
代码实现 20min 20
测试 10min 10
分析总结 20min 20
posted @ 2016-04-10 23:49  20145303刘俊谦  阅读(157)  评论(1编辑  收藏  举报