【学生成绩管理系统】
功能:
1.实现了手动输入学生人数以及课程科目
2.对输入的所有学生的各科成绩进行总分排名,并按成绩高低进行排序
用到的技术:
1.Scanner类用于接收输入的内容
2.定义的一维数组用来保存输入的相同类型的内容,如学生的姓名、课程的名称等
3.定义的二维数组用来保存输入的学生各科的成绩
4.通过for来进行循环操作
5.用到了"\t"制表符
6.使用了冒泡排序进行成绩的排名
最终实现:
代码:
1 import java.util.*; 2 public class StudentAdminSystem { 3 public static void main(String[] args) { 4 5 Scanner in = new Scanner(System.in); 6 System.out.println("请输入学生人数:"); 7 int renshu = in.nextInt();//定义学生人数 8 System.out.println("请输入课程数目:"); 9 int kecheng = in.nextInt();//定义课程数目 10 String[]name=new String[renshu];//申明一个string的数组保存学生的姓名 11 String[]courcs=new String[kecheng];//申明一个string数组保存课程的名称 12 int[][]num=new int[renshu][kecheng];//用来保存各学生各学科成绩 13 int[]sum=new int[renshu];//和 14 int[]avg=new int[renshu];//平均数 15 String[]str=new String[renshu];//姓名+各科成绩+总分+平均分 16 17 /* 18 * 用来循环的保存课程的名称 19 */ 20 for (int i = 0; i < courcs.length; i++) { 21 System.out.println("请输入第"+(i+1)+"门课是什么:"); 22 courcs[i]=in.next(); 23 } 24 25 /* 26 * 用来录入学生的各科成绩 27 */ 28 int s=0; 29 for (int i = 0; i < renshu; i++) { 30 System.out.println("请输入第"+(i+1)+"个 学生 的名字: "); 31 name[i]=in.next();//用来保存学生的姓名 32 String str11=""; 33 for (int j = 0; j < kecheng; j++) { 34 System.out.println("请输入"+name[i]+courcs[j]+"的成绩:"); 35 num[i][j]=in.nextInt();//用来保存某个特定学生的特定成绩 36 s+=num[i][j]; 37 str11+=num[i][j]+"\t"; 38 } 39 sum[i]=s; 40 avg[i]=s/kecheng; 41 str[i]=name[i]+"\t"+str11+sum[i]+"\t"+avg[i];//姓名+各科成绩+总分+平均分 42 s=0; 43 } 44 for (int i = 0; i < sum.length-1; i++) { 45 for (int j = 0; j < sum.length-1; j++) { 46 if (sum[j]<sum[j+1]) { 47 int t1 = sum[j]; String t2 = str[j]; 48 sum[j]=sum[j+1]; str[j] = str[j+1]; 49 sum[j+1]=t1; str[j+1]=t2; 50 } 51 } 52 } 53 54 /* 55 * 效果输出 56 */ 57 System.out.print("学生"); 58 for (int i = 0; i < courcs.length; i++) { 59 System.out.print("\t"+courcs[i]); 60 } 61 System.out.print("\t总分\t平均分\t排行榜"); 62 System.out.println(); 63 64 for (int i = 0; i <renshu; i++) { 65 //System.out.print(name[i]); 66 //for (int j = 0; j <kecheng; j++) { 67 // System.out.print("\t"+num[i][j]); //输出对应的分数 68 //} 69 //System.out.print("\t"+sum[i]); //输出总分 70 //System.out.print("\t"+avg[i]); //输出平均分 71 //System.out.println(); 72 System.out.println(str[i]+"\t"+"第"+(i+1)+"名"); 73 } 74 75 } 76 }
代码理解:
1. new Scanner(System.in),一直等待输入,直到用户输入完成后才执行下面的代码。
2. in.nextInt()这个方法是接受用户的输入, nextInt()是接受的int类型的数据,如next()接受的就是String类型的数据。
3.5-9行代码则表示了:定义了两个int型的数据用来保存用户输入的学生人数以及课程数目
。
4.通过声明两个一维数组String[]name=new String[renshu];// 数组长度为用户输入的人数
String[]courcs=new String[kecheng];//数组长度为用户输入的课程数目
来分别保存所有学生的姓名,以及所有课程的名称。
5.
for (int i = 0; i < courcs.length; i++) { System.out.println("请输入第"+(i+1)+"门课是什么:"); courcs[i]=in.next(); }
通过使用for循环来循环的录入各科课程的名称,并用courcs[]数组保存起来。
6.
int[][]num=new int[renshu][kecheng];//用来保存各学生各学科成绩
int[]sum=new int[renshu];//和 int[]avg=new int[renshu];//平均数 String[]str=new String[renshu];//姓名+各科成绩+总分+平均分
for (int i = 0; i < renshu; i++) { System.out.println("请输入第"+(i+1)+"个 学生 的名字: "); name[i]=in.next();//用来保存学生的姓名 String str11=""; for (int j = 0; j < kecheng; j++) { System.out.println("请输入"+name[i]+courcs[j]+"的成绩:"); num[i][j]=in.nextInt();//用来保存某个特定学生的特定成绩 s+=num[i][j]; str11+=num[i][j]+"\t"; }
此处代码使用了双层for循环
第一层for循环用来录入学生的姓名,并在第二层for循环中录入学生各科的成绩
各科的成绩由二维数组num[][]来保存
一名学生的成绩总和则有s保存,for循环一次,s就加一次,直到课程成绩输完为止
s+=num[i][j]===》s=s+num[i][j]
这样S就是各科成绩的总和了,成绩计算总和后,要即使清零,否则影响下一位同学的成绩计算,s=0;
7.
int[]sum=new int[renshu];//和 int[]avg=new int[renshu];//平均数 String[]str=new String[renshu];//姓名+各科成绩+总分+平均分
sum[i]=s; avg[i]=s/kecheng; str[i]=name[i]+"\t"+str11+sum[i]+"\t"+avg[i];//姓名+各科成绩+总分+平均分 s=0;
将总分保存在sum[]这个数组里
str将学生的姓名,各科的成绩,学生的总分以及平均分保存在一个数组里。
8.
for (int i = 0; i < sum.length-1; i++) { for (int j = 0; j < sum.length-1; j++) { if (sum[j]<sum[j+1]) { int t1 = sum[j]; String t2 = str[j]; sum[j]=sum[j+1]; str[j] = str[j+1]; sum[j+1]=t1; str[j+1]=t2; } } }
此段代码就是排序算法中最简单的排序,冒泡排序。通过排序将分数高的排在前面,即形成了排名
实际上这一个排序算法却使总分以及 姓名+各科成绩+总分+平均分 这个字符串都进行了排名
9.
/* * 效果输出 */ System.out.print("学生"); for (int i = 0; i < courcs.length; i++) { System.out.print("\t"+courcs[i]); } System.out.print("\t总分\t平均分\t排行榜"); System.out.println(); for (int i = 0; i <renshu; i++) { //System.out.print(name[i]); //for (int j = 0; j <kecheng; j++) { // System.out.print("\t"+num[i][j]); //输出对应的分数 //} //System.out.print("\t"+sum[i]); //输出总分 //System.out.print("\t"+avg[i]); //输出平均分
//System.out.print("\t"+"第"+(i+1)+"名"); //输出名次
//System.out.println();
System.out.println(str[i]+"\t"+"第"+(i+1)+"名"); } }
此段代码为效果输出部分,代码内注释的部分==最后一段代码。
这是本博主第一次写技术性的博文,还有很多需要指正的地方,希望写的越来越好。
原文:http://www.cnblogs.com/wei136200954/p/3729038.html