嵌入式培训 学生信息录入系统

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

#define MAX_STUDENTS 5 // 最大学生人数
#define MAX_COURSES 5  // 每个学生的课程数
#define USERNAME "1" // 登录系统的用户名
#define PASSWORD "1"  // 登录系统的密码
#define MAX_LEN 20 // 用户名和密码的最大长度
#define NAME_LEN 30 // 学生名字的最大长度

// 计算并输出每门课程和每位学生的平均成绩
void calculateAverages(int scores[MAX_STUDENTS][MAX_COURSES], int numStudents, int numCourses, char names[MAX_STUDENTS][NAME_LEN]) {
    int courseTotals[MAX_COURSES] = { 0 }; // 每门课程的总成绩初始化为0

    // 遍历所有学生
    for (int i = 0; i < numStudents; ++i) {
        int studentTotal = 0; // 当前学生的总成绩初始化为0

        // 遍历每门课程
        for (int j = 0; j < numCourses; ++j) {
            studentTotal += scores[i][j]; // 计算当前学生的总成绩
            courseTotals[j] += scores[i][j]; // 计算每门课程的总成绩
        }

        // 输出当前学生的平均成绩
        printf("%s 的平均成绩: %.2f\n", names[i], studentTotal / (float)numCourses);
    }

    // 输出每门课程的平均成绩
    for (int j = 0; j < numCourses; ++j) {
        printf("课程 %d 的平均成绩: %.2f\n", j + 1, courseTotals[j] / (float)numStudents);
    }
}

// 用户登录验证
int login() {
    char username[MAX_LEN]; // 用于存储输入的用户名
    char password[MAX_LEN]; // 用于存储输入的密码

    // 提示用户输入用户名
    printf("请输入用户名: ");
    // 使用 scanf_s 读取用户名,限制长度为 MAX_LEN-1
    scanf_s("%19s", username, (unsigned)_countof(username));

    // 提示用户输入密码
    printf("请输入密码: ");
    // 使用 scanf_s 读取密码,限制长度为 MAX_LEN-1
    scanf_s("%19s", password, (unsigned)_countof(password));

    // 验证用户名和密码是否正确
    if (strcmp(username, USERNAME) == 0 && strcmp(password, PASSWORD) == 0) {
        return 1; // 登录成功
    }
    else {
        return 0; // 登录失败
    }
}

// 录入学生信息,包括名字、年龄和成绩
void inputStudentInfo(char names[MAX_STUDENTS][NAME_LEN], int ages[MAX_STUDENTS], int scores[MAX_STUDENTS][MAX_COURSES], int numStudents, int numCourses) {
    // 遍历所有学生
    for (int i = 0; i < numStudents; ++i) {
        // 提示输入当前学生的名字
        printf("请输入学生 %d 的名字: ", i + 1);
        // 使用 scanf_s 读取学生名字
        scanf_s("%29s", names[i], (unsigned)_countof(names[i]));

        // 提示输入当前学生的年龄
        printf("请输入学生 %d 的年龄: ", i + 1);
        // 使用 scanf_s 读取学生年龄
        scanf_s("%d", &ages[i]);

        // 遍历每门课程
        for (int j = 0; j < numCourses; ++j) {
            // 提示输入当前学生的当前课程成绩
            printf("请输入学生 %d 的课程 %d 成绩: ", i + 1, j + 1);
            // 使用 scanf_s 读取课程成绩
            scanf_s("%d", &scores[i][j]);
        }
    }
}

// 查询学生信息
void queryStudentInfo(char names[MAX_STUDENTS][NAME_LEN], int ages[MAX_STUDENTS], int scores[MAX_STUDENTS][MAX_COURSES], int numStudents, int numCourses) {
    // 遍历所有学生
    for (int i = 0; i < numStudents; ++i) {
        // 输出当前学生的名字和年龄
        printf("学生 %d 的名字: %s\n", i + 1, names[i]);
        printf("学生 %d 的年龄: %d\n", i + 1, ages[i]);

        // 遍历每门课程
        for (int j = 0; j < numCourses; ++j) {
            // 输出当前学生的当前课程成绩
            printf("课程 %d 成绩: %d\n", j + 1, scores[i][j]);
        }
    }
}

int main() {
    char names[MAX_STUDENTS][NAME_LEN]; // 存储每个学生的名字
    int ages[MAX_STUDENTS]; // 存储每个学生的年龄
    int scores[MAX_STUDENTS][MAX_COURSES]; // 存储每个学生的每门课程成绩

    // 登录系统
    if (!login()) {
        // 登录失败,输出提示信息
        printf("用户名或密码错误\n");
        return 1;
    }

    // 录入学生信息
    inputStudentInfo(names, ages, scores, MAX_STUDENTS, MAX_COURSES);

    // 查询学生信息
    printf("学生信息:\n");
    queryStudentInfo(names, ages, scores, MAX_STUDENTS, MAX_COURSES);

    // 计算并输出平均成绩
    printf("平均成绩:\n");
    calculateAverages(scores, MAX_STUDENTS, MAX_COURSES, names);

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值