C语言利用结构设计考试系统

(1)可以录入试卷基本信息,并且录入选择题的题干、选项和答案,可以录入多题,并允许 查看和删除等操作; (2)考试的时候,考生先录入学号和姓名,并开始作答案,答题结束后,显示考生的成绩和 各题的答案,允许多位考生作答; (3)考试结束后,可以进行相关考试成绩的统计分析,比较打印所有考生的成绩单,平均分、 最高或最低分等; (4)一个试卷中,实现多种题型,比如再增加判断题和多选题等;

这里有可以录入试题的代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
//最多题目数
#define MAXN 100
struct que
{ 
    char a[100]; 
    char b[100]; 
    char c[100]; 
    char d[100]; 
    char q[100]; 
    char answer[2];
}q[100];
void add()//增加题目
{ 
    FILE *fp=fopen("file08.txt","a+"); 
    que f; 
    printf("请输入题目\n"); 
    scanf("%s",f.q); 
    printf("请输入A选项\n"); 
    scanf("%s",f.a);
    printf("请输入B选项\n"); 
    scanf("%s",f.b); 
    printf("请输入C选项\n"); 
    scanf("%s",f.c); 
    printf("请输入D选项\n"); 
    scanf("%s",f.d); 
    printf("请输入正确答案\n"); 
    scanf("%s",f.answer); 
    fprintf(fp,"%s %s %s %s %s %s\n",f.q,f.a,f.b,f.c,f.d,f.answer); 
    fclose(fp);
}
void exam()
{
    que ex[MAXN]; 
    int n=0; 
    FILE *fp=fopen("file08.txt","a+"); 
    char arr[100];
    while (!feof(fp))
    { 
        fscanf(fp,"%s %s %s %s %s %s\n",ex[n].q,ex[n].a,ex[n].b,ex[n].c,ex[n].d,ex[n].answer);
        if(ex[n].q[0]=='\0' || ex[n].q[0]=='\n' ) //避免读取空行
            continue;
        else
            n++;
    }
    int sum=0; 
    char c[10]; 
    if(n<5) 
        printf("题目不足5题\n"); 
    else
    {
        printf("当前共有%d道题,请输入你需要的题目数:",n);
        int m;
        scanf("%d",&m);
        getchar();
        for(int i=0;i<m;i++)
        { 
            int index = rand()%n;//生成0-n的随机数
            printf("%s( )\nA %s B %s C %s D %s\n",ex[index].q,ex[index].a,ex[index].b,ex[index].c,ex[index].d);
            printf("你的答案是"); 
            scanf("%s",c);  getchar();//接收回车符
            if(c[0]==ex[index].answer[0]) 
                sum+=20;  //这里的分数根据题目数调整
        } 
        printf("你的得分是:%d分\n",sum); 
    }
}
int main()
{ 
    char userName[30]; 
    char passWord[30]; 
    char userName1[30]; 
    char passWord1[30]; 
    srand((unsigned)time(NULL));//随机种子放在main函数中即可
    system("color FD");
    printf("\n\n\n\n\n\n");
    printf("================================================================\n");
    printf("===========================考试系统=============================\n"); 
    printf("================================================================\n"); 
    system("cls"); 
    printf("================================================================\n"); 
    printf("===========================用户注册=============================\n"); 
    printf("================================================================\n"); 
    printf("\n\n\n"); 
    printf("欢迎使用本系统!首先请您先完成用户注册:)\n"); 
    printf("用户名:"); 
    scanf("%s", userName);  getchar();//接收回车
    printf("密码:"); 
    scanf("%s",passWord); getchar();//接收回车
    printf("注册成功,您可以登录本系统!"); 
    system("cls");
    while(1)
    { 
        printf("欢迎使用本系统!请您完成登录操作:)\n");
        printf("用户名:"); 
        scanf("%s",userName1); 
        printf("密码:");
        scanf("%s", passWord1); 
        getchar();
        if (strcmp(userName, userName1) == 0 && strcmp(passWord, passWord1) == 0) 
        { 
            printf("欢迎使用本系统!\n"); 
            break; 
        } 
        else 
        { 
            printf("您输入的账户名和密码不正确,请重新输入!\n"); 
            system("cls"); 
        } 
    } 
    int num; 
    printf("----------欢迎使用客观题考试系统-------------\n");
    printf("---输入1增加试题,输入2进行考试,其他键退出---\n"); 
    while(scanf("%d",&num))
    { 
        if(num==1) 
            add(); 
        else if(num==2)
            exam(); 
        else
        { 
            break; 
        } 
        printf("输入1增加试题,输入2进行考试,其他键退出\n"); 
    } 
    return 0;
}

//参考自问答