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

时间:2023-12-12 14:00:56

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");
}
}
}

测试结果:

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

难点及自己的理解:

在这次实验中,遇到的最大问题在获取控制台输入的时候。

解决的时候可以通过new Scanner(System.in)创建一个Scanner,调用nextInt()方法调用获取输入的内容。相比于其他的API方法,要容易得多。

在遇到题目时,首先要对自己预期实现的目的做一个设想,根据这个设想思考如何实现的方法,在最后敲代码就要简单得多。

PSP

步骤 耗时 百分比
需求分析 30min 30
设计 20min 20
代码实现 20min 20
测试 10min 10
分析总结 20min 20