学生成绩管理系统
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
#define MAX_NAME_LENGTH 50
typedef struct {
int id;
char name[MAX_NAME_LENGTH];
float score;
} Student;
Student students[MAX_STUDENTS];
int numStudents = 0;
void addStudent();
void displayStudents();
void searchStudent();
void deleteStudent();
int main() {
int choice;
do {
printf("\n学生成绩管理系统\n");
printf("1. 添加学生\n");
printf("2. 显示学生信息\n");
printf("3. 查找学生\n");
printf("4. 删除学生\n");
printf("5. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent();
break;
case 2:
displayStudents();
break;
case 3:
searchStudent();
break;
case 4:
deleteStudent();
break;
case 5:
printf("退出程序。\n");
break;
default:
printf("无效选择,请重新输入。\n");
}
} while (choice!= 5);
return 0;
}
void addStudent() {
if (numStudents >= MAX_STUDENTS) {
printf("学生数量已达上限,无法添加更多学生。\n");
return;
}
Student newStudent;
printf("输入学生 ID:");
scanf("%d", &newStudent.id);
printf("输入学生姓名:");
scanf("%s", newStudent.name);
printf("输入学生成绩:");
scanf("%f", &newStudent.score);
students[numStudents++] = newStudent;
printf("学生信息添加成功。\n");
}
void displayStudents() {
if (numStudents == 0) {
printf("暂无学生信息。\n");
return;
}
printf("\n学生信息列表:\n");
printf("ID\t姓名\t成绩\n");
for (int i = 0; i < numStudents; i++) {
printf("%d\t%s\t%.2f\n", students[i].id, students[i].name, students[i].score);
}
}
void searchStudent() {
int searchId;
printf("输入要查找的学生 ID:");
scanf("%d", &searchId);
for (int i = 0; i < numStudents; i++) {
if (students[i].id == searchId) {
printf("\n找到学生信息:\n");
printf("ID\t姓名\t成绩\n");
printf("%d\t%s\t%.2f\n", students[i].id, students[i].name, students[i].score);
return;
}
}
printf("未找到该学生。\n");
}
void deleteStudent() {
int deleteId;
printf("输入要删除的学生 ID:");
scanf("%d", &deleteId);
int found = 0;
for (int i = 0; i < numStudents; i++) {
if (students[i].id == deleteId) {
found = 1;
for (int j = i; j < numStudents - 1; j++) {
students[j] = students[j + 1];
}
numStudents--;
printf("学生信息删除成功。\n");
break;
}
}
if (!found) {
printf("未找到该学生,无法删除。\n");
}
}