C语言大作业答题系统

这是一个选择题答题程序,分为三个模块,第一个模块是登陆,第二个模块是答题,第三个模块是查看成绩.

1.登录模块

这个模块主要是让用户登录到这个程序里面,使用全局变量记录用户信息在答题时输出用户信息,完成登录时,才可以开始下一步,缺点是没有验证功能,只能记录当前用户的答题记录。

1.1运行界面:

 1.2代码:

void login()
{

    flag=1;
    printf("\n\t\t\t注:年龄请输入数字\n");
    printf("\t\t\t请输入你的姓名:");
    scanf("%s",name);
    printf("\t\t\t请输入你的性别:");
    scanf("%s",sex);
    printf("\t\t\t请输入你的年龄:");
    scanf("%d",&age);
    printf("\t\t\t请输入你的学校:");
    scanf("%s",sch);
}

2.答题模块

这个功能模块主要是用于答题,它会从题库中随机抽取20个题目,完成一道题目之后才会输出下一道题目,当输入的答案正确时会出现一个勾提醒你答对了,同时答案兼容大小写,回答错误时会用一个叉来提示你答错了,答完这一题后,会继续从题库中抽取一个随机但是不重复的题目继续答题。当完成了下一题后,会继续输出,如果已经答完20道题,它会退出答题系统,可以在查看成绩模块查询成绩。

2.1运行界面

 

2.2代码

2.2.1随机抽题

void random_question()
{
    int x,i;
    int a[20];
    memset(a,-1,sizeof(a));
    srand((unsigned)time(NULL));
    file_read();
    for(i=0;i<20;i++){
       x=rand()%20;

       while(judge_repeat(a,x))x=rand()%20;
       a[i]=x;
       random[i]=arr[x];
    }
}

2.2.2答案兼容

void changestr(char *s)
{
     int i;
     for(i=0;s[i]!='\0';i++){
          if(s[i]>='A'&&s[i]<='D'||s[i]>='a'&&s[i]<='d'){
                s[0]=s[i];
                break;
        }
    }
        switch (s[0])
        {
            case 'a':
                s[0]='A';break;
            case 'b':
                s[0]='B';break;
            case 'c':
                s[0]='C';break;
            case 'd':
                s[0]='D';break;
        }
    s[1]='\0';
}

2.2.3题目不重复

int judge_repeat(int *a,int x)
{
    int i;
    for(i=0;i<20;i++)
        if(a[i]==x)return 1;
    return 0;
}

3.查看成绩模块

这个模块主要是查看成绩的功能,题目按顺序输出,每题都有正误,最后两行总结本次答题情况,一行为成绩,一行为鼓励的话.

3.1运行界面

3.2代码

void find_scores()
{

    int i;


    for(i=0;i<20;i++){
        printf("\t\t\t第%d题\n",i+1);
        printf("\t\t\t");
        printf("%s",random[i].question);
        printf("\t\t\t");
        printf("%s",random[i].choice);
        if(situation[i]==1){
             printf("\t\t\t( √ )\n");
             printf("\t\t\t你的答案:%s\n",in_answer[i]);
        }
        else if(situation[i]==0){
            printf("\t\t\t( × )\n");
            printf("\t\t\t你的答案:%s\n",in_answer[i]);
        }
            printf("\t\t\t");
            printf("正确答案:%s\n\n",random[i].answer);
    }

    int k=scores/10;
    printf("\t\t\t你的得分为:%d\n",scores);
    switch(k)
    {
        case 0:
        case 2:
        case 4:
            printf("\t\t\t");
            printf("很遗憾!你没有及格!别气馁,下次加油哦!\n");
            break;
        case 6:
            printf("\t\t\t");
            printf("恭喜你!及格了!但还要继续努力哦!\n");
            break;
        case 8:
            printf("\t\t\t");
            printf("你取得的良好的成绩!继续向满分冲刺吧!\n");
            break;
        case 10:
            printf("\t\t\t");
            printf("你实在太优秀了!\n");
            break;
    }
}

4.总结与体会

从拿到题目到完成整个编程,从理论到实践,学到了很多很多的的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次大作业使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值