查询学生成绩程序-java

分层结构图:

 

运行代码:
主类 Text.java
主类 Text.java: 
package gxnu.jb.view; 
//import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.RandomAccessFile; 
import java.util.Scanner;
import gxnu.jb.serviceimpl.StudentOperationlmpl; 
import gxnu.jb.vo.Course; 
import gxnu.jb.vo.Student; 
import gxnu.jb.vo.User; 
//import gxnu.jb.vo.text;

public class Test { 
    public static void main(String[] args) throws FileNotFoundException 
    { 
        // TODO Auto-generated method stub 
        String[] studentNames;//学生 5 名学生 
        double[][] studentScores;//每人每科成绩 
        String[] courseName;//课程名 假设有 n 门课程
        String[] courseId;//课程号 

        studentNames=new String[5]; 
        studentScores=new double[5][4]; 
        courseName=new String[4]; 
        courseId=new String[4]; 
        //从键盘输入数据到数组 
        Scanner sc = new Scanner(System.in); 
        System.out.println("请输入总课程号和对应的课程名:"); 
        /*例如: 
            * 课程号 课程名 
            * 1 高等数学 
            * 2 数据结构 
            * 3 算法设计 
            * 4 概率论与数理统计 
        */ 

        for(int i=0;i<courseId.length;i++) 
        { 
            courseId[i]=sc.next(); 
            courseName[i]=sc.next(); 
        }

        System.out.println("请输入学生姓名及每科成绩:"); 
        /*例如: 
            * 姓名 每科成绩 
            * liu 78,79,70,80 
            * li 89 80 86 88 
            * huang 67 88 99 90 
            * wang 66 89 90 87 
        */ 
        for(int i=0;i<studentNames.length;i++) 
        { 
            studentNames[i]=sc.next(); 
            for(int j=0;j<courseName.length;j++) 
            { 
                studentScores[i][j]=sc.nextInt(); 
            } 
        }
        
        Course[] course ; 
        course=new Course[courseName.length]; 
        Course courseSet=new Course(); 
        for(int i=0;i<courseName.length;i++) 
        {
        
            for(int j=0;j<studentNames.length;j++) 
            { 
                course[i]=new Course(courseId[i],courseName[i],studentScores[j][i]);                     
                courseSet.setScore(studentScores[j][i]); 
            } 
        }

        Student student; 
        student=new Student(); 
        for(int i=0;i<studentNames.length;i++) 
        { 
            student.setA(course); 
        }
        
        StudentOperationlmpl student1=new StudentOperationlmpl(); 
        // student1.getMaxCourse(student); 
        // student1.getAverage(student); 
        int index,couseIndex=0; 
        System.out.println("输入要查询的学生名字"); 
        String name=sc.next(); 
    
        for(int i=0;i<studentNames.length;i++) 
        {
             if(name.equals(studentNames[i])) 
                { 
                    index=i; 
                    for(int j=0;j<courseName.length;j++) 
                    { 
                        courseSet.setScore(studentScores[index][j]);         
                    }
        student1.getAverage(student); //最高成绩的分数为:             
        student1.getMaxCourse(student).getScore() 
        double maxCourse=student1.getMaxCourse(student).getScore(); 
        for(int k=0;k<courseName.length;k++) 
        { 
          if(maxCourse==studentScores[index][k]) { couseIndex=k; } 
        }
        System.out.println("学生"+studentNames[i]+"\n 的成绩平均分为:"+student1.getAverage(student)+"\n 最高科目是: "+course[couseIndex].getName()+"\n 最高科目的课程号为:
"+course[couseIndex].getId()+"\n 最高分数为:"+maxCourse); 
        } 
       } 
    } 
  }
2.Gxnu.jb.vo 包中的 Course.java
package gxnu.jb.vo; 
public class Course 
{ 
    //一个类中有属性就应该要私有化 
    private String id;//学号 
    private String name;//姓名 
    private Double score;//成绩 
    
    public Course() 
    {     
        super(); 
        // TODO Auto-generated constructor stub 
    }

    public Course(String id, String name, Double score) 
    { 
        super(); 
        this.id = id; 
        this.name = name; 
        this.score = score; 
    }

    public String getId() { return id; }

    public void setId(String id) { this.id = id; }

    public String getName() {return name; }

    public void setName(String name) { this.name = name; }

    public double getScore() { return score; }

    public void setScore(double score) { this.score = score; }
    @Override 
    public String toString() { 
    return "id=" + id + ", name=" + name + ", score=" + score; 
     }
}
3. Gxnu.jb.vo 包中的 Student.java
package gxnu.jb.vo; 
public class Student extends User { 
    private Course a[]; //一个学生有很多课 
    public Student() 
    { 
        super(); 
    }
    public Student(String id, String password) { 
    //原来的东西不要改变它(不要再往 student 的构造方法添加别的东西) 
        super(id, password); 
    }
    public Course[] getA() 
    { 
        return a; 
    }
    public void setA(Course[] a) 
    { 
        this.a = a; 
    }
/*@Override public String toString() { return super.toString(); }
*/
}
4. gxnu.jb.vo 包中的 User.java
package gxnu.jb.vo; 

public abstract class User { 
    private String id; 
    private String password; //方法重载 无参构造方法 
    public User() 
    { 
        super(); 
    }//有参构造方法 
    public User(String id, String password) 
    { 
        super(); 
        this.id = id; 
        this.password = password; 
    }//对属性进行读写操作 
    public String getId() 
    { 
        return id; 
    }
    public void setId(String id) 
    { 
        this.id = id; 
    }
    public String getPassword() 
    { 
        return password; 
    }
    public void setPassword(String password) 
    { 
        this.password = password; 
    }

    //to String 方法 @Override
    public String toString() { return "id=" + id + ", password=" + password ; }
    
}

    
5. gxnu.jb.serviceimpl 包中的 StudentOperationlmpl.java
package gxnu.jb.serviceimpl; 
import gxnu.jb.service.StudentOparation; 
import gxnu.jb.vo.Course; 
import gxnu.jb.vo.Student; 

public class StudentOperationlmpl implements StudentOparation 
{ @Override 
    public double getAverage(Student stu) 
    { 
        Course c[]=stu.getA(); 
        double sum=0; 
        double average=0; 
        int i; 
        for(i=0;i<c.length;i++) 
        {//学生人数 4 个分组 
            sum=sum+c[i].getScore(); 
        }
        average=sum/c.length; 
        
        return average; 
    }

@Override 
   public Course getMaxCourse(Student stu) 
    { 
        Course c[]=stu.getA();//课程数 
        double max=0; 
        int i,index = 0; 
        for(i=0;i<c.length;i++) 
        { 
            if(max<c[i].getScore()) 
            { 
                max=c[i].getScore(); 
                index=i; 
            } 
        }
        return c[index];
    }@Override 

    public String toString() 
    { 
        return "StudentOperationlmpl [getClass()=" + getClass() + ", hashCode()=" +         
        hashCode() + ", toString()=" + super.toString() + "]"; 
    } 
}
6. gxnu.jb.service 包中的 StudentOperation.java
package gxnu.jb.service; 
import gxnu.jb.vo.Course; 
import gxnu.jb.vo.Student; 
public interface StudentOparation 
{ 
    double getAverage(Student stu);//成绩平均值 
    Course getMaxCourse(Student stu);//最高成绩 
}
运行结果截图:

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值