| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1051 人关注过本帖
标题:小学数学测试程序,主函数代码分析
只看楼主 加入收藏
学初
Rank: 2
等 级:论坛游民
帖 子:11
专家分:27
注 册:2016-5-12
结帖率:100%
收藏
 问题点数:0 回复次数:0 
小学数学测试程序,主函数代码分析
//求大神教教怎么来写这个主函数,后面是几个功能函数。



 1、void welcome()//欢迎界面
    {
     printf("##################################################\n");
     printf("##################################################\n");
     printf("##################################################\n");
     printf("\n");
     printf("          欢迎使用该测验系统! \n");
     printf("     welcome to use the test system!\n");
     printf("\n");
     printf("##################################################\n");
     printf("##################################################\n");
     printf("##################################################\n");
     
}

2( 主菜单函数
    void mainMenu(FILE *fp) //主菜单
    {
     int i;
     printf("************************************************** \n");
     printf(" 浏览菜单\n");
     printf("************************************************** \n");
     printf("------------------------------------------\n");
     printf(" 1.输入个人信息\n" );
     printf("------------------------------------------\n");
     printf(" 2.开始测验\n" );
     printf("------------------------------------------\n");
     printf(" 3.查看测验结果\n");
     printf("------------------------------------------\n");
     printf(" 0.退出\n");
     printf("------------------------------------------\n");
     printf("请选择功能...\n");
     scanf("%d",&i); //输入要选择的功能
     while(i)
     {
     while (!(i>=0 && i<=3)) //当超出功能范围时,提示输入错误
     {
     printf("超出功能范围,请重新选择(0-3)...\n");
     scanf("%d",&i);
     }
     switch (i) //语句选择执行功能
     {
     case 1:
     input(fp); //调用输入学生信息函数
     mainMenu(fp);
     break;
     case 2:
     startTest(fp);//调用开始测验函数
     mainMenu(fp);
     break;
     case 3:
     showResult();//调用输出测验结果信息函数
     mainMenu(fp);
     case 0:
     exit(0); //退出系统
     break;
     }
     }
    }







3( 测试前须知函数
    void testNotice() //测试须知
    {
     printf("==============测试须知================\n");
     printf("在开始测验前请保证已经输入你的姓名和年龄等信息\n");
     printf("考试结束后就可以马上看到正确答案、得分等信息\n");
     printf("祝你考试愉快~\n");
     printf("======================================\n");
     printf("本次测试信息:\n");
     printf("*无时间限制\n");
     printf("*测试范围:1~100之间的运算数进行加、减、乘或除中的某一
    种运算\n");
     printf("*题目数:10题\n");
     printf("*题目类型:混合运算");
     printf("\n准备好了吗?回车键进入考试\n");
     getchar();
     getchar();
    }



4( 输入学生信息函数
    void input(FILE *fp) //输入学生信息
    {
     struct Student stu;
     printf("请输入个人信息:姓名 年龄\n");
     printf("姓名:");
     scanf("%s",&stu.name);
     printf("年龄:");
     scanf("%d",&stu.age);
     printf("\n");
     Sleep(1200);
     system("cls");
     //将学生信息等写入文件:
     fp=fopen("用户测试结果信息.txt","a+");
     if((fp=fopen("用户测试结果信息.txt","a+"))==NULL)
     {
     printf("不能正常打开文件");
     exit(0);
     }
     fprintf(fp,"姓名:%s 年龄:%d\n",stu.name,stu.age);//将学生姓名,
    年龄写入文件
     fclose(fp);
    }



5( 开始测验函数
    void startTest(FILE *fp) //开始测验
    {
     struct Student stu;
     int i,a,b,result;
     char c;
     struct Test t;
     stu.rights=0;
     srand((unsigned)time(NULL)); //初始化随机数,如果没有此语句,则每
    次运行程序时的随机数是一样的
     testNotice(); //在测试前显示测试须知内容
     system("cls"); //清屏,一下开始测试
     for(i=0;i<10;i++)
     {
     a = rand()%100+1;//产生随机数a,b
     b = rand()%100+1;
     switch(rand()%4)
     {
     case 0:
     c='+';
     t.trueAns[i]=a + b; //把正确答案存到trueAns[]数组中
     sprintf(t.test[i],"%d+%d=%d",a,b,t.trueAns[i]); //把测验
    的题目及标准答案存入数组test[][]中
     break;
     case 1:
     c='-';
     while(a-b<0)//保证两数相减大于0
     {
     a = rand()%100+1;
     b = rand()%100+1;
     }
     t.trueAns[i]=a - b;
     sprintf(t.test[i], "%d-%d=%d", a,b,t.trueAns[i]);
     break;
     case 2:
     c='*';
     t.trueAns[i]=a * b;
     sprintf(t.test[i], "%d*%d=%d", a,b,t.trueAns[i]);
     break;
     case 3:
     c='/';
     b=rand()%10+1;//产生随机数b
     while(b==0) //保证除数b不能为0
     b=rand()%10+1;
     a=b*int(rand()%10+1); // 保证a/b能除清
     t.trueAns[i]=a / b;
     sprintf(t.test[i], "%d/%d=%d", a,b,t.trueAns[i]);
     break;
     default:
     printf("错误!");
     }
     printf("%d%c%d=\n",a,c,b);
     printf("请输入计算结果:");
     scanf("%d",&result);
     stu.ans[i]=result;//把学生给出的结果存入数组ans[]中
     if(stu.ans[i]==t.trueAns[i]) //统计学生答对的题数
     {
     stu.rights++;
     }
     }
     stu.score=10*stu.rights;//计算学生总成绩
     printf("\n你的最后得分为:%d\n",stu.score);
     getTips(stu.score);//根据成绩给出得分
     Sleep(2000);
     system("cls"); //清屏
     //将测试结果等信息写入文件:
     fprintf(fp,"\n你本次练习统计如下:\n做对了%d题\n得
    分:%d\n",stu.rights,stu.score);
     fprintf(fp,"你的答案依次为:");
     for(i=0;i<10;i++)
     fprintf(fp,"%d ",stu.ans[i]); //将学生的答案写入文件
     fprintf(fp,"\n本次测验题目及答案为:\n");
     for(i=0;i<10;i++)
     fprintf(fp,"%s\n",t.test[i]); //将测验题目写入文件
     fclose(fp);
    }



6( 显示学生测验结果信息函数
    void showResult()//显示测试结果函数
    {
     printf("\n本次你的测验结果如下:\n");
     FILE *fp;
     fp=fopen("用户测试结果信息.txt","a+");
     if((fp=fopen("用户测试结果信息.txt","a+"))==NULL)
     {
     printf("不能正常打开文件");
     exit(0);
     }
     char ch;
     ch=fgetc(fp);//文件开头字符
     while(ch!=EOF)//当文件没有到尾时,一直循环
     {
     putchar(ch);//输出字符
     ch=fgetc(fp);
     }
     fclose(fp);
    }


7( 根据测试得分给出评价函数
    void getTips(int score) //根据测试得分给出评价
    {
     printf("小贴士:");
     if (score<30)
     printf("做的太差了点吧,要加油啦~\n");
     if (score>=30 && score<50)
     printf("离及格还有段距离~多练练哦\n");
     if (score>=50 && score<60)
     printf("不会吧~差点就及格啦~气的话就努力~\n");
     if (score>=60 && score<90)
     printf("做的不错,继续努力~\n");
     if (score>=90)
     printf("做的太棒了~\n");
    }

搜索更多相关主题的帖子: system 小学数学 welcome 
2016-09-24 20:21
快速回复:小学数学测试程序,主函数代码分析
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059524 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved