考试自动收集评判系统的JAVA语言
时间: 2023-06-01 18:03:16 浏览: 51
以下是一个考试自动收集评判系统的JAVA代码示例:
import java.util.Scanner;
public class ExamGradingSystem {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 获取考试题目数量
System.out.print("请输入考试题目数量:");
int numQuestions = input.nextInt();
// 获取学生人数
System.out.print("请输入学生人数:");
int numStudents = input.nextInt();
// 定义答案数组
char[] answerKey = new char[numQuestions];
// 获取答案
for (int i = 0; i < numQuestions; i++) {
System.out.print("请输入第" + (i + 1) + "题的答案:");
answerKey[i] = input.next().charAt(0);
}
// 定义学生成绩数组
double[][] scores = new double[numStudents][numQuestions];
// 获取学生成绩
for (int i = 0; i < numStudents; i++) {
System.out.print("请输入第" + (i + 1) + "个学生的成绩:");
for (int j = 0; j < numQuestions; j++) {
System.out.print("请输入第" + (j + 1) + "题的得分:");
scores[i][j] = input.nextDouble();
}
}
// 计算学生总分和平均分
double[] totalScores = new double[numStudents];
double[] averageScores = new double[numStudents];
for (int i = 0; i < numStudents; i++) {
for (int j = 0; j < numQuestions; j++) {
totalScores[i] += scores[i][j];
}
averageScores[i] = totalScores[i] / numQuestions;
}
// 输出学生成绩
System.out.println("学生\t总分\t平均分");
for (int i = 0; i < numStudents; i++) {
System.out.print((i + 1) + "\t" + totalScores[i] + "\t" + averageScores[i] + "\n");
}
// 计算题目平均分和难度系数
double[] questionAverage = new double[numQuestions];
double[] questionDifficulty = new double[numQuestions];
for (int i = 0; i < numQuestions; i++) {
for (int j = 0; j < numStudents; j++) {
questionAverage[i] += scores[j][i];
}
questionAverage[i] /= numStudents;
questionDifficulty[i] = 1.0 - questionAverage[i] / (numQuestions * 1.0);
}
// 输出题目平均分和难度系数
System.out.println("题目\t平均分\t难度系数");
for (int i = 0; i < numQuestions; i++) {
System.out.print((i + 1) + "\t" + questionAverage[i] + "\t" + questionDifficulty[i] + "\n");
}
// 计算学生得分率和区分度
double[] studentScoreRates = new double[numStudents];
double[] itemDiscriminations = new double[numQuestions];
for (int i = 0; i < numStudents; i++) {
double correctCount = 0;
for (int j = 0; j < numQuestions; j++) {
if (scores[i][j] == answerKey[j]) {
correctCount++;
}
}
studentScoreRates[i] = correctCount / numQuestions;
}
for (int i = 0; i < numQuestions; i++) {
double highGroup = 0;
double lowGroup = 0;
double highCount = 0;
double lowCount = 0;
for (int j = 0; j < numStudents; j++) {
if (scores[j][i] == answerKey[i]) {
highGroup += studentScoreRates[j];
highCount++;
} else {
lowGroup += studentScoreRates[j];
lowCount++;
}
}
highGroup /= highCount;
lowGroup /= lowCount;
itemDiscriminations[i] = highGroup - lowGroup;
}
// 输出学生得分率和区分度
System.out.println("学生\t得分率");
for (int i = 0; i < numStudents; i++) {
System.out.print((i + 1) + "\t" + studentScoreRates[i] + "\n");
}
System.out.println("题目\t区分度");
for (int i = 0; i < numQuestions; i++) {
System.out.print((i + 1) + "\t" + itemDiscriminations[i] + "\n");
}
}
}