Java实训项目——学生信息管理系统

img


")

img

img

对输入的学生信息按照数学成绩、Java成绩、英语成绩分别进行升序和降序。

建议你把学生信息封装成一个类,直接用基本类型数组在排序的时候比较麻烦。(比如按成绩排序时,同时需要调整姓名数组等)
下面是一个例子,没有写成菜单的样式,你根据需要改一下即可:
Student类,保存学生信息,可以根据需要增删成员:

public class Student {
    public String name; //学生姓名
    public int id; //学号
    public int math; //数学成绩
    public int java; //java成绩
    public int eng; //英语成绩
    
    public void show(){
        System.out.print("学号:"+ id);
        System.out.print(" 姓名:"+name);
        System.out.print(" 数学成绩:"+ math);
        System.out.print(" JAVA成绩:"+java);
        System.out.print(" 英语成绩:"+eng);
        System.out.println();
    }
}


主程序代码(只写了录入和排序的方法,也没有做成菜单,根据你的需要调整一下即可):


import java.util.Scanner;

public class Test {
    
    public static Scanner sc = new Scanner(System.in);    
    //录入数据
    public static int input(Student[] stu,int nmb){
        boolean flag = true;
        
        while(flag){
            stu[nmb] = new Student();
            System.out.print("请输入学号:");
            stu[nmb].id = sc.nextInt();
            System.out.print("请输入姓名:");
            stu[nmb].name = sc.next();
            System.out.print("请输入数学成绩:");
            stu[nmb].math = sc.nextInt(); //这里按照整数来输入,如果是浮点数,需要修改Student类中的数据类型
            System.out.print("请输入JAVA成绩:");
            stu[nmb].java = sc.nextInt(); //这里按照整数来输入,如果是浮点数,需要修改Student类中的数据类型
            System.out.print("请输入英语成绩:");
            stu[nmb].eng = sc.nextInt(); //这里按照整数来输入,如果是浮点数,需要修改Student类中的数据类型
            nmb += 1;
            boolean out = true;
            while(out){
                System.out.print("是否继续输入(Y/N):");
                String s = sc.next();
                if(s.charAt(0)=='y' || s.charAt(0)=='Y'){
                    out = false;
                }else if(s.charAt(0)=='n' || s.charAt(0)=='N'){
                    flag = false;
                    out = false;
                }
            }
            
        }
        return nmb;
    }
    //排序,如果sx大于0,表示升序,否则表示降序排列,flag=1表示按照数学成绩排序,=2表示按java成绩,=3表示按英语排序
    public static void sort(Student[] stu,int nmb,int flag,int sx){
        int i,j;
        Student tmp;
        for(i=0;i<nmb-1;i++){
            for(j=0;j<nmb-1-i;j++){
                if(sx>0){//升序
                    if( (flag == 1 && stu[j].math > stu[j+1].math) || 
                            (flag==2 && stu[j].java > stu[j+1].java ) || 
                            (flag==3 && stu[j].eng > stu[j+1].eng ) ){
                        tmp = stu[j];
                        stu[j] = stu[j+1];
                        stu[j+1]= tmp;
                    }
                }else{//降序
                    if( (flag == 1 && stu[j].math < stu[j+1].math) || 
                            (flag==2 && stu[j].java < stu[j+1].java ) || 
                            (flag==3 && stu[j].eng < stu[j+1].eng ) ){
                        tmp = stu[j];
                        stu[j] = stu[j+1];
                        stu[j+1]= tmp;
                    }
                }
            }
        }
        
        //排序后输出
        for(i=0;i<nmb;i++)
            stu[i].show();
        
    }
    
    

    public static void main(String[] args) {
        Student[] stu = new Student[100]; //保存学生信息
        int nmb = 0; //实际的学生数量
        
        //输入数据
        nmb=input(stu,nmb);
        //按数学成绩升序排序
        sort(stu,nmb,1,1);
        //按数学成绩降序排序
        sort(stu,nmb,1,0);
        
        //按JAVA成绩升序排序
        sort(stu,nmb,2,1);
        //按JAVA成绩降序排序
        sort(stu,nmb,2,0);
        
        //按英语成绩升序排序
        sort(stu,nmb,3,1);
        //按英语成绩降序排序
        sort(stu,nmb,3,0);

    }

}

问题是啥,直接给代码?

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632