用结构体实现学生管理的增减改查代码
时间: 2024-03-27 11:38:10 浏览: 7
好的,这里是用结构体实现学生管理的增删改查代码:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id;
char name[20];
int age;
float score;
} Student;
// 定义全局变量,存储学生信息和学生总数
Student students[100];
int count = 0;
// 添加学生
void addStudent() {
Student s;
printf("请输入学生的学号:");
scanf("%d", &s.id);
printf("请输入学生的姓名:");
scanf("%s", s.name);
printf("请输入学生的年龄:");
scanf("%d", &s.age);
printf("请输入学生的成绩:");
scanf("%f", &s.score);
students[count++] = s;
printf("添加成功!\n");
}
// 显示学生
void showStudent(Student s) {
printf("学号:%d,姓名:%s,年龄:%d,成绩:%.1f\n", s.id, s.name, s.age, s.score);
}
// 显示所有学生
void showAllStudents() {
if (count == 0) {
printf("没有学生信息!\n");
return;
}
printf("学号\t姓名\t年龄\t成绩\n");
for (int i = 0; i < count; i++) {
showStudent(students[i]);
}
}
// 查找学生
int findStudent(int id) {
for (int i = 0; i < count; i++) {
if (students[i].id == id) {
return i;//返回学生信息在数组中的下标
}
}
return -1;//表示没有找到该学生
}
// 删除学生
void deleteStudent() {
int id;
printf("请输入要删除的学生的学号:");
scanf("%d", &id);
int index = findStudent(id);
if (index == -1) {
printf("没有找到该学生!\n");
} else {
for (int i = index; i < count - 1; i++) {
students[i] = students[i + 1];//将删除的学生后面的学生前移
}
count--;
printf("删除成功!\n");
}
}
// 修改学生
void modifyStudent() {
int id;
printf("请输入要修改的学生的学号:");
scanf("%d", &id);
int index = findStudent(id);
if (index == -1) {
printf("没有找到该学生!\n");
} else {
Student s;
printf("请输入学生的姓名:");
scanf("%s", s.name);
printf("请输入学生的年龄:");
scanf("%d", &s.age);
printf("请输入学生的成绩:");
scanf("%f", &s.score);
students[index] = s;
printf("修改成功!\n");
}
}
int main() {
while (1) {
printf("请选择要执行的操作:\n");
printf("1. 添加学生\n");
printf("2. 显示所有学生\n");
printf("3. 删除学生\n");
printf("4. 修改学生\n");
printf("5. 退出程序\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent();
break;
case 2:
showAllStudents();
break;
case 3:
deleteStudent();
break;
case 4:
modifyStudent();
break;
case 5:
printf("程序已退出!\n");
return 0;
default:
printf("请选择正确的操作!\n");
break;
}
}
return 0;
}
```
这个代码实现了学生管理的增加、删除、修改和查找功能,通过结构体来存储学生的信息。