一只快乐小 2022-02-28 15:52 采纳率: 100%
浏览 72
已结题

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

img


")

img

img

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

  • 写回答

3条回答 默认 最新

  • 关注

    建议你把学生信息封装成一个类,直接用基本类型数组在排序的时候比较麻烦。(比如按成绩排序时,同时需要调整姓名数组等)
    下面是一个例子,没有写成菜单的样式,你根据需要改一下即可:
    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);
    
        }
    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月9日
  • 已采纳回答 3月1日
  • 修改了问题 2月28日
  • 修改了问题 2月28日
  • 展开全部

悬赏问题

  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题