学生信息管理系统程序项目(本地文件存储)

程序描述

在计算机本地建立一个txt文件设计C语言程序:

按键盘1 ,实现学生信息的显示

按键盘2,添加学生信息

按键盘3,修改学生信息

按键盘4,删除某个学生信息

退出程序

源代码

下面是一个示例的C语言程序,实现了按键盘输入不同选项来操作学生信息的显示、添加、修改和删除,并将学生信息保存在本地的txt文件中。

#include <stdio.h>
#include <stdlib.h>

// 定义学生结构体
struct Student {
    char name[50];
    int age;
    int grade;
};

int main() {
    FILE *file;
    struct Student students[100];
    int numStudents = 0;

    // 循环显示菜单,直到选择退出程序
    while (1) {
        int option;
        printf("\n请选择操作:\n");
        printf("1. 显示学生信息\n");
        printf("2. 添加学生信息\n");
        printf("3. 修改学生信息\n");
        printf("4. 删除学生信息\n");
        printf("5. 退出程序\n");
        printf("请选择:");
        scanf("%d", &option);

        switch (option) {
            case 1:
                // 显示学生信息
                if (numStudents == 0) {
                    printf("暂无学生信息。\n");
                } else {
                    printf("学生信息如下:\n");
                    for (int i = 0; i < numStudents; i++) {
                        printf("姓名:%s,年龄:%d,年级:%d\n", students[i].name, students[i].age, students[i].grade);
                    }
                }
                break;
            
            case 2:
                // 添加学生信息
                if (numStudents == 100) {
                    printf("学生数量已达上限,无法添加更多学生。\n");
                } else {
                    printf("请输入学生姓名:");
                    scanf("%s", students[numStudents].name);
                    printf("请输入学生年龄:");
                    scanf("%d", &students[numStudents].age);
                    printf("请输入学生年级:");
                    scanf("%d", &students[numStudents].grade);

                    // 将学生信息写入文件
                    file = fopen("student_info.txt", "a");
                    fprintf(file, "%s %d %d\n", students[numStudents].name, students[numStudents].age, students[numStudents].grade);
                    fclose(file);

                    numStudents++;
                    printf("学生信息添加成功。\n");
                }
                break;
            
            case 3:
                // 修改学生信息
                if (numStudents == 0) {
                    printf("暂无学生信息,无法进行修改。\n");
                } else {
                    int index;
                    printf("请输入要修改的学生索引(从1开始):");
                    scanf("%d", &index);
                    if (index < 1 || index > numStudents) {
                        printf("无效的学生索引。\n");
                    } else {
                        printf("请输入学生姓名:");
                        scanf("%s", students[index - 1].name);
                        printf("请输入学生年龄:");
                        scanf("%d", &students[index - 1].age);
                        printf("请输入学生年级:");
                        scanf("%d", &students[index - 1].grade);

                        // 更新文件中的学生信息
                        file = fopen("student_info.txt", "w");
                        for (int i = 0; i < numStudents; i++) {
                            fprintf(file, "%s %d %d\n", students[i].name, students[i].age, students[i].grade);
                        }
                        fclose(file);

                        printf("学生信息修改成功。\n");
                    }
                }
                break;
            
            case 4:
                // 删除学生信息
                if (numStudents == 0) {
                    printf("暂无学生信息,无法进行删除。\n");
                } else {
                    int index;
                    printf("请输入要删除的学生索引(从1开始):");
                    scanf("%d", &index);
                    if (index < 1 || index > numStudents) {
                        printf("无效的学生索引。\n");
                    } else {
                        for (int i = index - 1; i < numStudents - 1; i++) {
                            students[i] = students[i + 1];
                        }
                        numStudents--;

                        // 更新文件中的学生信息
                        file = fopen("student_info.txt", "w");
                        for (int i = 0; i < numStudents; i++) {
                            fprintf(file, "%s %d %d\n", students[i].name, students[i].age, students[i].grade);
                        }
                        fclose(file);

                        printf("学生信息删除成功。\n");
                    }
                }
                break;

            case 5:
                // 退出程序
                printf("感谢使用,再见!\n");
                exit(0);

            default:
                printf("无效的选项,请重新选择。\n");
        }
    }

    return 0;
}

上述代码中,通过使用结构体Student来表示学生信息,并使用数组students存储多个学生的信息。在main函数中,利用一个循环显示菜单供用户选择操作,根据用户的选择执行相应的操作。具体的每个操作的实现如下:

  1. 显示学生信息:遍历students数组,逐个输出学生的姓名、年龄和年级。
  2. 添加学生信息:判断学生数量是否已达上限(这里假设最多可以添加100个学生),如果未达到上限,则通过键盘输入学生的姓名、年龄和年级,并将学生信息写入本地的txt文件。
  3. 修改学生信息:首先判断是否有学生信息可供修改,然后通过键盘输入要修改的学生索引和新的学生信息,更新对应位置的学生信息,并将更新后的学生信息写入txt文件。
  4. 删除学生信息:首先判断是否有学生信息可供删除,然后通过键盘输入要删除的学生索引,将后面的学生信息依次向前移动一个位置,然后更新学生数量,并将更新后的学生信息写入txt文件。
  5. 退出程序:通过调用exit(0)函数退出程序。

请确保在编译和运行程序之前,确保当前目录下有一个名为student_info.txt的文本文件,用于存储学生信息。

 

© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏 分享