2 总体方案设计

2.1 设计任务及要求

本次设计的主要功能要求:

  1. 试题录入:可随时对题库中的题目实现增删改查,要求题库中不少于50个题目;
  2. 试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入);
  3. 试题的分组:可以增加删除分组,可自由选择分组进行答题;
  4. 答题:用户可实现自己选择答案;
  5. 自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩;
  6. 最后要求能显示出错题目和正确答案,并保留此次答题记录,下次测试之前可以查看上次记录。

2.2 总体方案设计

系统的层次方框图如图2.1所示。

3 详细设计

本程序采用文本文件操作用的时CStdioFile类将题库以文本文件的形式保存在电脑中,如图3.1所示。

图3.1  文件存储形式

3.1登录窗口

登录窗口如3.2所示,若登录错误,则出现图3.3。

  1. 插入dialog,添加类,然后在QuestionBank.cpp文件中的BOOL CQuestionBankApp::InitInstance()函数的最前面加上以下一段代码

while (TRUE)

{

CDlgLogin login_Dialog;

//模态对话框

int nReturn = login_Dialog.DoModal();//返回IDOK或IDCANCEL。如果返回的是IDCANCEL,则要调用WindowsCommDlgExtendedError函数来确定是否发生了一个错误。IDOK和IDCANCEL都是常量,它表明用户选择的是OK按钮还是Cancel按钮

if (nReturn == IDCANCEL) {//点击取消

return FALSE;

}

if (nReturn == IDOK) {//点击确定

HWND login_Hwnd = GetDlgItem(login_Dialog, IDD_LOGIN);

CString str_User = login_Dialog.m_strUser;

CString str_Password = login_Dialog.m_strPassword;

if (!(str_User == "admin" && str_Password == "123456")) {//如果用户名密码不是admin/123456,则报错,提示重新输入,直至正确为止。

if (IDOK == MessageBox(NULL, "用户ID或密码错误!\n 请重新输入!", "登录失败!", MB_OKCANCEL | MB_ICONERROR))

continue;

else

return FALSE;

}

else

break;}}

图3.1.1  登录窗口图             图3.1.2  登录错误

3.2主窗口

登录成功后可显示主窗口如图3.2.1主窗口所示,通过主窗口进入不同的窗口,可以查看上次答题记录,也可以进入管理模式实现对试题的增删改查和试题的分组,可以进入练习模式进行试题的练习,还可以进入测试模式进行抽题测试。

图3.2.1主窗口

3.3查看上次错题

点击查看上次错题可以查看上次的答题记录,如图3.3.1查看上次答题记录所示,该窗口同时也是测试模式中点击提交按钮后的判卷界面。

。。

图3.3.1查看上次答题记录

3.4管理模式

管理模式中具有试题的分组以及在分组中进行增删改查打开管理模式的界面,组名的下拉框默认选中第0个组名,打开以其为名的文件,并将其显示在列表控件中。

  1. 在ListControl中显示文本文件内容:

//初始化函数中设置每一列的名称:

m_Test_List.InsertColumn(0, _T("题目"), LVCFMT_LEFT, 200);

m_Test_List.InsertColumn(1, _T("A"), LVCFMT_LEFT, 300);

m_Test_List.InsertColumn(2, _T("B"), LVCFMT_LEFT, 300);

m_Test_List.InsertColumn(3, _T("C"), LVCFMT_LEFT, 300);

m_Test_List.InsertColumn(4, _T("D"), LVCFMT_LEFT, 300);

m_Test_List.InsertColumn(5, _T("答案"), LVCFMT_LEFT, 100);

m_Test_List.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

//设置风格;整行选中;网格显示(属性中设置report报表风格)

//将文本内容读出来并显示在listcontrol控件中的函数:

//初始化函数中以及修改文件内容后都要调用这个函数,打开界面默认读出第一个组的文本内容

void CDlgAdmin::list_control_display()//从文件读出来并显示在列表控件中

{m_Test_List.SetRedraw(FALSE);

if (m_Test_List.GetItemCount() > 0)

m_Test_List.DeleteAllItems();//将文本内容显示在控件前先要清空控件的内容

CStdioFile myfile;

CString tt;

CString mArray[6];//将每一行分割成六份

if (myfile.Open(path, CFile::typeText | CFile::modeRead))//path为选择的组别,默认第一项

{while (myfile.ReadString(tt))

{for (int i = 0; i < 6; i++)

AfxExtractSubString(mArray[i], tt, i, ' '); //以空格字符拆分为不同数组以便操作

int n = m_Test_List.GetItemCount();//列表视图控件中的项数。

m_Test_List.InsertItem(n, mArray[0]);//插入第n排1列

m_Test_List.SetItemText(n, 1, mArray[1]);//插入第n排2列

m_Test_List.SetItemText(n, 2, mArray[2]);

m_Test_List.SetItemText(n, 3, mArray[3]);

m_Test_List.SetItemText(n, 4, mArray[4]);

m_Test_List.SetItemText(n, 5, mArray[5]);}

myfile.Close();

m_Test_List.SetRedraw(TRUE);   //指定每次修改控件属性后是否自动重绘控件。

m_Test_List.Invalidate();

m_Test_List.UpdateWindow();}

else

MessageBox(_T("文件不存在!"), _T("读取失败"));

}

