用C语言实现一个小学生口算及自测系统,实现自动出题,根据答题情况评分并记载入档案,并能根据成绩进行排 20
试题管理:口算自测的题型及范围可以由用户设定,题目可以预先存放在文件中,或调用随机函数自动产生。
答题管理:需要设定最高答题时间及题目条数,对所给答案立即给出正确或错误的反馈,在答题过程中有剩余时间及所剩题数等提示,结束后有得分及排名提示。对答题人每次答题情况有记录,也可以选择以最好成绩方式只保留一项记录。
人员管理:管理员可以添加、删除、修改答题人的基本信息;答题人自己可以申请加入系统,只能修改、查询自己的信息。
成绩管理:可以对学生的成绩全面管理,给出总排名,允许学生自己查询自己的成绩,而管理可以根据查询所有人的成绩及排名情况。
题库管理:题库增删改时如何保证题目的唯一性,或者说唯一性如何确定
成绩计算:设计合理的计算规则,保证公平。
考试时间:如何设定学生的考试时间,计时的方法,在考试结束前一定的时间自动出现提示信息,考试时间一到,即使学生未提交也强行让其自动提交
管理员需要用密码进入系统,
其他扩展功能自拟并实现
数据结构的选择,定义怎样的数据结构来表示学生的信息,试卷的信息
文件的存储形式:可以用文本文件存储题目;对学生基本情况及答题记录分别用不同的文件存储,可以用二进制文件,也可以用文本文件
考试过程的实现:怎样随机产生试题,怎样保证题目的不重复性
排名的实现:综合答题的题量,正确性及所用的时间等因素
功能合理,界面友好,菜单方式选择实现
请发我邮箱
QQ565796466 展开
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//产生 [a,b] 区间的随机数
#define RANDOM(a,b) (rand()%((b+1)-(a)) + (a))
//产生 1-20 的整数,如要改变算术范围,则修改这个宏的参数即可
#define GEN_VALUE() RANDOM(1, 20)
int main()
{
int v1, v2, t, r, a;
char op, ops[] = { '+', '-', '*', '/' };
srand( (unsigned)time(NULL) ); //用当前时间初始化随机数种子
printf( "请答题 Ctrl+C 结束...\n" );
while(1)
{
v1 = GEN_VALUE(); //随机生成第1个算数
v2 = GEN_VALUE(); //随机生成第2个算数
op = ops[ RANDOM(0,3) ]; //随机决定是哪个运算符
//保证第1个算数大于第2个算数,如不需要,则把这个判断删除即可
if( v1<v2 )
{
t = v1;
v1 = v2;
v2 = t;
}
//如果运算符为除法,且v1不能被v2整除则重新生成题目
if( op=='/' && v1%v2!=0 )
continue;
//计算正确的结果
switch(op)
{
case '+': a=(float)v1+(float)v2; break;
case '-': a=(float)v1-(float)v2; break;
case '*': a=(float)v1*(float)v2; break;
case '/': a=(float)v1/(float)v2; break;
}
//输出算式
printf( "%d%c%d=", v1, op, v2 );
//等待输入结果
scanf( "%d", &r );
if( r == a )
printf( " 答对喽!\n\n" );
else
printf( " 答错喽!正确答案是:%d\n\n", a );
}
}
广告 您可能关注的内容 |