选择题考试系统C++课程设计

更新时间:2023-05-29 01:47:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

选 择 题 考 试 系 统

目录

第一章 课程设计的目的和要求 .............................. 1

1.1 课程设计的目的.................................................. 1 1.2 课程设计的基本要求:............................................ 1

第二章 课程设计任务内容 .................................. 2

2.1 课程设计任务内容................................................ 2

第三章 课程设计详细设计说明 .............................. 3

3.1 程序模块总图.................................................... 3 3.2 教师登录模块.................................................... 3 3.3 试题管理模块.................................................... 5 3.4 扫描题库模块.................................................... 7 3.5 程序辅助模块.................................................... 8 3.6 约束条件........................................................ 8 3.7 接口函数描述.................................................... 8 3.8 程序测试........................................................ 9 3.9 调试结果及截图.................................................. 9

第四章 软件使用说明 ..................................... 19

4.1 软件开发起因以及使用说明....................................... 19

第五章 课程设计心得与体会 ............................... 20 附录1 参考文献 ......................................... 21 附录2 程序源代码 ....................................... 22

第一章 课程设计的目的和要求

1.1课程设计的目的

VC程序设计是计算机科学与技术专业的基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。课程设计的目的是加深对理论教学内容的理解和掌握,使学生较系统的掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。要求学生在设计指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟悉掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好的理解和掌握,能够进行简单分析和判断;能编写出良好风格的程序;掌握VC程序设计的基本技能和面向对象的概念和方法。培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

1.2 课程设计的基本要求:

(1) 掌握VC编程、面向对象的基础知识。

(2) 掌握API、MFC编程的消息响应机制和应用程序框架。 (3) 较熟悉地编写基于API、MFC的VC应用程序。 (4) 了解VC的常用标准类库、编程技巧及高级编程。

(5) 了解学生管理系统设计的可行性分析、设计、模块划分、功能实现、软件调试、软件评估。

(6) 联系已学过的内容,巩固所学的理论,增强独立工作能力。

(7) 通过设计主要使学生有一个系统总体开发,总体设计、总体实现的完整过程,对理论学习及动手能力都有一个很大的提高。

(8) 通过本次设计,进一步培养学生热爱专业的理想,同时对本专业综合素质的提高起一个积极的推动作用。

(9) 能合理的安排个人的工作地点,并遵守操作规程与安全技术规则。

第二章 课程设计任务内容

2.1课程设计任务内容

单项选择题标准化考试系统功能要求:

用文件保存试题库(每题包括题干、4个备选答案、标准答案) 试题录入:可随时增加试题到试题库中

试题抽取:每次从试题库中随机抽取N道题,N由键盘输入 答题:用户输入自己的答案

自动判卷:系统根据标准答案实现自动判卷,并给出成绩

要求:

1)用C语言实现系统;

2)函数功能要划分好(结构化程序设计); 3)界面友好(良好的人机交互),加必要的注释; 4)提供程序测试方案。

第三章 课程设计详细设计说明

3.1 程序模块总图

程序模块功能如图所示:

图3-1程序功能示意图

由于此程序较复杂要求两个人分工合作完成,所以我负责其中教师管理系统。从图中可以看出程序中教师的管理系统又分三个模块:

(1) 教师登陆模块 (2) 试题管理模块 (3) 扫描题库模块

3.2 教师登录模块

模块描述:此模块是确保试题的保密,不被任意人随意看到而设置的一个密

码验证登陆模块。其作用是起到保护试题不被泄露。程序如下:

