您的位置:首页 > 其它

小学生测验管理

2016-01-20 21:09 155 查看
 

#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;

}

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息