学生信息管理系统的设计与实现 (1)学生信息包括:学号(char num[10])、姓名(char name[10])、性别(char sex[10])、成绩(float score) (2)除了总的模块要求外,还需计算a.学生的平均成绩;b.不及格的人数和优秀(90分以上)人数。用c语言代码编写
时间: 2024-03-31 21:32:45 浏览: 99
以下是基于C语言实现学生信息管理系统的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生数据结构体
struct student {
char num[10];
char name[10];
char sex[10];
float score;
};
// 定义全局变量,用于记录学生总数、平均成绩、不及格人数和优秀人数
int total = 0;
float average_score = 0.0;
int fail_num = 0;
int excellent_num = 0;
// 定义函数,用于添加学生信息
void add_student(struct student *students) {
printf("请输入学生学号:");
scanf("%s", students[total].num);
printf("请输入学生姓名:");
scanf("%s", students[total].name);
printf("请输入学生性别:");
scanf("%s", students[total].sex);
printf("请输入学生成绩:");
scanf("%f", &students[total].score);
total++;
}
// 定义函数,用于显示所有学生信息
void show_all_students(struct student *students) {
printf("学号\t姓名\t性别\t成绩\n");
for (int i = 0; i < total; i++) {
printf("%s\t%s\t%s\t%.2f\n", students[i].num, students[i].name, students[i].sex, students[i].score);
}
}
// 定义函数,用于计算平均成绩、不及格人数和优秀人数
void calculate(struct student *students) {
float sum = 0.0;
for (int i = 0; i < total; i++) {
sum += students[i].score;
if (students[i].score < 60) {
fail_num++;
} else if (students[i].score >= 90) {
excellent_num++;
}
}
average_score = sum / total;
}
// 定义主函数
int main() {
// 动态分配内存,用于存储学生信息
struct student *students = (struct student*)malloc(sizeof(struct student) * 100);
while (1) {
printf("请选择操作:\n");
printf("1. 添加学生信息\n");
printf("2. 显示所有学生信息\n");
printf("3. 显示学生总数、平均成绩、不及格人数和优秀人数\n");
printf("4. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_student(students);
break;
case 2:
show_all_students(students);
break;
case 3:
calculate(students);
printf("学生总数:%d\n", total);
printf("学生平均成绩:%.2f\n", average_score);
printf("不及格人数:%d\n", fail_num);
printf("优秀人数:%d\n", excellent_num);
break;
case 4:
free(students);
exit(0);
default:
printf("输入无效,请重新选择操作。\n");
}
}
return 0;
}
```
在该程序中,我们定义了一个 `struct student` 结构体,用于存储学生的学号、姓名、性别和成绩信息。我们使用动态内存分配来存储学生信息,最多可以存储 100 个学生的信息。
在 `add_student` 函数中,我们通过 `scanf` 函数获取用户输入的学生信息,并将其存储到动态分配的内存中。在 `show_all_students` 函数中,我们遍历所有学生信息,并将其输出到控制台。在 `calculate` 函数中,我们遍历所有学生信息,计算出平均成绩、不及格人数和优秀人数。在主函数中,我们使用 `switch` 语句根据用户的选择来执行相应的操作。
该程序可以通过以下方式编译和运行:
```
gcc main.c -o main
./main
```
在运行程序后,您可以按照程序提示进行相应的操作,如添加学生信息、显示所有学生信息、显示学生总数、平均成绩、不及格人数和优秀人数。
阅读全文