int userlogin() { char username[20]; //用户名 char userpsw[20]; //密码 cout<<"***************************************************"<<endl; cout<<"***************************************************"<<endl; cout<<"***************************************************"<<endl; cout<<"***********************教师登录********************"<<endl; cout<<"***************************************************"<<endl; cout<<"***************************************************"<<endl; cout<<"***************************************************"<<endl; cout<<"用户名:"; cin>>username;

if(strcmp(username,"admin")){ cout<<"用户名错误!"<<endl; system("pause"); system("cls"); userlogin(); } else{ cout<<"密 码:"; cin>>userpsw; if(strcmp(userpsw,"123")){ cout<<"密码错误!"<<endl; system("pause"); system("cls"); userlogin(); } else {system("pause"); system("cls"); return 1;} } return 0;

此模块的性能:密码登陆。其灵活性很高,当密码输入错误时,界面上会提示“按任意键。。。”后,刷新登陆界面重新输入。

输入值:输入的账号以及密码是唯一的,其程序是采用字符串的运算函数strcmp(比较)来确定密码是否正确的。字符串的长度是二十个字符,所以在超出20个字符后会只会程序中只会存储前20个字符。

算法:算法很简单,只是通过字符串的比较得出的0或1的值,再用if

语句来选择,1进行下个模块的运行,0表示输入错误,重新输入。

3.3 试题管理模块

模块描述:由于此模块比较复杂,所以主要在(1)用文件保存试题库,(2)试题录入:可随时增加试题到试题库中,这两个功能中。此模块程序如下:

void add() { ofstream out_stream; //文件流定义

char content[2000]; //用于存放输入的题目 int dist,n; //dist 用于判断是否继续添加新的题目,n是数组计数器 int num; //用于计数 int optnum;

char ans; char ansnum='A'; do{ n=0;

num=1;

out_stream.open("tiku.txt",ios::app); //打开文件tiku.txt,ios::app表示追加文件尾 if (out_stream.fail()) { cout<<"Input file opening failed.\n"; exit(1); }

cout<<endl<<"注意:新增的题目中,不允许出现'@'和'#'!!! "<<endl; cout<<"题库中已有 "<<maxnum<<" 道题,请按顺序编写题号!"<<endl; cout<<"请输入题目(不包括选项,并在最后加一个字符'#'表示输入完毕): \n"; do{

cin>>content[n]; n++; }while(content[n-1]!='#'); n=0; while(content[n]!='#') { out_stream<<content[n]; n++; }; out_stream<<endl; cout<<"你想要设置几个选项呢?请输入答案选项数:"; cin>>optnum;

do{ n=0; cout<<"请输入第 "<<num<<" 个选项(在最后加一个字符'#'表示输入完毕)"<<endl; do{

cin>>content[n]; n++; }while(content[n-1]!='#'); n=0; while(content[n]!='#') { out_stream<<content[n]; n++; }; out_stream<<endl; num++; }while(num!=optnum+1); out_stream<<endl<<"@"<<endl;

out_stream.close(); out_stream.open("answer.txt",ios::app); //打开文件tiku.txt,ios::app表示追加文件尾 if (out_stream.fail()) { cout<<"Input file opening failed.\n"; exit(1); } do { cout<<"请录入答案:\n"; cin>>ans; }while(ans!='A'&&ans!='B'&&ans!='C'&&ans!='D'); out_stream<<ans; out_stream.close(); maxnum++;

cout<<"继续回答问题吗? 选择 '1' 继续,选择'2' 回到主菜单。"<<endl; cin>>dist; }while(dist==1); doselect(menu()); }

性能:

(1)用文件保存试题库(每题包括题干、4个备选答案、标准答案) (2)试题录入:可随时增加试题到试题库中 (3)可以在录完,每一道题后,退出或继续录入

输入值:按照相应的提示输入信息,题目会保存到tiku.txt中,答案会保存到"answer.txt"中,并且原来的信息不会丢失。保存到两个文件中在自动判题时就要求两个文件一起调用,当然这是另外一部分,不在我的程序内。输入的信息可以是字符也可以是汉字。

算法:此模块算法最大特点是根据字符#判断试题的题目和选项录入是否结束。利用循环来实现试题一道一道的录入,从而保存到文件中。

数据文件存储说明:

图3-2文件存储示意图

3.4 扫描题库模块

模块描述:此模块是为了确定试题库中有多少道题,并且其在录入试题时也会起到作用,根据其扫描出的题数,确定录入试题的题号。程序如下:

//*************扫描题库******************************** //统计已有题目数量

int checkAll(){ int count=0; char check;

ifstream in_stream; in_stream.open("tiku.txt"); //用open函数打开tiku.txt文本 if (in_stream.fail()) //判断打开是否成功 {

cout<<"Input file opening failed.\n"; exit(1); }

while(in_stream >>check) {

if (check=='@') count++; } return count; }

