#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;
}
嵌入式培训 学生信息录入系统
最新推荐文章于 2024-11-11 22:10:43 发布