代写C语言、C++、Java、Python、HTML、JavaScript、vue、MySQL相关编程作业,
长期接单,信誉有保证,如有任何问题或需要请加文章末尾推广QQ。
在售模板目录:点击这里跳转
本文资源:【C++期末/课程设计】单项选择题标准化考试系统(vs2022项目)
1.题目要求
题目描述
单项选择题标准化考试系统设计
一、功能要求:
1、采用文本菜单界面(如果能采用图形菜单界面更好)
2、用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)
3、试题录入:可随时增加试题到试题库中,但如果出现与题库中已存在题的题干相同的,则给出提示信息,不能增加)
4、试题修改、删除、插入等功能要求用链表实现。
5、试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)
6、答题:进入测试之前先输入用户名、密码登录,以方便保存用户信息。用户可实现输入自己的答案
7、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
8、排行榜功能,排行榜显示用户名、分数、做题时间等。
9、查看历史答卷情况。
编程软件
2.视频演示
【C++期末/课程设计】单项选择题标准化考试系统(vs2022项目)
3.项目介绍
首先项目使用双向结构体链表存储试题信息,并同步存储到项目目录下的“questions.csv”文件,答题记录信息使用同样使用双向数据链表存储数据,并同步保存在项目目录下的“answer_records.txt”文件中,数据存储文件名可以在代码起始位置修改:
string csvFileName = "questions.csv"; // 题目文件名
string filename = "answer_records.txt"; // 答题记录文件名
// 试题双向链表结构体
struct QuestionNode {
string questionText; // 题干
string answers[4]; // 备选答案
string correctAnswer; // 标准答案
QuestionNode* prev; // 前一个节点
QuestionNode* next; // 下一个节点
};
// 公有链表头和题目数量
QuestionNode* head = nullptr; // 链表头指针
int questionCount = 0; // 题目数量
// 公有链表头用于存储抽取的试题
QuestionNode* extractedHead = nullptr; // 抽取的链表头
int extractedCount = 0; // 抽取的题目数量
// 定义答题记录的结构体
struct AnswerRecord {
string userAccount; // 用户账号
string userPassword; // 用户密码
int answerTime; // 答题时间,单位为秒
int score; // 答题分数
AnswerRecord* prev; // 上一个节点
AnswerRecord* next; // 下一个节点
};
// 公有链表头和数据条数
AnswerRecord* recordHead = nullptr; // 答题记录链表头指针
int recordCount = 0; // 链表中答题记录的数量
项目启动后,首先打印操作菜单根据用户输入的操作编号调用对应功能:
1.试题录入
逐行接收用户输入的试题信息并存储到链表中,同步存储到本地csv文件中
2.试题修改
根据输入的题干内容查询对应题目,若查询成功则打印题目内容,然后根据用户输入的操作编号修改该题目对应内容。
3.试题插入
根据用户输入的数字在当前链表对应编号试题前插入一组题目数据,编号不能大于当前题目数量。
4.试题删除
根据输入的题干查询对应数据,根据输入的选项决定是否删除查询到的题目。
5.试题抽取
根据输入的试题数量从试题链表抽取对应数量不重复试题并存储到抽取试题链表中
抽取数量不能大于试题数量。
6.答题
进入答题界面后,首先输入账号和密码,若为新用户则提示是否注册,若是则保存新用户信息。
若为老用户则查询密码是否正确,若密码错误则提示
若正确则进入答题模式,打印题目
答题完成后统计并保存答题时间和得分,并保存答题记录。
7.排行榜
根据每个账号答题最高分构建排行榜并打印。
8.历史答卷情况
以表格左对齐形式打印历史答题信息。
0.退出
输入0退出