首页 > 代码库 > 学生成绩管理系统

学生成绩管理系统

【学生成绩管理系统】

功能:

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

此段代码为效果输出部分,代码内注释的部分==最后一段代码。

 

这是本博主第一次写技术性的博文,还有很多需要指正的地方,希望写的越来越好。