⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scoremenu.java

📁 用Java做的一个学生考试分析程序
💻 JAVA
字号:
/*
 * ScoreMenu.java
 *
 * Created on 2007年12月12日, 下午7:31
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package 考试成绩分析程序;
import java.io.*;
import java.util.Date;
/**
 *
 * @author drawen
 */
public class ScoreMenu implements java.io.Serializable{
    public static final String SCORE_MENU_FILE="testScoreFile.dat";
    public static final float MAX_SCORE=100;
    private Class classOfScoreMenu;
    private Course course;
    private int []testTime;//包括年,月,日,小时,分钟
    private int numberOfAttendTestStudent;
    private long idOfStudents[];
    private float scoreOfTest[];
    /** Creates a new instance of ScoreMenu */
    public ScoreMenu() {
        idOfStudents=new long[20];
        scoreOfTest=new float[20];
        numberOfAttendTestStudent=0;
        testTime=new int[5];
    }
    public ScoreMenu(Class classes,Course course,int []testTime,
            int num,long[]ids,float[]scores){
        setClassOfScoreMenu(classes);
        setCourse(course);
        setTestTime(testTime);
        this.numberOfAttendTestStudent=num;
        if(num!=0){
            this.idOfStudents=ids;
            this.scoreOfTest=scores;
        }
        else{
            this.idOfStudents=new long[20];
            this.scoreOfTest=new float[20];
            
        }
    }
    public void setClassOfScoreMenu(Class newClass){
        this.classOfScoreMenu=newClass;
    }
    public Class getClassOfScoreMenu(){
        return classOfScoreMenu;
    }
    public void setCourse(Course course){
        this.course=course;
    }
    public Course getCourse(){
        return course;
    }
    public void setTestTime(int []testTime){
        this.testTime=testTime;
    }
    public int[] getTestTime(){
        return testTime;
    }
    public int getNumberOfAttendTestStudent(){
        return numberOfAttendTestStudent;
    }
    public long[] getIdOfStudents(){
        return this.idOfStudents;
    }
    public float[] getScoreOfTest(){
        return this.scoreOfTest;
    }
    private int findIndexOfStudent(long id){
        for(int i=0;i<numberOfAttendTestStudent;i++){
            if(id==idOfStudents[i])
                return i;
        }
        return -1;
    }
    private int findIndexOfStudent(Student student){
        return findIndexOfStudent(student.getId());
    }
    private boolean isIdInClass(long id){
        Student []student=classOfScoreMenu.getStudents();
        for(int i=0;i<classOfScoreMenu.getStudentNumber();i++){
            if(student[i].getId()==id)
                return true;
        }
        return false;
    }
    public boolean setScoreOfTest(float score,long studentId){
        if(!isIdInClass(studentId))
            return false;
        if(numberOfAttendTestStudent>=scoreOfTest.length){
            float []temp=new float[scoreOfTest.length*2+1];
            for(int i=0;i<scoreOfTest.length;i++)
                temp[i]=scoreOfTest[i];
            scoreOfTest=temp;
        }
        int index=findIndexOfStudent(studentId);
        if(index==-1){
            scoreOfTest[numberOfAttendTestStudent]=score;
            idOfStudents[numberOfAttendTestStudent]=studentId;
            numberOfAttendTestStudent++;
        }
        else
            scoreOfTest[index]=score;
        return true;
    }
    public boolean setScoreOfTest(float score,Student student){
        return setScoreOfTest(score,student.getId());
    }
    public float getHighestScore(){
        int i=1;
        float high=scoreOfTest[0];
        for(;i<numberOfAttendTestStudent;i++){
            if(high<scoreOfTest[i])
                high=scoreOfTest[i];
        }
        return high;
    }
    public float getLowestScore(){
        int i=1;
        float low=scoreOfTest[0];
        for(;i<numberOfAttendTestStudent;i++){
            if(low>scoreOfTest[i])
                low=scoreOfTest[i];
        }
        return low;        
    }
    public float getAverageScore(){
        int i=0;
        float scores=0;
        for(;i<numberOfAttendTestStudent;i++)
            scores+=scoreOfTest[i];
        return scores/numberOfAttendTestStudent;
    }
    /**
     *返回0-59、60-69、70-79、80-89、90-100各个分数阶段的学生人数
     **/
    public int[] getAnasisOfScore(){
        int []array=new int[]{0,0,0,0,0};
        int i=0;
        float score;
        for(;i<numberOfAttendTestStudent;i++){
            score=scoreOfTest[i];
            if(score<60)
                array[0]++;
            else if(score<70)
                array[1]++;
            else if(score<80)
                array[2]++;
            else if(score<90)
                array[3]++;
            else
                array[4]++;
        }
        return array;
    }
    public boolean saveToFile(){
        MainWindow.initDataFile(SCORE_MENU_FILE);
        DataInputStream input;
        DataOutputStream output;  
        Class tempClass=new Class();
        Student student=new Student();
        Course course=new Course();
        int []testTime=new int[5];
        int numberOfAttendTestStudent;
        long idOfStudents[];
        float scoreOfTest[];      
        try{
            input=new DataInputStream(new FileInputStream(SCORE_MENU_FILE));
            while(input.available()>0){
                    tempClass.setGrade(input.readInt());
                tempClass.setMajor(input.readUTF());
                tempClass.setClassNumber(input.readInt());
                int studentNumber=input.readInt();
                tempClass.setStudentNumber(0);
                for(int i=0;i<studentNumber;i++){
                    student.setId(input.readLong());
                    student.setName(input.readUTF());
                }
                course.setId(input.readUTF());
                course.setName(input.readUTF());
                course.setCredit(input.readFloat());
                course.setPeriod(input.readInt());
                for(int i=0;i<5;i++)
                    testTime[i]=input.readInt();
                numberOfAttendTestStudent=input.readInt();
                idOfStudents=new long[numberOfAttendTestStudent];
                scoreOfTest=new float[numberOfAttendTestStudent];
                for(int i=0;i<numberOfAttendTestStudent;i++)
                    idOfStudents[i]=input.readLong();
                for(int i=0;i<numberOfAttendTestStudent;i++)
                    scoreOfTest[i]=input.readFloat();
                if((this.classOfScoreMenu.equals(tempClass))&&(this.course.equals(course))){
                    input.close();
                    return false;
                }            
            }
            input.close();
            output=new DataOutputStream(new FileOutputStream(SCORE_MENU_FILE,true));
            output.writeInt(this.classOfScoreMenu.getGrade());
            output.writeUTF(this.classOfScoreMenu.getMajor());
            output.writeInt(this.classOfScoreMenu.getClassNumber());
            int num=this.classOfScoreMenu.getStudentNumber();
            output.writeInt(num);
            Student []students=this.classOfScoreMenu.getStudents();
            for(int i=0;i<num;i++){
                output.writeLong(students[i].getId());
                output.writeUTF(students[i].getName());
            }
            output.writeUTF(this.course.getId());
            output.writeUTF(this.course.getName());
            output.writeFloat(this.course.getCredit());
            output.writeInt(this.course.getPeriod());
            for(int i=0;i<5;i++)
                output.writeInt(this.testTime[i]);
            output.writeInt(this.numberOfAttendTestStudent);
            for(int i=0;i<this.numberOfAttendTestStudent;i++)
                output.writeLong(this.idOfStudents[i]);
            for(int i=0;i<this.numberOfAttendTestStudent;i++)
                output.writeFloat(this.scoreOfTest[i]);
            output.close();
            return true;
        }catch(Exception e){
            return false;
        }        
    }        
    public static ScoreMenu queryFromFile(Class classes,Course courses){
        MainWindow.initDataFile(SCORE_MENU_FILE);
        DataInputStream input; 
        Class tempClass=new Class();
        Student student;
        Course course=new Course();
        int []testTime=new int[5];
        int numberOfAttendTestStudent;
        long idOfStudents[];
        float scoreOfTest[];      
        try{
            input=new DataInputStream(new FileInputStream(SCORE_MENU_FILE));
            while(input.available()>0){
                tempClass.setGrade(input.readInt());
                tempClass.setMajor(input.readUTF());
                tempClass.setClassNumber(input.readInt());
                int studentNumber=input.readInt();
                tempClass.setStudentNumber(0);
                for(int i=0;i<studentNumber;i++){
                    student=new Student();
                    student.setId(input.readLong());
                    student.setName(input.readUTF());
                    tempClass.addStudent(student);
                }
                course.setId(input.readUTF());
                course.setName(input.readUTF());
                course.setCredit(input.readFloat());
                course.setPeriod(input.readInt());
                for(int i=0;i<5;i++)
                    testTime[i]=input.readInt();
                numberOfAttendTestStudent=input.readInt();
                idOfStudents=new long[numberOfAttendTestStudent];
                scoreOfTest=new float[numberOfAttendTestStudent];
                for(int i=0;i<numberOfAttendTestStudent;i++)
                    idOfStudents[i]=input.readLong();
                for(int i=0;i<numberOfAttendTestStudent;i++)
                    scoreOfTest[i]=input.readFloat();
                if((classes.equals(tempClass))&&(courses.equals(course))){
                    input.close();
                    return new ScoreMenu(tempClass,course,testTime,numberOfAttendTestStudent,
                            idOfStudents,scoreOfTest);
                }            
            }
            input.close();
            return null;
        }catch(Exception e){
            return null;
        }        
    }        
    public static ScoreMenu[] loadFile(){
        MainWindow.initDataFile(SCORE_MENU_FILE);
        DataInputStream input;
        Course course;
        Class tempClass;
        Student student;
        int[] testTime;
        long[] id;
        float[] score;
        ScoreMenu[] scoreMenu=new ScoreMenu[20];
        int count=0;
        try{
            input=new DataInputStream(new FileInputStream(SCORE_MENU_FILE));
            while(input.available()>0){
                if(count>=scoreMenu.length){
                    ScoreMenu[] temp=new ScoreMenu[scoreMenu.length*2];
                    for(int i=0;i<scoreMenu.length;i++)
                        temp[i]=scoreMenu[i];
                    scoreMenu=temp;
                }                
                tempClass=new Class();
                tempClass.setGrade(input.readInt());
                tempClass.setMajor(input.readUTF());
                tempClass.setClassNumber(input.readInt());
                tempClass.setStudentNumber(0);
                int num=input.readInt();
                for(int i=0;i<num;i++){
                    student=new Student();
                    student.setId(input.readLong());
                    student.setName(input.readUTF());
                    tempClass.addStudent(student);
                }
                course=new Course();
                course.setId(input.readUTF());
                course.setName(input.readUTF());
                course.setCredit(input.readFloat());
                course.setPeriod(input.readInt());
                testTime=new int[5];
                for(int i=0;i<5;i++)
                    testTime[i]=input.readInt();
                num=input.readInt();
                id=new long[num];
                score=new float[num];
                for(int i=0;i<num;i++)
                    id[i]=input.readLong();
                for(int i=0;i<num;i++)
                    score[i]=input.readFloat();
                scoreMenu[count]=new ScoreMenu(tempClass,course,testTime,num,id,score);
                count++;
            }
            input.close();
            return scoreMenu;
        }catch(Exception e){
            return null;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -