基于C++的考试系统

news2024/12/25 9:28:25

一、需求分析

​ 设计一个简单的考试系统,可进行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可视化等方面的知识,对于非功能性需求没有特别突出的地方,如可视化方面、数据持久化方面没有亮点,但也尽量用到了自己学习过的知识,如在设计时进行类图设计,并考虑到了设计模式如模板方法的使用,并在代码注释方面也应有尽有。此外对于编程题也有改进的空间,虽然本系统中可以进行换行,但会消耗考生做题的时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/350667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【一般人不会告诉你】比肩chatgtp的5款AI网站

话不多说,直接上连接 1. Dall-E: https://labs.openai.com/ 2. Codeformer: https://shangchenzhou.com/projects/Co... 3. Playground AI: https://playgroundai.com/ 4. Clip Drop: https://clipdrop.co/relight 5. Astria: https://www.strmr.com/examples …

Apache服务关闭攻防场景模拟实验

一、场景概述 攻击机攻击已知的公共Apache web服务器,导致Apache服务关闭,web网站无法访问。攻击者利用安全外壳 (SSH) 暴力攻击访问服务器,并上传后门文件和脚本,每分钟将服务器的用户名称和密码发送给攻击机以保持对服务器的访…

【分享】如何通过集简云将ChatGPT人工智能接入到我们的抖音中?

ChatGPT是一款非常强大的人工智能产品,可以有创造性的回复和创作文字,图片,适用于很多办公场景。这篇文章将介绍如何将ChatGPT接入到我们的抖音中。 在集简云中的ChatGPT应用 目前集简云提供了两个ChatGPT应用: OpenAI(ChatGPT)内…

什么是同步整流和异步整流

在设计降压型DCDC电路的时候,经常会听到同步整流(synchronous)和异步整流(asynchronous)。那么什么是同步整流,什么是异步整流呢从这两种电路的拓扑来看,异步整流型外围有一个续流二极管&#x…

07 OpenCV各类滤波

1 均值滤波 均值滤波器是一种基本的线性滤波器,常用于图像处理中的平滑操作。在 OpenCV 中,可以使用cv2.blur()函数或cv2.boxFilter()函数进行均值滤波操作。 均值滤波器的原理是将每个像素的灰度值替换为其周围像素灰度值的平均值。其核心思想是去除图…

Android App开发基础

文章目录一 App的开发特点1.1 App的运行环境1.2 App开发语言1.3 java语言开发1.4 Kotlin语言开发1.5 XML1.6 App连接的数据库二 App的工程结构2.1 App工程目录结构2.2 构建工具Grade2.3 编译配置文件build.gradle2.4 运行配置文件AndroidManifest.xml2.4.1 application2.4.2 ac…

科研试剂供应Pyrene-PEG3-Propargyl,芘甲酰胺-三聚乙二醇-丙炔

Pyrene-PEG3-Propargyl,Propargyl-PEG3-Pyrene,芘甲酰胺-三聚乙二醇-丙炔,芘甲酰胺三聚乙二醇丙炔反应特点:Pyrene-PEG3-Propargyl属于炔基点击试剂,点击化学的概念对化学合成领域有很大的贡献,在药 物开发…

nvdiffrast

nvidiffrast主页https://arxiv.org/pdf/2011.03277.pdfhttps://github.com/NVlabs/nvdiffrast CSC2547 Differentiable Rendering A Survey https://www.youtube.com/watch?v7LU0KcnSTc4 DR https://blog.qarnot.com/an-overview-of-differentiable-rendering/ 知乎 https:…

找不到工作的测试员一大把,大厂却招不到优秀软件测试员?高薪难寻测试工程师。

测试工程师招了快一个月了,实在招不到合适的,已经在被解雇的边缘了。。。” 初级测试工程师非常多,但真正掌握测试思维、能力强的优秀测试太少了! 据我所知, 当下的测试人员不少状态都是这样的: 在工作中…

设计模式C++实现18:迭代器模式(Iterator)

意图:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 上下文:集合对象内部结构常常变化各异。对于这些集合对象,能否在不暴露其内部结构的同时,让外部Client透明地访问其中包含的元素…

动态规划(楼梯和股票问题)

❤ 作者主页:李奕赫揍小邰的博客 ❀ 个人介绍:大家好,我是李奕赫!( ̄▽ ̄)~* 🍊 记得点赞、收藏、评论⭐️⭐️⭐️ 📣 认真学习!!!🎉🎉 文章目录动态规划&…

抓包工具Charles(一)-下载安装与设置

无论是在测试、开发工作中,抓包都是很重要、很常用的技能。Charles作为一款抓包工具,能够满足大部分的工作需求。 文章目录一、下载地址二、安装三、安装根证书(电脑)四、设置五、抓包附录:[零基础入门接口功能测试教程…

<JVM上篇:内存与垃圾回收篇>10 - StringTable

笔记来源:尚硅谷 JVM 全套教程,百万播放,全网巅峰(宋红康详解 java 虚拟机) 文章目录10.1. String 的基本特性10.1.1. String 在 jdk9 中存储结构变更MotivationDescription10.1.2. String 的基本特性10.2. String 的内…

ARMv8 同步和信号量(Synchronization and semaphores)简介

目录 1,Load-Exclusive/Store-Exclusive 概述 2,独占式访问指令与非共享内存( Exclusive access instructions and Non-shareable memory locations) 3,独占式访问指令与共享内存( Exclusive access instructions and shareable memory lo…

文华财经期货波段趋势K线结构主图阶梯公式源码,极品多空红绿轨道指标公式

期货指标公式是通过数学逻辑角度计算而来,仅是期货分析环节中的一个辅助工具。期货市场具有不确定性和不可预测性的,请正常对待和使用指标公式! 第一步:判大势 所谓判大势,就是判断当前行情趋势,是入场前的必备步骤。…

中汽协确认参加2023EVH新能源动力总成年会

演讲主题:中国汽车工业经济运行情况 演讲大纲: 对中国汽车工业近期发展态势进行分析2023年汽车行业预测 陈士华 现任中国汽车工业协会副秘书长,兼任中国汽车工业经济技术信息研究所有限公司总经理 1999年3月至今,就职于中国汽…

接口自动化测试框架(Java 实现)

需求分析 需求点需求分析通过 yaml 配置接口操作和用例后续新增接口和测试用例只需要编写 yaml 文件即可实现。可以支持接口间的参数传递具有参数依赖的接口可以进行变量的抽取和参数赋值。支持全局、用例维度的变量存储比如时间截命名法中要用到的时间截后缀。支持用例软断言…

Go语言入门【10】Map

Map map是一种键值对形式的数据结构,一个键对应一个值,可以通过键快速检索出其对应的value值,在map中key的值是唯一的,value的值不唯一,并且map中保存的数据是无序的。 Map声明 声明Map可以使用map关键字进行声明&a…

【Yolov7】配置参数以及训练模型

一、下载Yolov7 github地址:https://github.com/WongKinYiu/yolov7 或者命令行下载 git clone https://github.com/WongKinYiu/yolov7.git二、新建一个Python环境 用Acaconda新建一个干净的环境,我命名为yolov7,python版本选择3.8 进入到…

GPT系列:GPT, GPT-2, GPT-3精简总结 (模型结构+训练范式+实验)

😄 花一个小时快速跟着 人生导师-李沐 过了一遍GPT, GPT-2, GPT-3。下面精简地总结了GPT系列的模型结构训练范式实验。 文章目录1、GPT1.1、模型结构:1.2、范式:预训练 finetune1.3、实验部分:2、GPT-22.1、模型结构2.2、范式:预…