签到

06月21日
尚未签到

共有回帖数 0

    做月子

    等级:
    #include stdio.h
    #include conio.h
    #include stdlib.h
    #include time.h
    #include math.h
    #include "qipan.c"
    struct users{
     char id[20];                                 /*定义一个存放用户名,密码的结构体*/
     char password[20];
    };
    struct test{
      int i;
      int num1;                         /*定义一个结构体用来存放产生的数字和运算符号*/
      int num2;
      int type;

      };
    char username[20];                 /*定义一个全局变量用来存放用户的名称*/

    /*错误提示开始*/
    void error(char s[40]){
      window(13,10,40,15);
      textcolor(YELLOW);
      textbackground(RED);
      clrscr();
      gotoxy(2,5);
      cprintf("%s",s);
      window(14,10,39,11);
      textbackground(BLUE);
      textcolor(YELLOW);
      clrscr();
      gotoxy(10,1);
      cputs("error");
      getch();
    }
    /*错误提示结束*/


    /************开始界面*****************************************/
    int hello(){
       char i;
       clrscr();
       window(10,5,70,20);             /*画一个方框背景颜色是绿色*/
      textcolor(RED);
      textbackground(LIGHTGREEN);
      clrscr();

      gotoxy(5,5);
      cputs("1.login");
      gotoxy(5,6);
      cputs("2.reg");
      gotoxy(5,7);
      cputs("3.exit");
      gotoxy(5,3);
      textcolor(BLACK);
      cputs("wlcome to use version1.0");
      gotoxy(40,14);
      cputs("copyright weiber");
      gotoxy(5,9);
      textcolor(BLUE);
      cputs("input your choose:");
      gets(i);
      return(i);
    }
    /************开始界面结束*****************************************/

    /************注册界面开始***************************************/
    int login(){
       FILE *fp;
       char repassword[20];
     struct users user;
      window(10,5,70,20);             /*画一个方框背景颜色是绿色*/
      textcolor(RED);
      textbackground(LIGHTGREEN);
      clrscr();
      gotoxy(18,3);
      textcolor(BLACK);
      cputs("wolcome to use");
      gotoxy(10,6);
      textcolor(BLUE);
     cputs("input your id:");
      gotoxy(4,8);
     cputs("input your password:");
     gotoxy(3,10);
     cputs("again input password:");
        gotoxy(24,6);
       cscanf("%s",user.id);
          gotoxy(24,8);
     cscanf("%s",user.password);
      gotoxy(24,10);
     cscanf("%s",repassword);
     if(strcmp(user.password,repassword)==0)        /*如果正确的密码*/
     {
       fp=fopen("mima.txt","wb");
       fwrite(&user,sizeof(struct users),1,fp);
       fclose(fp);
       clrscr();
       gotoxy(20,5);
       cputs("congratulate");
       gotoxy(12,8);
       textcolor(RED);
       cputs("already logined press any key to go back");
       getch();
       return(1);
      }
      else         /*如果错误的密码*/
      {
        clrscr();
        gotoxy(23,5);
        cputs("error");
        gotoxy(12,11);
        textcolor(RED);
        error("the two password isn't equl");
        getch();
        return(0);
       }

    }
    /************注册界面结束***************************************/

    /************登陆的界面开始*************************************/
    int reg(){
      FILE *fp1;
       struct users user1;             /*定义的一个用来接收从文件里面id和Password的机构体变量*/
      char uid[20];
      char upass[20];
      window(10,5,70,20);             /*画一个方框背景颜色是绿色*/
      textcolor(RED);
     textbackground(LIGHTGREEN);
      clrscr();
      gotoxy(15,2);
      cputs("reg the ware");
      gotoxy(10,8);
      cputs("id:");

      gotoxy(4,9);
      cputs("password:");
      gotoxy(13,8);
         cscanf("%s",uid);           /*接收用户输入的id*/
      gotoxy(13,9);
      cscanf("%s",upass);            /*接收用户输入的密码*/

      fp1=fopen("mima.txt","rb");
      fread(&user1,sizeof(struct users),1,fp1);

      if(strcmp(user1.id,uid)==0&&strcmp(user1.password,upass)==0){
       strcpy(username,user1.id);
      return(1);
      }
      else{
      error("wrong id and password"); getch();
      return(0);
      }


    }
    /************登陆的界面结束********************************************/

    /************主菜单界面开始**********************************************/
    int welcome(){

       char a;
      window(10,5,70,20);                     /*画一个方框背景颜色是绿色*/
      textcolor(RED);
      textbackground(LIGHTGREEN);
      clrscr();
      cprintf("%s welcome you!!",username);
      gotoxy(24,2);
      cputs("Menun");
      gotoxy(8,5);
      textcolor(BLACK);
      cputs("1.");
      textcolor(BLUE);
      cputs("number test under 10(ten times a group)");
      gotoxy(8,7);                                                   /*产生的菜单*/
      textcolor(BLACK);
      cputs("2.");
      textcolor(BLUE);
      cputs("number test under 50(ten times a group)");
      gotoxy(8,9);
      textcolor(BLACK);
      cputs("3.");
      textcolor(BLUE);
      cputs("do the wrong before(ten times a group)");
      gotoxy(8,11);
      textcolor(BLACK);
      cputs("4.");
      textcolor(BLUE);
      cputs("play games");
      gotoxy(8,13);
      textcolor(BLACK);
      cputs("5.");
      textcolor(BLUE);
      cputs("exit the ware");
      gotoxy(8,15);
      textcolor(BLACK);
      cputs("input your choose:");
      gets(a);
      return(a);
    }
    /************主菜单界面结束**********************************************/

    /************产生随机数并运算******************************************/

    void test(int temp){
      struct test num;                  /*用来接收产生的数据的结构体变量*/
      int right=0,wrong=0;
      FILE *fp;                       /*用来保存错题的文件*/
      char result;
      int n=0,i;

      window(10,5,70,20);                     /*画一个方框背景颜色是绿色*/


      do{
          n=n+1;
       textcolor(RED);
      textbackground(LIGHTGREEN);
        clrscr();
      srand(time(NULL));
      num.num1=rand()%temp+1;
      num.num2=rand()%temp+1;                    /*产生数据*/
      num.type=rand()%4+1;
      gotoxy(5,10);
      cputs("result:");
      gotoxy(5,5);
      textcolor(BLUE);
      switch(num.type)
      {
        case 1: cprintf("%d+%d=",num.num1,num.num2);num.i=num.num1+num.num2;break;
        case 2: if(num.num1num.num2){i=num.num1;
                                      num.num1=num.num2;                              /*如果num1num2将两者交换,保证米有负数*/
                                      num.num2=i;}
                cprintf("%d-%d=",num.num1,num.num2);num.i=num.num1-num.num2;break;
        case 3: cprintf("%d*%d=",num.num1,num.num2);num.i=num.num1*num.num2;break;
        case 4: num.i=num.num1*num.num2;  i=num.num1; num.num1=num.i; num.i=i;
                cprintf("%d/%d=",num.num1,num.num2);num.i=num.num1/num.num2;break;        /*利用乘法的转换作除法保证答案为整数*/
        default: break;
      }
      gets(result);
      gotoxy(13,10);
      if(atoi(result)==num.i)
       {
        right=right+1;
        cprintf("right!");
        }
      if(atoi(result)!=num.i)
       {  wrong=wrong+1;                                                     /*验证数据的准确性,如不正确就保存进文件*/
         cprintf("wrong!");
         fp=fopen("wrong.txt","ab");
         fwrite(&num,sizeof(struct test),1,fp);
         fclose(fp);
       }

         getchar();

      }while(n!=10);

      window(13,10,40,15);
      textcolor(YELLOW);
      textbackground(RED);
      clrscr();
      gotoxy(2,5);
      cprintf("right:%d  wrong:%d",right,wrong);                  /*给出10次的正确与错误的*/
      window(14,10,39,11);
      textbackground(BLUE);
      textcolor(YELLOW);
      clrscr();
      gotoxy(10,1);
      cputs("result");
      getch();getch();
    }
    /************产生随机数并运算结束******************************************/


    /*************错题重做开始********************************************/

    void dowrong(){
       FILE *fp;
       char result;
       struct test num;
       int right=0,wrong=0;
       int n=0,i;
       fp=fopen("wrong.txt","rb");

       window(10,5,70,20);
       srand(time(NULL));
            i=rand()%2;
            if(i==1)i=2;
       do{                     /*画一个方框背景颜色是绿色*/

       fseek(fp,n*sizeof(struct test),i);
       fread(&num,sizeof(struct test),1,fp);
       n=n+1;
       textcolor(RED);
       textbackground(LIGHTGREEN);
       clrscr();

       gotoxy(5,10);
      cputs("result:");
      gotoxy(5,5);
      textcolor(BLUE);
       switch(num.type)
      {
        case 1: cprintf("%d+%d=",num.num1,num.num2);break;
        case 2: cprintf("%d-%d=",num.num1,num.num2);num.i=num.num1-num.num2;break;
        case 3: cprintf("%d*%d=",num.num1,num.num2);num.i=num.num1*num.num2;break;
        case 4: cprintf("%d/%d=",num.num1,num.num2);num.i=num.num1/num.num2;break;
        default: break;
      }

      gets(result);                                                                    /*接收用户的输入*/

      gotoxy(13,10);
      if(atoi(result)==num.i){
        cprintf("right!");                                                             /*判断是否正确*/
           right=right+1;
      }
      else{
         cprintf("wrong!");
          wrong=wrong+1;
      }
      getch();

     }while(n!=10);     /*10次为一轮*/
     window(13,10,40,15);
      textcolor(YELLOW);
      textbackground(RED);
      clrscr();
      gotoxy(2,5);
      cprintf("right:%d  wrong:%d",right,wrong);        /*给出10次的正确与错误的*/
      window(14,10,39,11);
      textbackground(BLUE);
      textcolor(YELLOW);
      clrscr();
      gotoxy(10,1);
      cputs("result");
      getch();

      }



    /*************错题重做结束********************************************/




    /***********main函数开始**********************************************/
    void main(){
     int i,j,k;
     do{
        j=atoi(hello());
        switch(j){
          case 1:i=login();break;             /*i来接受返回的值0为注册失败*/
          case 2:k=reg();break;                 /*j来接受返回的值0为登陆失败*/
          case 3: exit(0);break;
          default: error("no choose"); break;
        }
        }while(k!=1||j!=1&&j!=2&&j!=3);                    /*如果选择的结果超出界限或者注册,登陆失败,从新返回菜单界面*/

       ;
     do{                       /*如果登陆成功则进行以下的操作*/
     i=atoi(welcome());
     switch(i){
       case 1: test(10);break;
       case 2: test(50);break;
       case 3: dowrong();break;
       case 4: break;
       case 5: exit(0);
       default: error("no choose");break;
     }
     }while(i!=4);           /*调用欢迎界面*/
     getchar();getchar();
    }
    /***********main函数结束**********************************************/

    1、 小学数学学习系统  
    [问题描述]
    具有随机出题、自动评分、查看正确答案、错题重做等功能的测试系统。
    [设计要求]
    (1) 设计程序运行界面
    (2) 用户登录功能
    (3) 能用菜单选择测试系统的各功能

    楼主 2016-02-25 11:06 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知