学生随机抽号演讲计分系统实现逻辑框架

题目描述

(1) 设置本课程的学生总数

(2) 根据本次参与的学生总数,随机抽取一个还未汇报演讲的学生的学号。

(3) 每个学生汇报演讲完毕,输入该学生的得分(假设有5个评委,则需输入5个成绩)。

(4) 计算该选手的得分:去掉最高分和最低分,其余的分数求平均,并显示选手序号、姓名、得分。

(5) 输出参加比赛过的所有学生的成绩及当前排名。

(6) 对演讲过的学生作上标记,下次程序运行时不再抽取该学号。

(7) 每次退出程序时(不一定一次能进行完所有的学生的汇报,可以分多次进行),将学生的序号、姓名、成绩写入文件。

(8) 结束对学生成绩进行排序,显示,并按照一等奖10%、二等奖20%、三等奖30%的比例确定选手的获奖名次,并将结果写入文件保存。

拓展功能:赛前事先输入评委人数,设置选手姓名、序号,选手上场顺序由程序随机抽取,已经抽取过的选手信息在文件中做出标记,下次不再抽取。

其他更多方便用户使用的功能

代码框架

这是一个较为复杂的C语言程序,需要涉及到随机数生成、文件读写、数组操作和排序等操作。以下是一个简单的实现框架,你可以根据自己的需求进行完善:

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

#define MAX_STUDENTS 100
#define MAX_JUDGES 5

typedef struct {
    int id;
    char name[50];
    int reported; // 是否已经汇报演讲
    float score[MAX_JUDGES]; // 每个评委的成绩
    float final_score; // 最终得分
} Student;

void drawStudent(int totalStudents, Student students[]) {
    // 随机抽取一个还未汇报演讲的学生
    // 实现略
}

void reportScore(Student *student) {
    // 输入该学生的得分
    // 实现略
}

void calculateScore(Student *student) {
    // 计算该选手的得分
    // 实现略
}

void outputAllScores(int totalStudents, Student students[]) {
    // 输出参加比赛过的所有学生的成绩及当前排名
    // 实现略
}

void writeToFile(int totalStudents, Student students[]) {
    // 将学生的序号、姓名、成绩写入文件
    // 实现略
}

void sortStudents(int totalStudents, Student students[]) {
    // 结束对学生成绩进行排序,显示
    // 实现略
}

void determineAwards(int totalStudents, Student students[]) {
    // 按照一等奖10%、二等奖20%、三等奖30%的比例确定选手的获奖名次
    // 实现略
}

int main() {
    int totalStudents, totalJudges;
    printf("请输入本课程的学生总数:");
    scanf("%d", &totalStudents);

    // 初始化学生信息
    Student students[MAX_STUDENTS];
    // 实现略

    printf("请输入评委人数:");
    scanf("%d", &totalJudges);

    // 主循环
    int option = 0;
    while (option != 8) {
        printf("请选择操作:\n");
        printf("1. 随机抽取学生\n2. 输入学生成绩\n3. 计算学生成绩\n4. 输出所有学生成绩及排名\n5. 写入文件\n6. 学生成绩排序\n7. 确定获奖名次\n8. 退出\n");
        scanf("%d", &option);
        switch (option) {
            case 1:
                drawStudent(totalStudents, students);
                break;
            case 2:
                reportScore(&students[selectedStudentIndex]);
                break;
            case 3:
                calculateScore(&students[selectedStudentIndex]);
                break;
            case 4:
                outputAllScores(totalStudents, students);
                break;
            case 5:
                writeToFile(totalStudents, students);
                break;
            case 6:
                sortStudents(totalStudents, students);
                break;
            case 7:
                determineAwards(totalStudents, students);
                break;
            default:
                printf("输入错误,请重新选择。\n");
        }
    }

    return 0;
}

以上代码框架只是一个简单的实现示例,具体的功能实现需要你根据需求进行完善。希望能对你有所帮助!

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享