选择题考试系统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 软件开发起因以及使用说明
此软件开发是为了实现上机考试,给同学一个上机练习而产生的需求。近
年来随科技进步,网上考试越来越迫切,因此针对这一需求,此软件就此产生。 此软件分两个模块,一个是教师管理系统,另一个是学生考试系统;教师可以随时录入试题,可以从问件上直接修改试题;学生可以直接选择答题,和随机答题两种方式进行。并且此软件可以自动判题,生成成绩。给同学和老师带来了很多方便。此程序操作简单,很容易掌握。
正在阅读:
选择题考试系统C++课程设计05-29
杨善洲的故事先进事迹心得体会范例五篇08-08
杭州罗茨风机隔声罩设计及案例07-07
部门制度建设内容 (建议模式)08-29
宿舍管理系统用户手册11-21
项目部管理人员岗位制度05-04
CIK 细胞采血、回输流程05-06
2021年宗祠竣工庆典主持词文本08-17
机关效能建设实施方案04-15
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- C++
- 选择题
- 课程
- 考试
- 设计
- 系统
- 数控机床课程设计-X-Y数控工作台设计(完整图纸)
- 如何学习小学五年级语文
- 企业环境保护领导小组及制度(参考)
- 高一年级上学期期末调研考试生物试题附答案
- 高纯材料制取项目可行性研究报告
- 五大工具培训参考手册教材
- 全国茶叶批发市场大全(1)
- Size dependent interface energy and its applications
- 学院电视台节目策划书
- 第二章1-4矿物岩浆岩沉积岩
- 高碳钢方坯连铸二冷系统优化
- 2013-2014初三海淀区数学期末试题答案
- photoshop CS2精品教程 第9章
- 郫县项目市场观察报告2013.5.30
- 社会个案工作的基本程序与方法技巧
- 2010年湖南省法律硕士(非法学)考研最新考试试题库(完整版)
- 1.6函数奇偶性的判断
- 风力异步电动机_中英文翻译_毕业论文
- 2012 Deep Research Report on China Distributed Energy Resources Industry(Table of Contents)
- 浅谈中药的不合理用药与不良反应