进入管理模式后,操作界面如图3.4.1所示。

........

........

图片好像需要保存到电脑才能上传,后面就不复制了

https://download.csdn.net/download/qq_55789393/86730916

MFC单项选择题标准化考试系统相关推荐

  1. c语言考试系统设计报告,C语言课程设计(单项选择题标准化考试系统)报告

    <C语言课程设计(单项选择题标准化考试系统)报告>由会员分享,可在线阅读,更多相关<C语言课程设计(单项选择题标准化考试系统)报告(15页珍藏版)>请在人人文库网上搜索. 1. ...

  2. 单项选择题标准化考试系统C语言课程设计

    单项选择题标准化考试系统 1.问题描述 设计一个单项选择题标准化考试系统,该系统要求能自动组卷和评分. 2.功能要求 (1)用文件保存试题库.(每个试题包括题干.4个备选答案.标准答案). (2)试题 ...

  3. c语言考试系统设计报告,c语言课程设计报告单项选择题标准化考试系统.doc

    c语言课程设计报告单项选择题标准化考试系统.doc <C语言程序设计>课程设计题目:单项选择题标准化考试系统专业:计算机科学与技术班级:计科1001目录<C语言程序设计>课程设 ...

  4. 单项选择题 安卓课程设计_单项选择题标准化考试系统课程设计论文.doc

    单项选择题标准化考试系统课程设计论文.doc 还剩 10页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 蝿腿 ...

  5. c语言标准化考试系统课程设计,C语言课程设计单项选择题标准化考试系统.doc

    . ... 仲恺农业工程学院 课程设计报告 单项选择题标准化考试系统 课程名称 C 语言程序设计 姓 名 院(系) 信息科学与技术学院 专业班级 学 号 指导教师 目 录 TOC \o "1 ...

  6. 课程设计 单项选择题标准化考试系统

    include<stdio.h> #include<string.h> int N; typedef struct question //定义结构体类型 { int num; ...

  7. 选择题标准化考试系统c语言,C语言设计:单项选择题标准化考试系统

    匿名用户 1级 2010-07-10 回答 #include "insert_delete.h" ncompare() { char s[100]; char key[100]=& ...

  8. c语言课程设计自动答题系统,C语言课程设计-单项选择题标准化考试系统设计.doc...

    PAGE 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目:单项选择题标准化考试系统设计 院(系): 计算机学院 专 业: 计算机科学与技术 班 级: 学 号: 姓 ...

  9. C语言课设选择题标准化考试系统(大作业)

    一.任务概述(文章仅供参考) 1.用文件保存试题库.(每个试题包括题干.4个备选答案.标准答案) 2.试题录入:可随时增加试题到试题库中 3.试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入) ...

最新文章

  1. 两次服务器灾难事故的反思
  2. Python网络请求urllib和urllib3详解
  3. 台湾大学林轩田机器学习技法课程学习笔记1 -- Linear Support Vector Machine
  4. spring cloud eureka注册原理-注册失败填坑
  5. 引入jQuery的src设置
  6. Android Android.mk脚本结构
  7. java: org.luaj.vm2.LuaError:XXX module not found lua脚本初始化出错(转)
  8. 翻译 | Learning React Without Using React Part 2
  9. WGAN-GP方法介绍
  10. 计算机管理如何格式化u盘,技术编辑器会教您如何格式化U盘
  11. RoboWare Studio入门教程(一)
  12. matlab图像取反_MATLAB图像处理例子
  13. vue+antDesign实现树形数据展示并表格父子级选中和取消联动
  14. 跨境电商必看:amazon账号关联因素
  15. (纪中)3505. 积木【DP】
  16. 微信开发工具tabBar中的list 图片为啥加载不出来?
  17. 【机器学习】Radius Neighbors Classifier(rNN,radius nearest neighbors)
  18. 蛮X搜神记的NetManager分析(1)
  19. Android ToggleButton:状态切换的Button
  20. HashMap存储自定义类型键值: 重写HashCode和equals方法

热门文章

  1. linux的电脑 配哪款显卡,27款AMD、NVIDIA显卡大战Linux
  2. docker官方仓库下载镜像
  3. DSL和RestClient实现搜索
  4. Android Gradle:依赖下载
  5. MATLAB绘图合集:imagesc绘图
  6. python监听串口数据_python 读取串口数据的示例
  7. 【OR】YALMIP 半正定规划
  8. 树莓派3配置局域网打印服务器惠普打印机HP1108
  9. CH340 CH341 Linux驱动最完整使用教程(永久解决/dev/ttyUSB0 permission denied问题,USB设备读写C++实现)
  10. Linux bridge table(brctl)