Java综合实践——控制台版考试系统

设计一个控制台版的考试系统,包括出题、显示试卷、答卷、判卷等功能。
1.类的设计
考试系统中抽象出来的类包括以下几种。
(1)考生类(Student):提供考生的姓名。
(2)试题类(Question):试题包括题干title、选项options和答案answer。其中,选项使用集合List存储。

  • Question(String title,Listoptions,String answer):创建试题
  • void showQuestion():显示题目,包括题干和选项(供显示试卷时调用)。
  • String getAnswer():返回试题答案(判卷时调用)。

(3)试卷类(Paper):试卷包括题目数量count和题目信息questions。其中,题目信息使用集合Map<Integer,Question>存储,建立题号和题目之间的映像关系。

  • Paper(int count):按count的数量生成试题,将题目按编号存储在Map中。
  • void addQuestion(int index):输入题干、选项、答案,向试卷中加一道试题,index为试题的序号。
  • void showPaper():显示试卷,包括所有题目的题号、题目和选项。
  • Map<Integer,Question>getQuestions():返回试卷中所有的题目(判卷时使用)。
  • int getCount():返回试卷中所有题目(判卷时使用)。

(4)答题卡类(AnswerSheet):答题卡包括用户答题的答案answers,与题目的存储相对应,答案采用Map<Integer,String>存储,建立题号和答案之间的映像关系。

  • addAnswer(int key,String answer):将指定题目的答案存储在Map中(答题时使用)。
  • Map<Integer,String>getAnswers():返回用户的答案(判卷时使用)。

(5)考试类(Exam):考试类组合了学生、试卷和答题卡。

  • private void createPaper():创建试卷。
  • private void answerQuestions():答题,将答案存储至答题卡。
  • private void showScoreOfPaper():判卷,取出试卷中题号和答案,与答题纸中的进行比较,显示评分结果。
  • private void exam():组织考试,调用上面的3个私有方法,此方法对外公开。

2.实现代码
(1)Student.java

package example8_10;
//学生类
public class Student {
   
	private String name;
	public Student() {
   
	}
	public Student(String name) {
   
		this.name=name;
	}
	public String getName() {
   
		return name;
	}
	public void setName(String name) {
   
		this.name=name;
	}
}

(2)Question.java

package example8_10;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
//试题类
public class Question {
   
	private String title;//题干
	private List<String> options;//选项,使用集合List存储
	private String answer;//答案
	public Question() {
   
		options=new ArrayList<String>();
	}
	public Question(String title,List<String>options,String answer) {
   //创建试题
		this.title=title;
		this.options=options;
		this.answer=answer;
	}
	public void showQuestion() {
   //显示一个题目,包括题干和选项(供显示试卷时调用)
		System.out.println("题目:"+title);//输出题干
		//输出各选项
		Iterator<String> it=options.iterator();
		while(it.hasNext()) {
   
			System.out.println(it.next(
  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值