2301_79993279 2024-03-06 08:25 采纳率: 0%
浏览 5

多项选择题标准化考试系统设计

多项选择题标准化考试系统设计\n设计一个多项选择题标准化考试系统,该系统要求能自动组卷和评分。教师可以添加题库,题库包括题干、四个备选答案和正确答案。完成自动组卷。学生选择试卷并进行答题,答题结束后自动给出成绩。教师可查看学生成绩。主要功能包括:\n一级菜单:按教师、学生两个角色登录\n教师二级菜单:\n(1)试题录入:增加试题到试题库中。\n(2)用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)。\n(3)显示学生成绩列表\n学生二级菜单:\n(1)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)。\n(2)答题:用户可实现输入自己的答案。\n(3)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。

  • 写回答

5条回答 默认 最新

  • 百锦再@新空间代码工作室 全栈领域优质创作者 2024-03-06 08:26
    关注

    #include <
    stdio.h>
    #include <
    stdlib.h>
    #include <
    string.h>

    // 结构体定义typedef struct {char question[100];
    char choices[4][50];
    int answer;
    } Question;

    // 函数声明void addQuestion(Question *questionBank, int *numQuestions);
    void saveQuestionBank(Question *questionBank, int numQuestions);
    void extractQuestions(Question *questionBank, int numQuestions, int numExtracted);
    void answerQuestions(Question *questionBank, int numExtracted);

    int main() {int role;
    Question questionBank[100];
    int numQuestions = 0;
    printf("
    Enter role (1 for teacher, 2 for student):"
    );
    scanf("
    %d"
    , &
    role);
    if (role == 1) {addQuestion(questionBank, &
    numQuestions);
    saveQuestionBank(questionBank, numQuestions);
    } else if (role == 2) {int numExtracted;
    printf("
    Enter number of questions to extract:"
    );
    scanf("
    %d"
    , &
    numExtracted);
    extractQuestions(questionBank, numQuestions, numExtracted);
    answerQuestions(questionBank, numExtracted);
    } else {printf("
    Invalid role selected"
    );
    }return 0;
    }
    // 添加试题到试题库void addQuestion(Question *questionBank, int *numQuestions) {printf("
    Enter question:"
    );
    getchar();
    fgets(questionBank[*numQuestions].question, sizeof(questionBank[*numQuestions].question), stdin);
    printf("
    Enter choices A, B, C, D:"
    );
    for (int i = 0;
    i <
    4;
    i++) {fgets(questionBank[*numQuestions].choices[i], sizeof(questionBank[*numQuestions].choices[i]), stdin);
    }printf("
    Enter correct answer (1 for A, 2 for B, 3 for C, 4 for D):"
    );
    scanf("
    %d"
    , &
    questionBank[*numQuestions].answer);
    (*numQuestions)++;
    }
    // 保存试题库到文件void saveQuestionBank(Question *questionBank, int numQuestions) {FILE *file = fopen("
    question_bank.txt"
    , "
    w"
    );
    for (int i = 0;
    i <
    numQuestions;
    i++) {fprintf(file, "
    %s"
    , questionBank[i].question);
    for (int j = 0;
    j <
    4;
    j++) {fprintf(file, "
    %s"
    , questionBank[i].choices[j]);
    }fprintf(file, "
    %d"
    , questionBank[i].answer);
    }fclose(file);
    }
    // 随机抽取试题void extractQuestions(Question *questionBank, int numQuestions, int numExtracted) {for (int i = 0;
    i <
    numExtracted;
    i++) {int randomIndex = rand() % numQuestions;
    printf("
    %s "
    , questionBank[randomIndex].question);
    for (int j = 0;
    j <
    4;
    j++) {printf("
    %c. %s"
    , 'A' + j, questionBank[randomIndex].choices[j]);
    }}}
    // 答题并判卷void answerQuestions(Question *questionBank, int numExtracted) {int score = 0;
    for (int i = 0;
    i <
    numExtracted;
    i++) {int userAnswer;
    printf("
    Enter your answer for question %d:"
    , i+1);
    scanf("
    %d"
    , &
    userAnswer);
    if (userAnswer == questionBank[i].answer) {score++;
    }}printf("
    Your score is %d/%d "
    , score, numExtracted);
    }

    有问题你别着急,评论留言都可以,看到马上就回复,尽量及时补充齐
    评论

报告相同问题?

问题事件

  • 创建了问题 3月6日

悬赏问题

  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法