算法:此块的算法是在根据录入试题时在题号前面自动录一个@,所以在

扫描时根据@的个数来判断试题的个数。

3.5程序辅助模块

辅助模块是为了能够实现各模块之间紧密的连接,比如程序中的menu,

select模块等。

3.6 约束条件

硬件环境:内存256MB以上;硬盘60G以上

其他组件:光驱(CDROM);显卡(SVGA)适配器;集线器;交换机。 系统平台: Windows2003操作系统, Office 2000办公软件 设计语言:C++语言服务器:Tomact5.0 运行软件:Microsoft Visual C++6.0

3.7 接口函数描述

此部分程序有一个主函数和五个子函数: 1 int main 主函数 2 int userlogin(); 3 int menu();

功能:用户登录

功能: 菜单函数

功能: 选择处理

4 void doselect(int choice);

5 void add(); 6 int checkAll();

功能:添加题目 功能: 扫描题库

3.8程序测试

完成教师管理系统的详细设计后,接下来就到了系统测试阶段。在这一阶段中,首先要完成代码的编译过程。代码初步完成编写后,要仔细地进行编译,根据系统提示错误,进行修改。注意代码的书写规范,包括命名惯例、注释、分隔和缩进等。

在这个过程中,我们要养成良好的程序编写习惯,对编译过程中经常出现的错误情况加以注意,为今后的程序编写打下基础。

3.9 调试结果及截图

程序主界面:

图3-3系统主界面

测试内容:实现教师和学生两个不同角色的登陆界面。 操作步骤:输入数字1,然后按任意键 期望结果:教师管理界面登陆成功 操作截图:

图3-4教师登陆界面

测试内容:实现登陆正确,输入错误会重新输入 操作步骤:输入用户名admin,然后按回车 期望结果:用户界面登陆成功 操作截图:

图3-5密码输入界面

操作:按回车判断是否输入正确

操作截图:

图3-6密码正确后界面

操作界面:

图3-7密码输入错误界面

测试内容:重新输入密正确码后是否进入扩充题界面

操作步骤:按照提示操作;

期望结果:输入成功,进入扩充试题界面

操作界面;

图3-8登陆成功试题管理界面

图3-9试题录入界面1

测试内容:测试出入题目后是否能够录入文件

操作步骤:输入题目,不包括选项,最后输入一个#字符; 期望结果:输入成功,进入输入选项界面

图3-10录入选项界面

测试内容:测试出录入题目术后后是否能够进入输入A选项界面 操作步骤:输入题目数,

期望结果:输入成功,进入输入A选项界面

图3-11录入A选项界面

图3-12录入B选项界面

图3-13录入C选项界面

图3-14录入D选项界面

图3-15录入答案界面

图3-16继续录入或退出界面

图3-17试题录入文件截图

图3-18 试题答案截图

第四章 软件使用说明

4.1 软件开发起因以及使用说明

此软件开发是为了实现上机考试,给同学一个上机练习而产生的需求。近

年来随科技进步,网上考试越来越迫切,因此针对这一需求,此软件就此产生。 此软件分两个模块,一个是教师管理系统,另一个是学生考试系统;教师可以随时录入试题,可以从问件上直接修改试题;学生可以直接选择答题,和随机答题两种方式进行。并且此软件可以自动判题,生成成绩。给同学和老师带来了很多方便。此程序操作简单,很容易掌握。

本文来源:https://www.bwwdw.com/article/nur4.html

Top