单项选择题标准化考试系统设计Word文档格式.docx
- 文档编号:15101609
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:17
- 大小:207.42KB
单项选择题标准化考试系统设计Word文档格式.docx
《单项选择题标准化考试系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《单项选择题标准化考试系统设计Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
用户可实现输入自己的答案
(5)自动判卷:
系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
1.2总体结构
本程序主要分为四个模块(功能模块图见下图):
(1)模块一:
菜单操作模块
该模块实现程序的菜单操作。
2)模块二:
将题目装入内存模块函数开辟内存空间将试题文件中题目装入内存中。
(3)模块三:
开始答题模块函数会让用户输入要答的题目数,在屏幕上输出题干和选项并让用户输入答案。
判断用户输入答案是否正确。
4)模块四:
添加试题模块
打开储存试题的文件进行试题信息输入。
第2章详细设计
2.1菜单操作模块:
控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,流程如图2.1所示。
图2.1
实现算法如下:
在屏幕上输出菜单选项。
接受用户输入。
2.2.将题目装入内存模块:
将题目装入内存模块函数开辟内存空间将试题文件中题目装入内存中
流程如图2.2所示
图2.2
函数开辟内存空间将试题文件中题目装入内存中。
实现算法如下:
遍历文件判断回车符个数(计算题目数)。
根据提供参数判断是否将当前题目装入内存。
开辟内存空间,将题目信息装入内存。
关闭文件返回题目总数。
2.3开始答题模块:
流程图如图2.3
图2.3
函数会让用户输入要答的题目数,在屏幕上输出题干和选项并让用户输入答案。
判断用户输
入答案是否正确。
接受用户输入题目数,判断是否合法(大于0、小于总题数)。
置随机数并判断随机数是否合法。
调用将题目装入内存模块题目装入内存。
在屏幕上输出题目,接受用户输入答案。
判断用户输入的答案是否正确,输出答题结果统计。
2.4添加试题模块:
流程图如图2.4
打开文件。
开辟内存空间,接受用户输入题目信息。
判断用户输入是否合法。
写到文件并保存。
第3章调试分析
问题1:
文本文件无法删除指定的一行
方法:
所以要用类似于进栈出栈的方法,把要删的信息过滤出去
问题2:
程序不能运行
方法:
解决办法就是不断的按F10进行调试,最终找到错误的地方。
问题3:
打开的文件没有关闭,最终导致一部分源代码被无意休改
问了成绩好的同学,最后加了个关闭文件的函数。
第4章使用说明
运行操作及结果:
该程序可以进行单项选择题标准化考试的系统,实现输入不同的指令数字实现不同的功能;
实现选择答题增加题目以及直接退出系统。
单项选择题标准化考试系统。
请输入你要的操作:
1
2
图为进行单项选择题标准化考试系统设计的情形
使用时根据提示选择想要的查找方式。
参考文献:
[1]张长海.C语言程设计[M].北京:
高等教育出版社,2006
[2]谭浩强C程序设计解题与上机指导(第三版)北京清华大学出版社2009
[3]范辉等编着《VisualC++6.0程序设计简明教程》高等教育出版社
[4]严蔚敏等《数据结构(c语言版)》北京:
清华大学出版社,1997年4月第1版。
[5]胡学钢等《数据结构算法设计指导》北京:
清华大学出版社,1999年第1版。
附录(程序清单)
#include<
stdio.h>
stdlib.h>
#defineLENsizeof(structtest)
structtest
{
charque[81];
charanswer1[81];
charanswer2[81];
charanswer3[81];
charanswer4[81];
charture;
structtest*next;
};
structtest*head;
//全局变量储存第一个结构体的指针
intzts(intm)//将第m道题装入内存,输入-1时将返回总题数
FILE*fp;
structtest*p1=NULL;
charch,ch1[5];
inti,n=0,wz,py;
if((fp=fopen("
c:
\\test.txt"
"
r"
))==NULL)//只读方式打开文件
{
printf("
文件打开失败请检查C盘下的test.txt文件。
\n"
);
exit(0);
}
do
py=1;
ch=fgetc(fp);
for(i=0;
ch!
='
\n'
&
=-1;
i++)//循环判断回车符个数
{
py++;
ch=fgetc(fp);
}
n++;
//储存行数的变量
if(n==m)//如果当前行数与传入参数相等
if(p1==NULL)//判断是否是第一次开辟内存空间
{
p1=(structtest*)malloc(LEN);
head=p1;
p1->
next=NULL;
}
else
next=p1;
wz=ftell(fp);
//记录指针当前位置
fseek(fp,(wz-py-1),0);
//调整指针位置到行首
fscanf(fp,"
%s%s%s%s%s%s"
&
p1->
que,&
answer1,&
answer2,&
answer3,&
answer4,&
ch1);
fseek(fp,wz+1,0);
//调整指针位置到行末
p1->
ture=ch1[0];
break;
//将数据装入内存后跳出循环
}while(!
feof(fp));
//文件结束跳出循环
fclose(fp);
returnn;
//返回题目总数n
}
voidexe1()
voidmain();
voidexe2();
intn,m=0,tm,i,t=0,f=0;
charans[2];
structtest*p1;
system("
cls"
printf("
请输入要答题数:
"
scanf("
%d"
n);
tm=zts(-1);
if(0>
n||n>
tm)
答题数应小于总数!
exe1();
for(i=0;
i<
n;
i++)//n为用户要答题数
do
m=rand();
//置随机数
}while(!
(0<
m&
m<
=tm));
//判断产生的随机数是否符合要求
zts(m);
p1=head;
//将zts开辟的结构体首地址赋给p1
\n第%d题:
i+1);
%s\n%s\n%s\n%s\n%s\n请输入答案:
p1->
que,p1->
answer1,p1->
answer2,p1->
answer3,p1->
answer4);
scanf("
%s"
ans);
if(toupper(ans[0])==p1->
ture)//判断用户输入答案是否正确
printf("
恭喜你答对了!
\n\n"
t++;
//回答正确统计
else
对不起,你答错了。
。
\n正确答案是:
%c\n\n"
ture);
f++;
//回答错误统计
p1=head;
head=p1->
next;
free(p1);
}while(p1!
=NULL);
//释放结构体占用内存
*******************************\n"
\n已完成测试!
\n共做%d道题:
%d错误,%d正确。
\n正确率:
%5.2f%%\n\n"
n,f,t,(float)t/n*100);
\n\n1.继续答题;
2.添加题目;
3.返回主菜单;
\n请选择:
i=0;
i);
if(i==1)
//继续答题
else
if(i==2)
exe2();
//添加题目
main();
//返回主菜单
voidexe2()//实现用户自主输入题目
intn;
a"
))==NULL)
p1=(structtest*)malloc(LEN);
//开辟内存空间
请输入题目:
que);
}while(p1->
que[0]=='
\0'
请输入选项A:
answer1);
answer1=='
请输入选项B:
answer2);
answer2=='
请输入选项C:
answer3);
answer3=='
请输入选项D:
answer4=='
请输入答案:
%c"
p1->
ture=toupper(p1->
ture!
A'
B'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单项 选择题 标准化 考试 系统 设计