最终代码如下:
package kaoshi;
import java.util.*;
public class Machine{
//记录学生账号和密码;
private HashMap userB=new HashMap();
{
userB.put("admin","123");
userB.put("lisi","456");
userB.put("张三","oab");
}
private HashSet qb=new HashSet();
{
qb.add(new Question("以下选项哪个不是java基本数据类型?\n A.String\tB.char\tC.int\tD.double","A"));
qb.add(new Question("以下选项哪个是java基本数据类型?\n A.Int\tB.Math\tC.Random\tD.Date","A"));
qb.add(new Question("在java中负责对字节代码解释执行的是?\n A.String\tB.虚拟机\tC.int\tD.double","B"));
qb.add(new Question("一个栈的输入序列为1 2 3 4 5,则下列中不可能是栈的输出序列是?\n A.String\tB.char\tC.int\tD.54132","D"));
qb.add(new Question("对象的特征在类中表示为变量,成为类的?\n A.String\tB.char\tC.属性\tD.double","C"));
qb.add(new Question("表达式(11+3*8)/4%3的值是?\n A.String\tB.0\tC.2\tD.double","C"));
qb.add(new Question("表达式不可以作为循环条件的是?\n A.i++\tB.i>5\tC.i==2\tD.double","A"));
qb.add(new Question("以下哪个不是合法的标识符?\n A.STRING\tB.X3\tC.DE$f\tD.void","D"));
qb.add(new Question("下列说法正确的是?\n A. JAVA程序的main方法必须写在类里面\tB.X3\tC.DE$f\tD.void","A"));
/*
Iterator it=qb.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
*/
}//利用块初始化HashSet集合内的题目对象;
public HashMap getUserB(){
return userB;
}
public ArrayList getPaper(){
HashSet paper=new HashSet();//试卷
Random rd=new Random();
ArrayList qbb=new ArrayList(this.qb);
while(paper.size()!=5){//试卷的题目数量;
int value=rd.nextInt(qb.size());
paper.add(qbb.get(value));
//System.out.println(paper.size()+" "+value);
}
return new ArrayList(paper);
}
public boolean login(String name,String password){
String realps=this.getUserB().get(name);
if(realps!=null && realps.equals(password)){
return true;
}
return false;
/*
Set names=this.getUserB().keySet();//获取用户名集合;
Iterator it=names.iterator();
boolean rs=false;
while(it.hasNext()){
String ii=it.next();
//System.out.println(ii);
if(name.equals(ii)){
if(password.equals(this.getUserB().get(name))){
rs=true;
}
break;
}
}
return rs;
*/
}
}
package kaoshi;
public class Question{
private String title;//题干
private String answer;//真实答案;
public Question(String title,String answer){
this.title=title;
this.answer=answer;
}
public String getTitle(){
return title;
}
public String getAnswer(){
return answer;
}
//重写方法 比较题干
public boolean equals(Object obj){
if(this==obj){
return true;
}
if(obj instanceof Question){
Question anotherQ=(Question)obj;
if(this.title.equals(anotherQ.title)){
return true;
}
}
return false;
}
public int hashCode(){
return this.title.hashCode();
}
}
package kaoshi;
import java.util.*;
public class Student{
private String username;
private String password;
public Student(String username,String password){
this.username=username;
this.password=password;
}
public String[] exam(ArrayList paper){
String[] answers=new String[paper.size()];
Scanner input=new Scanner(System.in);
for(int i=0;i
Question qs=paper.get(i);//题干+答案
//System.out.println(qs);
System.out.println((i+1)+"."+qs.getTitle());
System.out.println("请您开始答题,A B C D");
answers[i]=input.nextLine();
}
return answers;
}
public String getUsername(){
return username;
}
public String getPassword(){
return password;
}
}
package kaoshi;
import java.util.*;
public class Teacher{
public int piJuan(ArrayList a,String[] answer){//试卷(含答案),学生的答案
int total=0;
for(int i=0;i
if(a.get(i).getAnswer().equalsIgnoreCase(answer[i])){//不区分大小写
System.out.println("第"+(i+1)+"题回答正确!");
total+=(100/a.size());
}
}
return total;
}
}
package kaoshi;
import java.util.*;
public class TestMain{
public static void main(String[] args){
/*
String question="1.如何哪个选项不是java基本数据类型?\n A.String\tB.char\tC.int\tD.double";
System.out.println(question);
String answer="A";
//如何将题目和答案放一起
//String[],String,HashMap,Array,对象
Question q=new Question("1.如何哪个选项不是java基本数据类型?\n A.String\tB.char\tC.int\tD.double","A");
//Question q=new Question("1.如何哪个选项不是java基本数据类型?\n A.String\tB.char\tC.int\tD.double","A");
System.out.println(q.getTitle());
System.out.println(q.getAnswer());
*/
Machine m=new Machine();
Scanner input=new Scanner(System.in);//输入
System.out.println("欢迎进入考试系统");
System.out.println("请输入用户名:");
String name=input.nextLine();
System.out.println("请输入密码:");
String ps=input.nextLine();
Student s=new Student(name,ps);//学生
if(m.login(s.getUsername(),s.getPassword())){
System.out.println("登录成功!\n"+s.getUsername()+":开始考试,请不要作弊!");
ArrayList t=m.getPaper();//试卷;
System.out.println("考试机正在随机的生成试卷,请耐心等待一会");
try{
Thread.sleep(5000);//睡5s
}catch(Exception e){
e.printStackTrace();
}
String[] sresult=s.exam(t);//学生答案
Teacher th=new Teacher();//老师
int result=th.piJuan(t,sresult);
System.out.println(s.getUsername()+"此次考试最终成绩:"+result+"分");
}else{
System.out.println("账号或密码错误!");
}
}
}