C语言学生管理系统代码用到文件,学生表包括学号姓名,初始化的时候会在代码中直接写入一部分学生信息,不用在终端输入,增加学生操作时再用终端输入
时间: 2024-04-17 09:25:27 浏览: 115
下面是一个使用文件存储学生信息的示例代码,其中包括学生表的初始化和增加学生的操作:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
struct Student {
char studentID[10];
char name[50];
};
struct Student students[MAX_STUDENTS];
int studentCount = 0;
void initializeStudents() {
FILE *file = fopen("students.txt", "r");
if (file == NULL) {
printf("Failed to open students.txt file!\n");
return;
}
char line[100];
while (fgets(line, sizeof(line), file)) {
char *studentID = strtok(line, ",");
char *name = strtok(NULL, ",");
strcpy(students[studentCount].studentID, studentID);
strcpy(students[studentCount].name, name);
studentCount++;
}
fclose(file);
}
void addStudent() {
if (studentCount == MAX_STUDENTS) {
printf("Maximum number of students reached!\n");
return;
}
struct Student newStudent;
printf("Enter student ID: ");
scanf("%s", newStudent.studentID);
printf("Enter student name: ");
scanf("%s", newStudent.name);
strcpy(students[studentCount].studentID, newStudent.studentID);
strcpy(students[studentCount].name, newStudent.name);
studentCount++;
FILE *file = fopen("students.txt", "a");
if (file == NULL) {
printf("Failed to open students.txt file!\n");
return;
}
fprintf(file, "%s,%s\n", newStudent.studentID, newStudent.name);
fclose(file);
printf("Student added successfully!\n");
}
int main() {
initializeStudents();
int choice;
do {
printf("\nStudent Management System\n");
printf("1. Add Student\n");
printf("2. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch(choice) {
case 1:
addStudent();
break;
case 2:
printf("Exiting...\n");
break;
default:
printf("Invalid choice! Please try again.\n");
}
} while(choice != 2);
return 0;
}
```
在这个示例代码中,学生信息存储在名为 `students.txt` 的文件中。在 `initializeStudents` 函数中,我们打开文件并逐行读取学生信息,将其存储到 `students` 数组中。在 `addStudent` 函数中,我们从终端获取新学生的学号和姓名,并将其添加到 `students` 数组和文件中。每次增加学生时,都会将新学生的信息追加到文件的末尾。
请确保在程序运行前,已经在 `students.txt` 文件中初始化了一部分学生信息,每行一个学生,格式为 `学号,姓名`。例如:
```
20210001,张三
20210002,李四
```
这样,在程序运行时,即可读取并显示已经存在的学生信息,并能够通过终端输入添加新的学生信息。记得根据自己的需求进一步修改和完善代码。
阅读全文