精华内容
下载资源
问答
  • 学生成绩排序系统

    2020-06-10 08:19:49
    System.out.println("排序后:"); for(Student student : list){ System.out.println(student); } Collections.sort(list, new Comparator(){ @Override public int compare(Student o1, Student ...
    package newstudent;
    
    public class Student implements Comparable<Student>{
    	private String code;
    	private String name;
    	private String subject;
    	private int grade;
    	public String getCode() {
    		return code;
    	}
    	public void setCode(String code) {
    		this.code = code;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getSubject() {
    		return subject;
    	}
    	public void setSubject(String subject) {
    		this.subject = subject;
    	}
    	public int getGrade() {
    		return grade;
    	}
    	public void setGrade(int grade) {
    		this.grade = grade;
    	}
    	public Student() {
    	}
    	public Student(String code, String name, String subject, int grade) {
    		super();
    		this.code = code;
    		this.name = name;
    		this.subject = subject;
    		this.grade = grade;
    	}
    	@Override
    	public String toString() {
    		return "Student [code=" + code + ", name=" + name + ", subject=" + subject + ", grade=" + grade + "]";
    	}
    	@Override
    	public int compareTo(Student o) {
    		int grade1 = this.grade;
    		int grade2 = o.getGrade();
    		int grade = 0;
    		if(grade1 > grade2){
    			grade = -1;
    		}else if(grade1 < grade2){
    			grade = 1;
    		}
    		return grade;
    	}
    	
    }
    
    package newstudent;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    public class FileOpreate {
    	public FileOpreate() {
    		Student s1 = new Student("1","x0","y",23);
    		Student s2 = new Student("2","x1","y",25);
    		Student s3 = new Student("3","x2","y",21);
    		Student s4 = new Student("4","x3","y",20);
    		Student s5 = new Student("5","x4","y",29);
    		List<Student> list = new ArrayList<Student>();
    		list.add(s1);
    		list.add(s2);		
    		list.add(s3);
    		list.add(s4);
    		list.add(s5);
    		try {
    			FileOutputStream fos = new FileOutputStream("123.txt");
    			ObjectOutputStream oos = new ObjectOutputStream(fos);
    			FileInputStream fis = new FileInputStream("123.txt");
    			ObjectInputStream ois = new ObjectInputStream(fis);
    			
    			oos.writeObject(list);
    			oos.writeBoolean(true);
    			oos.flush();
    			// 读对象信息
    			try {
    				List list1 = (List) ois.readObject();
    				System.out.println(list1);
    			} catch (ClassNotFoundException e) {
    				e.printStackTrace();
    			}
    			System.out.println(ois.readBoolean());//读取的顺序要和写入的顺序一致
    
    			fos.close();
    			oos.close();
    			fis.close();
    			ois.close();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    
    	}
    }
    
    
    package newstudent;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    public class Test {
    	public static void main(String[] args) {
    		Student s1 = new Student("1","x0","y",23);
    		Student s2 = new Student("2","x1","y",25);
    		Student s3 = new Student("3","x2","y",21);
    		Student s4 = new Student("4","x3","y",20);
    		Student s5 = new Student("5","x4","y",29);
    		List<Student> list = new ArrayList<Student>();
    		list.add(s1);
    		list.add(s2);		
    		list.add(s3);
    		list.add(s4);
    		list.add(s5);
    	
    	
    
    		Collections.sort(list);
    		System.out.println("排序后:");
    		for(Student student : list){
    			System.out.println(student);
    		}
    		Collections.sort(list, new Comparator<Student>(){
    
    			@Override
    			public int compare(Student o1, Student o2) {
    				int s1 = o1.getGrade();
    				int s2 = o2.getGrade();
    				return s2-s1;
    			}
    			
    		});
    		for(Student s : list) {
    			System.out.println(s);
    		}
    	}
    	
    } 
    
    
    
    展开全文
  • 1. 学生成绩排序系统简介 学生成绩排序系统可实现学生信息输入、学生信息输出、学生信息查询、学生成绩排序等功能。程序要求提供简单友好易于操作的界面。程序以C语言开发。 2.学生成绩管理系统基本要求: 假设有5名...
  • 80*86汇编语言学生成绩排序系统

    千次阅读 2018-12-10 10:55:11
     将SI和DI各减小10,指向名字的第一个位置,循环20次,将整个存储学生名字和成绩的单位全部依次交换。  SUB SI,10  SUB DI,10  MOV CX,20 LOOP_SORT_CHANGE:  MOV AL,NAME_GRADE_SAVE[BX][SI] ...

    五、实验结果及分析

    1、实验运行过程及分析

    (1)菜单:

    主要代码:

            在输出菜单之前首先使用清屏效果,以下为清屏效果的源代码:

    MOV AH,15

    INT 10H

    MOV AH,0

    INT 10H

                 之后调用宏指令输出菜单,并调用选择输入子程序:

    OUTPUT_AH_9 CATALOG_1  

    :

    :

    OUTPUT_AH_9 CATALOG_6

    CALL INPUT_CHOICE   ; 调用选择输入子程序

                 用BUTTON判断是否需要再次循环,比较BUTTON是否为1,如果输入ESC,则退出菜单循环结束程序,如果BUTTON为0,则循环输出菜单。

    CMP BUTTON,1

    JNE OUTPUT_CATALOG

     

    (2)输入功能:

    主要代码:

    通过循环判断NAME_BUF[SI+2]中的值是否为回车,若不是,则将该名字传送到用来存储数据的空间NAME_GRADE_SAVE中。

    LOOP_INPUT_NAME:

    MOV AL, NAME_BUF[SI+2]

    CMP AL,13

    JE INPUT_GRADE

    MOV NAME_GRADE_SAVE [DI][BX],AL

    INC SI

    INC BX

    LOOP LOOP_INPUT_NAME

    通过循环判断NAME_BUF[SI+2]中的值是否为回车,若不是,则将该成绩传送到用来存储数据的空间NAME_GRADE_SAVE中。

            LOOP_INPUT_GRADE:

                    MOV AL,GRADE_BUF[SI+2]

                    CMP AL,13

                    JE AGAIN

                    MOV NAME_GRADE_SAVE[DI][BX],AL

                    INC SI

                    INC BX

                    LOOP LOOP_INPUT_GRADE

                 最后输出一个值进行判断,若值为”y”,则循环到输入名字之前再次输入名字,若值为”n”,则退出该输入子程序。

             OUTPUT_AH_9 TIP_5

                      MOV AH,1

                      INT 21H

                      CMP AL,"y"

                      JE INPUT

                      CMP AL,"n"

                      JE INPUT_OUT

                      OUTPUT_AH_9 TIP_2

                JMP AGAIN

     

    (3)输出功能:

    主要代码:

        用2号功能依次循环输出名字,当判断下一个地址的值为’$’时停止输出;并在循环的同时使变量NAME _LONG的值自加1,以便之后输出空格。

          LOOP_OUTPUT_NAME:

                   MOV AL,NAME_GRADE_SAVE[DI][BX]

                   CMP AL,'$'

                   JE LOOP_OUTPUT_NAME_END

                   MOV DL,AL

                   MOV AH,2

                   INT 21H

                   INC BX

                   INC NAME_LONG

                   JMP LOOP_OUTPUT_NAME

     

              根据名字的长度确定应该输出多少个空格,并循环输出空格。

             MOV AL,14

                   SUB AL,NAME_LONG

                   PUSH CX

                   MOV CX,0

                   MOV CL,AL

                LOOP_KONGGE_1:

                   KONGGE

                   LOOP LOOP_KONGGE_1

     

              用2号功能依次循环输出成绩的值,当判断下一个地址的值为’$’时停止输出;并在循环的同时使变量GRADE_LONG的值自加1,以便之后输出空格。

              LOOP_OUTPUT_GRADE:

                   MOV AL,NAME_GRADE_SAVE[DI][BX]

                   INC GRADE_LONG

                   CMP AL,'$'

                   JE LOOP_OUTPUT_GRADE_END

                   MOV DL,AL

                   MOV AH,2

                   INT 21H

                   INC BX

                   JMP LOOP_OUTPUT_GRADE

     

    根据成绩的长度确定应该输出多少个空格,并循环输出空格。

    MOV AL,14

                   SUB AL,GRADE_LONG

                   PUSH CX

                   MOV CX,0

                   MOV CL,AL

                LOOP_KONGGE_2:

                   KONGGE

                   LOOP LOOP_KONGGE_2

     

              将变量MINGCI每次循环时自加1,并在输出完名字和成绩之后输出该变量作为名次。

             MOV DL, MINGCI

                   MOV AH,2

                   INT 21H

                   INC MINGCI

    (4)排序功能:

    主要代码:

    用循环求出每个成绩的长度,当执行到’$’时,停止循环。

             LOOP_SIZE:

                     INC GRADE_LONG

                     INC SI

                     CMP NAME_GRADE_SAVE[BX][SI],'$'

                      JNE LOOP_SIZE

     

        比较前一个成绩和后一个成绩,若前一个大于后一个,则跳转到交换结束(即不交换),若前一个小于后一个,则跳转到交换的程序。

             MOV AL,GRADE_LONG

                      CMP GRADE_MAX_LONG,AL

                      JA COMPARE_END

    JB SORT_SHORT_CHANGE

    若输入的两个数相等,则依次从高位到低位一个一个进行比较,若前者比后者小,则交换,若后者比前者小,则不交换,若相等,则继续循环。

    LOOP_COMPARE:

    MOV AL,NAME_GRADE_SAVE[BX][SI]

    CMP NAME_GRADE_SAVE[BX][DI],AL

    JA COMPARE_END

    JB SORT_CHANGE   ;前者比后者小,交换

    INC SI

    INC DI

    CMP NAME_GRADE_SAVE[BX][DI],'$'

    JNE LOOP_COMPARE

    JMP COMPARE_END

        将SI和DI各减小10,指向名字的第一个位置,循环20次,将整个存储学生名字和成绩的单位全部依次交换。

             SUB SI,10

                    SUB DI,10

                    MOV CX,20

    LOOP_SORT_CHANGE:

                    MOV AL,NAME_GRADE_SAVE[BX][SI]

                    XCHG AL,NAME_GRADE_SAVE[BX][DI]

                    XCHG AL,NAME_GRADE_SAVE[BX][SI]

                    INC SI

                    INC DI

                    LOOP LOOP_SORT_CHANGE

     

     2、运行结果

    图1:(菜单和输入效果)

     

    图2:(直接输出效果)

     

    图:3:(排序程序运行后结果)

     

    图4:(排序后输出结果)

     

    图5:(求最大值输出结果)

     

    展开全文
  • 输入学生姓名、学号、成绩,会按学生成绩高低排序并输出排名,使用结构体存储,可通过学生学号查找学生成绩并修改(也可以选择不修改),
  • 把 按成绩排序,和按姓名排序,封装了两个函数。 (排序都是,冒泡算法) 运用了 结构体 和结构体数组的知识。 源代码: #include &lt;stdio.h&gt; #include &lt;string.h&gt; #define N 3 //N...

    今天学习了结构体,为了强化和理解,参考大神的带码,自己改了一个。

    把 按成绩排序,和按姓名排序,封装了两个函数。

    (排序都是,冒泡算法)

    运用了 结构体 和结构体数组的知识。

    源代码:

    #include <stdio.h>
    #include <string.h>
    #define N 3   //N代表学生数 
    
    void Score_paixu(int Len);
    void Input_infomation(int Len);
    void Name_paixu(int Len);
    
    
    struct Student
    {
        char name[8]; //学生姓名
        char sid[10]; //学生学号
        char sex[4]; //性别
        int  score;   //成绩
    }tmp,stu[N];
    
    
    int main( )
    {  
        int Len=sizeof(stu)/sizeof(struct Student);
        Input_infomation(Len);
        puts("按姓名排序为:");
        Name_paixu(Len);
        puts("按成绩排序为:");
        Score_paixu(Len);
     return 0;
    }
    
    
    
    
    void Name_paixu(int Len)//按姓名排序
    {
    
        int i,j,len;
        len=Len;
        for(j=0; j<len-1; j++)
            for(i=0; i<len-j-1; i++)
                if (strcmp(stu[i].name,stu[i+1].name)>0) //调用strcmp函数,通过ASIC比较
                {
                    tmp=stu[i]; 
                    stu[i]=stu[i+1];
                    stu[i+1]=tmp;
                }
        for(i=0; i<len; i++)
        {
            printf("  %5s%5s%5s%4d\n",stu[i].name, stu[i].sid,stu[i].sex,stu[i].score);
        }
        return ;
    }
    
    void Score_paixu(int Len)//按成绩排序
    {
    
        int i,j,len;
        len=Len;
        for(j=0; j<len-1; j++)
            for(i=0; i<len-j-1; i++)
                if (stu[i].score<stu[i+1].score) 
                {
                    tmp=stu[i]; 
                    stu[i]=stu[i+1];
                    stu[i+1]=tmp;
                }
        for(i=0; i<len; i++)
        {
            printf("  %5s%5s%5s%4d\n",stu[i].name, stu[i].sid,stu[i].sex,stu[i].score);
        }
        return ;
    }
    
    void Input_infomation(int Len)//输入学生信息
    {
        int i=0;
        int num=Len;
        for(i=0; i<num; i++)
        {
    	printf("请输入姓名: \n ");    
       scanf("%s",stu[i].name);
    	printf("请输入学号: \n ");    
       scanf("%s", stu[i].sid);
    	printf("请输入性别: \n ");    
       scanf("%s",stu[i].sex);
    	printf("请输入成绩:  \n");    
       scanf("%d",&stu[i].score);
        }
    }
    
    

     

    效果:

    展开全文
  • 1.题目与要求1.1问题提出 设计学生成绩管理系统,有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统1.2本系统涉及的知识点 结构体数组、结构体指针、数组、...

    1.题目与要求

    1.1问题提出

    设计学生成绩管理系统,有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统

    1.2本系统涉及的知识点

    结构体数组、结构体指针、数组、循环、函数、分支、指针

    1.3 功能要求

    1、成绩录入:输入学生的学号、姓名及三门课的成绩;

    2、成绩查询:(至少一种查询方式)。按学号查询学生记录,或查询不及格学生的记录;

    3、成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;对学生单科成绩排序,输出学生姓名与该科成绩;

    4、退出系统:退出整个系统(即主菜单);

    1.4 根据所选菜单编写相应代码:

    1)输入学生的信息,利用循环赋值的方式,给结构体数组赋值。

    2)输出平均分函数ave:首先定义double型数组,利用循环赋值的方式,计算出三门课的成绩的平均值放入数组中,利用循环的方式,输出相关值及平均值。

    3)按学号查询成绩函数search:首先输入要查询的学号,与结构体中的学号进行比较,如果相等输出这个学生的信息,另外输出没有查到相关结果。

    4)按平均分排序后输出函数average:首先另外一个定义结构体数组、结构体指针变量,计算三门课程的平均值存到结构体成员aver中,利用循环的方式,进行平均分排序,输出相应的学生信息。

    5)对学生单科成绩排序后输出函数grade:首先另外一个定义结构体数组、结构体指针变量,通过选择k的值来选择按分数几排序,利用循环的方式,进行单科成绩排序(从大到小),输出学生姓名及该课的成绩。

    6)退出程序。

    551ea0f97726d2c3b8521c8bfa51c490.png

    2、附录:程序清单

    #include <stdio.h>

    #include<stdlib.h>

    typedef struct student

    {

    int num;

    char name[13];

    int score[3];

    double aver;

    }STU;

    void ave(STU s[],int n)

    { double a[1000];

    int i;

    for(i=0;i<n;i++)

    a[i]=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0;

    printf("学号t姓名tt分数1t分数2t分数3t平均分n");

    for(i=0;i<n;i++)

    printf("%dt%stt%dt%dt%dt%.1fn",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],a[i]);

    }

    void search(STU s[],int n, int a)

    {

    int i,k=0;

    for(i=0;i<n;i++)

    {

    if(s[i].num==a)

    { printf("学号t姓名t分数1t分数2t分数3tn");

    printf("%dt%st%dt%dt%dn",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2]);

    k=k+1;

    break;

    }

    }

    if(k==0)

    printf("t没有查询到相关信息");

    }

    void average(STU s[],int n)

    { int i,j;

    STU ss[10000];

    STU *p=ss;

    for(i=0;i<n;i++)

    s[i].aver=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0;

    for(i=0;i<n;i++)

    ss[i]=s[i];

    for(i=0;i<n-1;i++)

    {

    for(j=i+1;j<n;j++)

    {

    if(ss[i].aver<ss[j].aver)

    {

    STU temp=*(p+i);

    *(p+i)=*(p+j);

    *(p+j)=temp;

    }

    }

    }

    printf("学号t姓名t平均分n");

    for(i=0;i<n;i++)

    printf("%dt%st%.1fn",(p+i)->num,(p+i)->name,(p+i)->aver);

    }

    void grade(STU s[],int n)

    {int i,j,k;

    STU ss[10000];

    STU *p=ss;

    for(i=0;i<n;i++)

    ss[i]=s[i];

    printf("请输入k的值查询,k=0时按分数1,k=1时按分数2,k=2时按分数3:");

    scanf("%d",&k);

    for(i=0;i<n-1;i++)

    {

    for(j=i+1;j<n;j++)

    {

    if(ss[i].score[k]<ss[j].score[k])

    {

    STU temp=*(p+i);

    *(p+i)=*(p+j);

    *(p+j)=temp;

    }

    }

    }

    printf("姓名t分数n");

    for(i=0;i<n;i++)

    printf("%st%dn",(p+i)->name,(p+i)->score[k]);

    }

    main()

    { int N,i;

    STU s[10000];

    int num1;

    int menu;

    printf("请输入学生个数:");

    scanf("%d",&N);

    for(i=0;i<N;i++)

    {

    printf("请输入学号 姓名 分数1 分数2 分数3n");

    scanf("%d%s%d%d%d",&s[i].num,s[i].name,&s[i].score[0],&s[i].score[1],&s[i].score[2]);

    }

    printf("nn");

    printf("*************学生成绩管理系统*************nn");

    printf("1--------输出平均分n");

    printf("2--------按学号查询成绩n");

    printf("3--------按平均分排序后输出n");

    printf("4--------对学生单科成绩排序后输出n");

    printf("5--------退出程序n");

    printf("nn");

    while(1)

    {

    printf("n请输入菜单号:");

    scanf("%d",&menu);

    switch(menu)

    {

    case 1: ave(s,N);break;

    case 2: printf("请输入要查询的学号:");

    scanf("%d",&num1);

    search(s,N,num1);

    break;

    case 3: average(s,N);break;

    case 4: grade(s,N);break;

    case 5: exit(0);

    default:

    printf("菜单号输入错误n");

    break;

    }

    }

    }

    3、运行过程

    bf2afd80e9f40ed92cc442a593047e10.png

    98896e3f0a5118775fcbcc7c33a0f263.png

    c0d639ffcfe625620e626fcdd8f11647.png

    c2f0a5a0712c4957b138437eeabdbf9a.png

    509ad3fb4fafc809d92bea9348c0e1ee.png

    e6536f66f56f64950cafe326201e76c4.png
    展开全文
  • 学生成绩管理系统

    2017-06-23 19:40:55
    系统采用Eclipse开发的学生成绩管理系统,采用Mysql数据库,建表脚本在压缩文件中。主要功能有对学生成绩的增删查改,和成绩的批量导入和导出,成绩排序功能。
  • 直接上代码 #include &lt;stdio.h&gt; #include&lt;stdlib.h&...//定义一个二维数组,行表示学生号,列用来放三个科目第四列用来存放学生平均分 char choice='1'; void input(int a[][M],i...
  • PAGE PAGE # / 16 PAGE PAGE # I 16 C++学生成绩管理系统 要求用C++语言编写学生成绩管理系统...绩查找学生成绩修改学生成绩删除学生成绩学生成绩排序保存数据 到文件和读取文件中学生成绩的模块 学生成绩管理系统
  • C++学生成绩管理系统,包含增删改查,冒泡排序

    千次阅读 多人点赞 2020-02-26 18:57:11
    第一次博客,就写人生第一个系统吧–C++学生成绩管理系统.该系统是楼主(菜鸟)大一上学期简单学习C++两...学生成绩排名(冒泡排序) 各科情况分析(最高分、最低分以及平均分) 输出首页代码 void shouye() /*输出首页*/...
  • 学生成绩管理系统包括:增加学生信息 、显示学生信息、学生成绩排序 、删除学生信息、学生信息查找 、修改学生信息、学生成绩保存、学生成绩统计、系统安全退出
  • 学生成绩管理系统.cpp

    2020-02-26 18:50:33
    简单的C++学生成绩管理系统,包含学生成绩录入、学生增加以及成绩删改查,所有学生成绩用冒泡排序,各科情况简单分析
  • 学生成绩管理系统.rar

    2020-07-27 21:15:23
    简单的学生成绩管理系统实验源码,C语言实现(源码+报告)。vc++写的,功能包括1.输入学生信息2.修改学生信息3.删除学生信息4.增加学生信息5.按姓名查询6.按学号查询7.按总分排序8.按实验成绩排序9.按考试成绩排序10...
  • 运用JSP,Servlet等Web开发技术开发的一个学生成绩管理系统。1. 充分利用实验1的成果,利用JSP显示实验1的运行结果。即原来输出在控制台的结果改成用JSP显示。 2. 要求结合JSP和Servlet的特性实现相关功能。设计主页...
  • 学生成绩管理系统(C++),含有成绩录入、成绩浏览、成绩修改、成绩查询、成绩排序、成绩删除等功能
  • 组长张林 组员鲁雪彭著... 处理 判断用户名是否与密码匹配 需要对于成绩录入判断是否符合业务规则 对于符合规则的成绩计算总分并分出成 绩档次后按照总评进行排序;类图;关键问题及解决方案;导出数据;心得体会;谢谢观赏
  • 学生成绩管理系统(C语言)现已实现一次性录入多条学生信息 更改学生信息 按单科成绩排序 按总成绩排序 通过某一项来查询学生信息 通过密码登陆 以及删除学生信息和按照顺序插入学生信息
  • C语言详细学生成绩管理系统

    千次阅读 多人点赞 2019-03-28 16:15:13
    本学生管理系统是为教师人员提供管理班级成绩的工具,该系统可以实现的对学生的成绩进行增、删、改、查、信息保存和信息导入等基本功能,以及对学生成绩排序和分段的扩展功能,有利于对学生成绩管理。 1.2功能性需求...
  • java学生成绩查询系统

    2017-11-29 15:43:34
    java学生成绩查询系统,链接mysql,对学生数据进行排序,增删改查,以及关键字查找等功能
  • 期末作业要做一个学生成绩管理系统,就差一个成绩排序功能了,没有思路,请各位大佬指点一下 部分代码如下: package CPMS; public class student{ String name; double score ; //获得学生姓名 ...
  • C#成绩排序系统代码

    2011-06-21 19:54:17
    用于把学生成绩从小排大,这个只是一个小小的C#里面的程序,只是用于分享,没有其他的意思!!!
  • java课程设计—成绩排序系统

    千次阅读 2019-01-10 11:08:33
    设计一个学生成绩排名系统 实现以下功能: 1) 具备对成绩的管理功能(添加、删除、排序); 2) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等); 3) 具备按学号、姓名、或课程名查询成绩的功能; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,079
精华内容 431
关键字:

学生成绩排序系统