用C语言当中的结构体知识,建立学生结构体Stu,对应的属性有name(姓名),id(学号),score(分数)。请为这些属性分配好合适的数据类型,并定义一个能容纳50个的Stu结构体数组且制作一个学生管理系统
时间: 2023-09-21 22:08:14 浏览: 159
C语言利用结构体数组实现学生成绩管理系统
5星 · 资源好评率100%
好的,以下是一个基本的学生管理系统的实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_NUM 50
#define MAX_NAME_LENGTH 20
typedef struct {
char name[MAX_NAME_LENGTH];
int id;
int score;
} Stu;
Stu students[MAX_STUDENT_NUM];
int student_count = 0;
void add_student() {
if (student_count >= MAX_STUDENT_NUM) {
printf("Error: No space left.\n");
return;
}
Stu stu;
printf("Enter student name: ");
scanf("%s", stu.name);
printf("Enter student ID: ");
scanf("%d", &stu.id);
printf("Enter student score: ");
scanf("%d", &stu.score);
students[student_count] = stu;
student_count++;
printf("New student added successfully.\n");
}
void list_students() {
for (int i = 0; i < student_count; i++) {
printf("Name: %s, ID: %d, Score: %d\n", students[i].name, students[i].id, students[i].score);
}
}
void find_student() {
int id;
printf("Enter student ID: ");
scanf("%d", &id);
for (int i = 0; i < student_count; i++) {
if (students[i].id == id) {
printf("Name: %s, ID: %d, Score: %d\n", students[i].name, students[i].id, students[i].score);
return;
}
}
printf("Student not found.\n");
}
void delete_student() {
int id;
printf("Enter student ID: ");
scanf("%d", &id);
for (int i = 0; i < student_count; i++) {
if (students[i].id == id) {
for (int j = i; j < student_count - 1; j++) {
students[j] = students[j+1];
}
student_count--;
printf("Student deleted successfully.\n");
return;
}
}
printf("Student not found.\n");
}
int main() {
while (1) {
printf("1. Add a student\n");
printf("2. List all students\n");
printf("3. Find a student\n");
printf("4. Delete a student\n");
printf("5. Quit\n");
int choice;
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1: add_student(); break;
case 2: list_students(); break;
case 3: find_student(); break;
case 4: delete_student(); break;
case 5: return 0;
default: printf("Invalid choice.\n");
}
printf("\n");
}
return 0;
}
```
以上代码中,我们定义了一个 `Stu` 结构体类型,包含了三个属性:`name`,`id`,`score`,分别对应学生的姓名、学号和分数。我们还定义了一个 `MAX_STUDENT_NUM` 常量,表示最多能存储的学生数量。
接着,我们使用一个 `students` 数组来存储所有学生的信息,同时记录当前已经存储的学生数量 `student_count`。
在 `add_student` 函数中,我们首先检查学生数量是否已经达到了上限,如果是,则提示错误信息并返回。否则,我们依次输入学生的姓名、学号和分数,并将这些信息存储到一个新的 `Stu` 结构体中,最后将这个结构体添加到 `students` 数组末尾,并将 `student_count` 加1。
在 `list_students` 函数中,我们遍历所有已存储的学生信息,并逐一打印出来。
在 `find_student` 函数中,我们首先输入要查找的学生的学号,然后遍历所有已存储的学生信息,如果找到了匹配的学生,则打印出该学生的信息并返回。如果遍历完所有学生后仍然没有找到,则打印出提示信息。
在 `delete_student` 函数中,我们首先输入要删除的学生的学号,然后遍历所有已存储的学生信息,如果找到了匹配的学生,则将其从 `students` 数组中删除,并将 `student_count` 减1。如果遍历完所有学生后仍然没有找到,则打印出提示信息。
最后,在 `main` 函数中,我们使用一个无限循环来不断显示菜单,并根据用户的选择调用相应的函数。如果用户选择退出,则退出整个程序。
阅读全文