package jiangqh.exam.entity;
import java.util.*;
public class Student implements Comparable {
private String name;
private Paper paper;
private AnswerSheet as;
private float mark; //辅助的成员变量,保存总分
public AnswerSheet getAs() {
return as;
}
public String getName() {
return name;
}
public Paper getPaper() {
return paper;
}
public void setAs(AnswerSheet as) {
this.as = as;
}
public void setName(String name) {
this.name = name;
}
public void setPaper(Paper paper) {
this.paper = paper;
}
public int compareTo(Object o) {
Student s=(Student)o;
if(this.mark > s.mark) return -1;
if(this.mark < s.mark) return 1;
else return this.name.compareTo(s.name);
}
@Override
public int hashCode() {
return this.name.hashCode();
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null)
return false;
if (getClass() != o.getClass())
return false;
Student s=(Student)o;
return this.name.equals(s.name);
}
public void initMark(){
float count=0;
Map<String , String> stuAnswers = as.getAnswers(); //得到答卷的MAP集合
Map<String , Question> questions = paper.getQuestions();
Set<String> qids = stuAnswers.keySet();
Iterator<String> it=qids.iterator();
while(it.hasNext()){
String qid=it.next();
String stuAnswer = stuAnswers.get(qid);
String rightAnswer = questions.get(qid).getRightAnswer();
if(stuAnswer.equals(rightAnswer)){
count++;
}
}
this.mark=(count/qids.size())*100;
}
@Override
public String toString() {
return this.name+" "+this.mark;
}
}
package jiangqh.exam.TestExam;
import jiangqh.exam.entity.AnswerSheet;
import jiangqh.exam.entity.Exam;
import jiangqh.exam.entity.Paper;
import jiangqh.exam.entity.Question;
import jiangqh.exam.entity.Student;
public class TestExam {
/**
* @param 比较经典的集合练习项目
*/
public static void main(String[] args) {
Question q1= new Question();
q1.setQid("1");
q1.setRightAnswer("A");
Question q2= new Question();
q2.setQid("2");
q2.setRightAnswer("B");
Question q3= new Question();
q3.setQid("3");
q3.setRightAnswer("C");
Question q4= new Question();
q4.setQid("4");
q4.setRightAnswer("D");
Paper paper= new Paper();
paper.getQuestions().put("1", q1);
paper.getQuestions().put("2", q2);
paper.getQuestions().put("3", q3);
paper.getQuestions().put("4", q4);
AnswerSheet as1 = new AnswerSheet();
as1.getAnswers().put("1", "A");
as1.getAnswers().put("2", "A");
as1.getAnswers().put("3", "A");
as1.getAnswers().put("4", "A");
AnswerSheet as2 = new AnswerSheet();
as2.getAnswers().put("1", "A");
as2.getAnswers().put("2", "B");
as2.getAnswers().put("3", "C");
as2.getAnswers().put("4", "D");
AnswerSheet as3 = new AnswerSheet();
as3.getAnswers().put("1", "A");
as3.getAnswers().put("2", "B");
as3.getAnswers().put("3", "C");
as3.getAnswers().put("4", "D");
AnswerSheet as4 = new AnswerSheet();
as4.getAnswers().put("1", "A");
as4.getAnswers().put("2", "B");
as4.getAnswers().put("3", "C");
as4.getAnswers().put("4", "A");
Student s1=new Student();
s1.setName("liu1");
s1.setPaper(paper);
s1.setAs(as1);
Student s2=new Student();
s2.setName("liu2");
s2.setPaper(paper);
s2.setAs(as2);
Student s3=new Student();
s3.setName("liu3");
s3.setPaper(paper);
s3.setAs(as3);
Student s4=new Student();
s4.setName("liu4");
s4.setPaper(paper);
s4.setAs(as4);
Exam exam = new Exam();
exam.setPaper(paper);
exam.getStus().add(s1);
exam.getStus().add(s2);
exam.getStus().add(s3);
exam.getStus().add(s4);
exam.judge();
}
}