本文主要是介绍小学生测验管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<stdio.h>
#include<stdlib.h>
#include<time.h> //随机取数用到它
struct Student
{
char name[15];
int number;
int age;
int score;
}stu; //定义名为stu的结构体
void meun() //主界面
{
printf("****************************************\n");
printf("***********小学数学测试软件*************\n");
printf(" \n");
printf(" 一 二 年 级 测 试 题 \n");
printf(" \n");
printf("**** [1] 进入测试 [0] 退出测试 ****\n");
printf("****************************************\n");
}
/*编译成功进入下图测试界面,选择1,按要求输入学号,姓名,年龄后进入测试界面*/
void ceshi() //测试界面
{
printf("*********************************************\n");
printf("***********小学数学测试软件*************\n");
printf(" \n");
printf(" [1]加法测试 [2]减法测试 \n");
printf(" \n");
printf("**** [3]混合测试 [0]退出测试 **** \n");
printf("****************************************\n");
/*在测试界面可根据需要输入数字进入相关界面*/
}
int c,d,a,b,q; //定义全局变量 a,b为随机数,c表示加法,d表示减法,q控制返回测试界面
void add()
{
system("cls"); //清屏
printf("*******************************************************************\n");
printf("************************* -= 加法测试 -= ***********************\n");
printf("*******************************************************************\n");
int i,k,t;
stu.score=0;
srand(time(NULL));//用当前时间,设置种子
for(i=0;i<10;) //当0<c<50时,i++
{
a=rand()%50;
b=rand()%50;
c=a+b;
if(c>0&&c<50)
{
i++;
printf("第%d题:%d+%d=",i,a,b);
for(t=3;t>0;t--)
{
scanf("%d",&k);
if(k==c)
{
switch(t)
{
case 1: stu.score+=5;break;
case 2: stu.score+=7;break;
case 3: stu.score+=10;break;
}
break;
}
else
{
printf("答案错误,你还有%d次机会\n",t-1);
if((t-1)==0) printf("正确答案:%d\n",c);
}
}
}
}
printf("你的总成绩为%d分\n",stu.score);
}
void sub()
{
system("cls");
printf("*******************************************************************\n");
printf("************************* -= 减法测试 -= **************************\n");
printf("*******************************************************************\n");
int i,k,t;
stu.score=0;
srand(time(NULL));//用当前时间,设置种子
for(i=0;i<10;)
{
a=rand()%50;
b=rand()%50;
d=a-b;
if(d>0&&d<50)
{
i++;
printf("第%d题:%d-%d=",i,a,b);
for(t=3;t>0;t--)
{
scanf("%d",&k);
if(k==d)
{
switch(t)
{
case 1: stu.score+=5;break;
case 2: stu.score+=7;break;
case 3: stu.score+=10;break;
}
break;
}
else
{
printf("答案错误,你还有%d次机会\n",t-1);
if((t-1)==0) printf("正确答案:%d\n",d);
}
}
}
}
printf("你的总成绩为%d分\n",stu.score);
}
void mix()
{
system("cls");
printf("*******************************************************************\n");
printf("************************* -= 加减测试 -= **************************\n");
printf("*******************************************************************\n");
int i,k,t,p;
srand(time(NULL));//用当前时间,设置种子
stu.score=0;
for(p=0;p<10;p++)
{
i=rand()%2;
switch(i)
{
case 0:
while(1)
{
a=rand()%50;
b=rand()%50;
c=a+b;
if(c>0&&c<50)
{
printf("第%d题:%d+%d=",p+1,a,b);
for(t=3;t>0;t--)
{
scanf("%d",&k);
if(k==c)
{
switch(t)
{
case 1: stu.score+=5;break;
case 2: stu.score+=7;break;
case 3: stu.score+=10;break;
}
break;
}
else
{
printf("答案错误,你还有%d次机会\n",t-1);
if((t-1)==0) printf("正确答案:%d\n",c);
}
}
break;
}
}break;
case 1:
while(1)
{
a=rand()%50;
b=rand()%50;
d=a-b;
if(d>0&&d<50)
{
printf("第%d题:%d-%d=",p+1,a,b);
for(t=3;t>0;t--)
{
scanf("%d",&k);
if(k==d)
{
switch(t)
{
case 1: stu.score+=5;break;
case 2: stu.score+=7;break;
case 3: stu.score+=10;break;
}
break;
}
else
{
printf("答案错误,你还有%d次机会\n",t-1);
if((t-1)==0) printf("正确答案:%d\n",d);
}
}
break;
}
}break;
}
}
printf("你的总成绩为%d分\n",stu.score);
}
void dengji()
{
if(stu.score>=90)
printf("SMART\n");
else if(stu.score>=80) printf("GOOD\n");
else if(stu.score>=70) printf("OK\n");
else if(stu.score>=60) printf("PASS\n");
else printf("TRY AGAIN\n");
printf("按 0 返回测试界面:");
scanf("%d",&q);
}
void save()
{
FILE *fp;
if((fp=fopen("pupil.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
if(fwrite(&stu,sizeof(struct Student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void load()
{
FILE *fp;
if((fp=fopen("pupil.dat","rb"))==NULL)
{
printf("cannot open infile\n");
return;
}
if(fread(&stu,sizeof(struct Student),1,fp)!=1)
{
if(feof(fp))
{
fclose(fp);
return;
}
printf("file read error\n");
}
fclose(fp);
}
int main()
{
int z,r;
load();
meun();
while(1)
{
printf("请选择:");
scanf("%d",&z);
if(z>1||z<0)
{
printf("没有该选项,请重新输入!\n");
continue;
}
switch(z)
{
case 1:
printf("请输入学号:");
scanf("%d",&stu.number);
printf("请输入你的姓名:");
scanf("%s",stu.name);
printf("请输入你的年龄:");
scanf("%d",&stu.age);
B:system("cls");
ceshi();
while(1)
{
printf("请选择测试内容:");
scanf("%d",&r);
if(r>3||r<0)
{
printf("没有该选项,请重新输入!\n");
continue;
}
switch(r)
{
case 1:add();save();dengji();if(q==0) goto B;;
case 2:sub();save();dengji();if(q==0) goto B;
case 3:mix();save();dengji();if(q==0) goto B;
case 0:exit(0);break;
}
}
break;
case 0:exit(0);break;
}
}
return 0;
}
这篇关于小学生测验管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!