帮我用c语言写一个学生管理系统
时间: 2023-11-14 11:07:00 浏览: 35
好的,我可以给你一个简单的学生管理系统的示例代码,你可以基于此进行修改和扩展。以下是代码:
```c
#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]; // 学生姓名
int age; // 学生年龄
float score; // 学生成绩
} Student;
// 全局变量
Student students[MAX_STUDENTS]; // 学生数组
int num_students = 0; // 学生数量
// 函数声明
void add_student();
void delete_student();
void modify_student();
void query_student();
void show_menu();
void save_data();
void load_data();
// 主函数
int main() {
load_data(); // 加载数据
while (1) {
show_menu(); // 显示菜单
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_student(); // 添加学生
break;
case 2:
delete_student(); // 删除学生
break;
case 3:
modify_student(); // 修改学生信息
break;
case 4:
query_student(); // 查询学生信息
break;
case 5:
save_data(); // 保存数据
exit(0); // 退出程序
default:
printf("输入有误,请重新输入!\n");
break;
}
}
return 0;
}
// 添加学生
void add_student() {
printf("请输入学生姓名:\n");
char name[MAX_NAME_LENGTH];
scanf("%s", name);
printf("请输入学生年龄:\n");
int age;
scanf("%d", &age);
printf("请输入学生成绩:\n");
float score;
scanf("%f", &score);
// 生成学生编号
int id = num_students + 1;
// 创建学生对象
Student student = {id, name, age, score};
// 添加学生到数组
students[num_students++] = student;
printf("添加成功!\n");
}
// 删除学生
void delete_student() {
printf("请输入要删除的学生编号:\n");
int id;
scanf("%d", &id);
int index = -1;
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生!\n");
} else {
for (int i = index; i < num_students - 1; i++) {
students[i] = students[i + 1];
}
num_students--;
printf("删除成功!\n");
}
}
// 修改学生信息
void modify_student() {
printf("请输入要修改的学生编号:\n");
int id;
scanf("%d", &id);
int index = -1;
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生!\n");
} else {
Student *student = &students[index];
printf("请输入学生姓名(原值:%s):\n", student->name);
char name[MAX_NAME_LENGTH];
scanf("%s", name);
strcpy(student->name, name);
printf("请输入学生年龄(原值:%d):\n", student->age);
int age;
scanf("%d", &age);
student->age = age;
printf("请输入学生成绩(原值:%f):\n", student->score);
float score;
scanf("%f", &score);
student->score = score;
printf("修改成功!\n");
}
}
// 查询学生信息
void query_student() {
printf("请输入要查询的学生编号:\n");
int id;
scanf("%d", &id);
int index = -1;
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该学生!\n");
} else {
Student student = students[index];
printf("学生编号:%d\n", student.id);
printf("学生姓名:%s\n", student.name);
printf("学生年龄:%d\n", student.age);
printf("学生成绩:%f\n", student.score);
}
}
// 显示菜单
void show_menu() {
printf("欢迎使用学生管理系统!\n");
printf("1. 添加学生\n");
printf("2. 删除学生\n");
printf("3. 修改学生信息\n");
printf("4. 查询学生信息\n");
printf("5. 退出程序\n");
printf("请选择操作:\n");
}
// 保存数据
void save_data() {
FILE *fp = fopen("data.txt", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
for (int i = 0; i < num_students; i++) {
Student student = students[i];
fprintf(fp, "%d %s %d %f\n", student.id, student.name, student.age, student.score);
}
fclose(fp);
}
// 加载数据
void load_data() {
FILE *fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
while (1) {
int id;
char name[MAX_NAME_LENGTH];
int age;
float score;
int result = fscanf(fp, "%d %s %d %f\n", &id, name, &age, &score);
if (result == EOF) {
break;
}
Student student = {id, name, age, score};
students[num_students++] = student;
}
fclose(fp);
}
```
这个简单的学生管理系统包含了添加学生、删除学生、修改学生信息、查询学生信息和保存数据等功能,可以满足基本的学生管理需求。当然,你可以根据自己的需求进行修改和扩展。