基于C++的考试系统

10 篇文章 0 订阅
5 篇文章 0 订阅

一、需求分析

​ 设计一个简单的考试系统,可进行C++与Java的考试,考生姓名、考生学号、C++题目、Java题目、C++答案,Java答案分别存入…/txt文件数据/路径下的StudentsName、StudentsNum、QuestionC,QuestionJ、AnswerC、AnswerJtxt文件中,进入系统后输入学号验证并进入考试,系统将自动给选择题和填空题进行对错判断并给分,最后求出选择与填空题的考试总分并存入…/txt文件数据/Score.txt,而简答题与编程题则写入…/txt文件数据/路径下的shortAnswerC.txt/shortAnswerJ.txt与programmingC.txt /programming.txtJ文件供老师打分。

二、逻辑流程

图1:考试系统流程图

三、考试类设计

图2:考试系统类图

① 学生类Student

学生类包括学生姓名与学号,学号用于登录系统并认证身份,学生姓名则用于记录选择题与填空题分数以及简答编程的答案。方法包括InitStudent()初始化考生与Register()登录考试。

② 问题基类QandA

问题基类,属性包括问题,答案与对应的分数,而方法则包括:

  1. 虚函数InitQandA()用来初始化考题,答案以及分数,本系统只是模拟,故对于每道题初始默认为10分的分值,
  2. choice(),fillIn(),shortAnswer(),programming()等函数表示对于考题中的选择题,填空题等题型进行处理函数,其中shortAnswer(),programming()为虚函数。
  3. 虚函数Exam(),采用了模板方法模式,由于对于Java与C++考试时shortAnswer(),programming()函数有细微的差别,但算法大致的逻辑一样,故将某些步骤推迟到子类,有助于算法的扩展。

③ C++考试类QandAC

C++考试类,若选择C++考试则执行该类的方法

  1. InitQandA()用来初始化C++考题,答案以及分数,
  2. choice(),fillIn(),shortAnswer(),programming()等函数表示对于C++考题中的选择题,填空题等题型进行处理函数,并写入./txt文件数据/路径下的Score.txt、shortAnswerC.txt与programmingC.txt文件。
  3. Exam()将 choice(),fillIn(),shortAnswer(),programming()统一调用,完成C++考试,programming()在输入为“end”时表示代码编写结束。

④ Java考试类QandAJ

Java考试类,若选择Java考试则执行该类的方法

1.InitQandA()用来初始化Java考题,答案以及分数, 2.choice(),fillIn(),shortAnswer(),programming()等函数表示对于Java考题中的选择题,填空题等题型进行处理函数,并写入./txt文件数据/路径下的Score.txt、shortAnswerJ.txt与programmingJ.txt文件。

3.Exam()将 choice(),fillIn(),shortAnswer(),programming()统一调用,完成Java考试,programming()在输入为“end”时表示代码编写结束。

四、考试截图

① 用户登录 为方便老师测试,学号可输入为1

在这里插入图片描述

② 选择考试课目C++

③ 选择考试课目为Java

④ 选择题

⑤ 填空题作答

⑥ 简答题作答


⑦ 编程题作答

⑧ 分数统计

⑨ 考试结束

五、总结

本次实验我对于系统的功能性需求已基本全部实现,如选择判断自动判分,且分数与简答编程答案计入txt文件供后续老师判分。但由于我此前的学习没有深入C++以及QT可视化等方面的知识,对于非功能性需求没有特别突出的地方,如可视化方面、数据持久化方面没有亮点,但也尽量用到了自己学习过的知识,如在设计时进行类图设计,并考虑到了设计模式如模板方法的使用,并在代码注释方面也应有尽有。此外对于编程题也有改进的空间,虽然本系统中可以进行换行,但会消耗考生做题的时间。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pistachiout

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值