C语言课程设计:学生成绩管理系统
C语言课程设计:学生成绩管理系统
本项目是一个简单的学生成绩管理系统,使用C语言实现,能够进行学生信息的录入、查询、修改和删除等基本操作,并使用文件存储数据,方便用户管理学生信息。
功能概述
- 录入学生信息: 输入学生学号、姓名、年龄和成绩,将信息存储到文件中。
- 查询学生信息: 输入要查询的学号,从文件中读取并显示该学生的信息。
- 修改学生信息: 输入要修改的学号,更新该学生的姓名、年龄和成绩信息。
- 删除学生信息: 输入要删除的学号,从文件中删除该学生信息。
代码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char id[20];
char name[20];
int age;
float score;
} Student;
// 函数声明
void displayMenu();
void addStudent();
void searchStudent();
void modifyStudent();
void deleteStudent();
int main() {
int choice;
while (1) {
displayMenu();
scanf('%d', &choice);
switch (choice) {
case 1:
addStudent();
break;
case 2:
searchStudent();
break;
case 3:
modifyStudent();
break;
case 4:
deleteStudent();
break;
case 5:
printf('退出程序\n');
exit(0);
default:
printf('无效的选项,请重新选择\n');
break;
}
}
return 0;
}
// 显示菜单
void displayMenu() {
printf('====== 学生成绩管理系统 ======\n');
printf('1. 录入学生信息\n');
printf('2. 查询学生信息\n');
printf('3. 修改学生信息\n');
printf('4. 删除学生信息\n');
printf('5. 退出程序\n');
printf('请选择操作:');
}
// 录入学生信息
void addStudent() {
Student student;
printf('请输入学号:');
scanf('%s', student.id);
printf('请输入姓名:');
scanf('%s', student.name);
printf('请输入年龄:');
scanf('%d', &student.age);
printf('请输入成绩:');
scanf('%f', &student.score);
FILE *file = fopen('students.txt', 'a');
if (file == NULL) {
printf('文件打开失败\n');
return;
}
fprintf(file, '%s %s %d %.2f\n', student.id, student.name, student.age, student.score);
fclose(file);
printf('学生信息录入成功\n');
}
// 查询学生信息
void searchStudent() {
char id[20];
printf('请输入要查询的学号:');
scanf('%s', id);
FILE *file = fopen('students.txt', 'r');
if (file == NULL) {
printf('文件打开失败\n');
return;
}
Student student;
int found = 0;
while (fscanf(file, '%s %s %d %f', student.id, student.name, &student.age, &student.score) != EOF) {
if (strcmp(student.id, id) == 0) {
printf('学号:%s\n', student.id);
printf('姓名:%s\n', student.name);
printf('年龄:%d\n', student.age);
printf('成绩:%.2f\n', student.score);
found = 1;
break;
}
}
fclose(file);
if (!found) {
printf('未找到学号为%s的学生\n', id);
}
}
// 修改学生信息
void modifyStudent() {
char id[20];
printf('请输入要修改的学号:');
scanf('%s', id);
FILE *file = fopen('students.txt', 'r+');
if (file == NULL) {
printf('文件打开失败\n');
return;
}
Student student;
int found = 0;
while (fscanf(file, '%s %s %d %f', student.id, student.name, &student.age, &student.score) != EOF) {
if (strcmp(student.id, id) == 0) {
printf('请输入新的姓名:');
scanf('%s', student.name);
printf('请输入新的年龄:');
scanf('%d', &student.age);
printf('请输入新的成绩:');
scanf('%f', &student.score);
fseek(file, -sizeof(Student), SEEK_CUR);
fprintf(file, '%s %s %d %.2f\n', student.id, student.name, student.age, student.score);
found = 1;
break;
}
}
fclose(file);
if (!found) {
printf('未找到学号为%s的学生\n', id);
} else {
printf('学生信息修改成功\n');
}
}
// 删除学生信息
void deleteStudent() {
char id[20];
printf('请输入要删除的学号:');
scanf('%s', id);
FILE *file = fopen('students.txt', 'r');
if (file == NULL) {
printf('文件打开失败\n');
return;
}
FILE *tempFile = fopen('temp.txt', 'w');
if (tempFile == NULL) {
printf('文件打开失败\n');
fclose(file);
return;
}
Student student;
int found = 0;
while (fscanf(file, '%s %s %d %f', student.id, student.name, &student.age, &student.score) != EOF) {
if (strcmp(student.id, id) == 0) {
found = 1;
continue;
}
fprintf(tempFile, '%s %s %d %.2f\n', student.id, student.name, student.age, student.score);
}
fclose(file);
fclose(tempFile);
if (!found) {
printf('未找到学号为%s的学生\n', id);
} else {
remove('students.txt');
rename('temp.txt', 'students.txt');
printf('学生信息删除成功\n');
}
}
使用说明
- 将代码保存为
.c文件,例如student_management.c - 使用C语言编译器编译代码,例如
gcc student_management.c -o student_management - 运行可执行文件,例如
./student_management - 根据菜单提示进行操作。
扩展功能
- 可以添加更多学生信息字段,例如性别、班级等
- 可以实现对学生信息进行排序
- 可以使用图形界面进行操作,提高用户体验
总结
这是一个简单的学生成绩管理系统,可以作为C语言课程设计的参考。你可以根据自己的需要进行修改和扩展,实现更复杂的功能。
原文地址: https://www.cveoy.top/t/topic/rBj 著作权归作者所有。请勿转载和采集!