学生信息系统管理怎么做

该系统实现了对学生信息的存储和管理。学生信息包括学号、姓名、生日等信息。系统可以对学生信息进行查询、添加、删除和备份。
学生信息管理系统包含以下功能:
(1) 输入部分:通过键盘输入多位学生的学生信息。学生信息包含有:学生学号、姓名、性别、出生年月日、年龄、成绩;(信息要保存到一个文件里)
(2) 输出部分:输出显示已存储学生信息;
(3) 更新部分:

  1. 插入:插入一条或多条新的学生信息(追加录入)
  2. 删除:删除指定的学生信息
  3. 修改:修改指定的学生信息(学号不能修改)
    (4) 查询:
  4. 按姓名查询
  5. 按学号查询
    (5) 排序:
  6. 按学号排序
  7. 按成绩排序
    (6) 统计:
  8. 统计当前一共存储了多少个学生的信息
  9. 统计当前男生和女生人数
  10. 统计及格人数和不及格人数

ChatGPT尝试为您解答,仅供参考

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

#define MAX_STUDENTS 100

struct student
{
    char id[50];
    char name[50];
    char gender[50];
    char birth[50];
    int age;
    float score;
};

int main()
{
    struct student students[MAX_STUDENTS];
    int num_students = 0;
    // 从文件中读取学生信息
    FILE *fp;
    fp = fopen("students.txt", "r");
    if (fp != NULL)
    {
        char line[200];
        while (fgets(line, sizeof(line), fp) != NULL)
        {
            sscanf(line, "%[^,],%[^,],%[^,],%[^,],%d,%f", students[num_students].id, students[num_students].name, students[num_students].gender, students[num_students].birth, &students[num_students].age, &students[num_students].score);
            num_students++;
        }
        fclose(fp);
    }

    while (1)
    {
        printf("\nStudent Management System\n");
        printf("1. Input students\n");
        printf("2. Output students\n");
        printf("3. Insert a student\n");
        printf("4. Delete a student\n");
        printf("5. Modify a student\n");
        printf("6. Search students by name\n");
        printf("7. Search students by id\n");
        printf("8. Sort students by id\n");
        printf("9. Sort students by score\n");
        printf("10. Statistics\n");
        printf("0. Exit\n");
        printf("Enter your choice: ");

        int choice;
        scanf("%d", &choice);

        if (choice == 0)
        {
            break;
        }

        switch (choice)
        {
        case 1:
        {
            // 输入学生信息
            printf("\nEnter student information:\n");
            while (1)
            {
                printf("Enter student id (Enter 0 to finish): ");
                scanf("%s", students[num_students].id);
                if (strcmp(students[num_students].id, "0") == 0)
                {
                    break;
                }
                printf("Enter name: ");
                scanf("%s", students[num_students].name);
                printf("Enter gender: ");
                scanf("%s", students[num_students].gender);
                printf("Enter birthday (yyyy-mm-dd): ");
                scanf("%s", students[num_students].birth);
                printf("Enter age: ");
                scanf("%d", &students[num_students].age);
                printf("Enter score: ");
                scanf("%f", &students[num_students].score);
                num_students++;
            }
            break;
        }
        case 2:
        {
            // 输出学生信息
            printf("\nStudent information:\n");
            for (int i = 0; i < num_students; i++)
            {
                printf("Student ID: %s\n", students[i].id);
                printf("Name: %s\n", students[i].name);
                printf("Gender: %s\n", students[i].gender);
                printf("Birthday: %s\n", students[i].birth);
                printf("Age: %d\n", students[i].age);
                printf("Score: %.2f\n", students[i].score);
            }
            break;
        }
        case 3:
        {
            // 插入学生信息
            if (num_students < MAX_STUDENTS)
            {
                printf("\nEnter student information:\n");
                printf("Enter student id: ");
                scanf("%s", students[num_students].id);
                printf("Enter name: ");
                scanf("%s", students[num_students].name);
                printf("Enter gender: ");
                scanf("%s", students[num_students].gender);
                printf("Enter birthday (yyyy-mm-dd): ");
                scanf("%s", students[num_students].birth);
                printf("Enter age: ");
                scanf("%d", &students[num_students].age);
                printf("Enter score: ");
                scanf("%f", &students[num_students].score);
                num_students++;
            }
            else
            {
                printf("\nError: Too many students!\n");
            }
            break;
        }
        case 4:
        {
            // 删除学生信息
            printf("\nEnter student id to delete: ");
            char id[50];
            scanf("%s", id);
            int found = 0;
            for (int i = 0; i < num_students; i++)
            {
                if (strcmp(students[i].id, id) == 0)
                {
                    found = 1;
                    for (int j = i; j < num_students - 1; j++)
                    {
                        students[j] = students[j + 1];
                    }
                    num_students--;
                    break;
                }
            }
            if (!found)
            {
                printf("\nError: Student not found!\n");
            }
            break;
        }
        case 5:
        {
            // 修改学生信息
            printf("\nEnter student id to modify: ");
            char id[50];
            scanf("%s", id);
            int found = 0;
            for (int i = 0; i < num_students; i++)
            {
                if (strcmp(students[i].id, id) == 0)
                {
                    found = 1;
                    printf("Enter name: ");
                    scanf("%s", students[i].name);
                    printf("Enter gender: ");
                    scanf("%s", students[i].gender);
                    printf("Enter birthday (yyyy-mm-dd): ");
                    scanf("%s", students[i].birth);
                    printf("Enter age: ");
                    scanf("%d", &students[i].age);
                    printf("Enter score: ");
                    scanf("%f", &students[i].score);
                    break;
                }
            }
            if (!found)
            {
                printf("\nError: Student not found!\n");
            }
            break;
        }
        case 6:
        {
            // 按姓名查询学生信息
            printf("\nEnter name to search: ");
            char name[50];
            scanf("%s", name);
            int found = 0;
            for (int i = 0; i < num_students; i++)
            {
                if (strcmp(students[i].name, name) == 0)
                {
                    found = 1;
                    printf("Student ID: %s\n", students[i].id);
                    printf("Name: %s\n", students[i].name);
                    printf("Gender: %s\n", students[i].gender);
                    printf("Birthday: %s\n", students[i].birth);
                    printf("Age: %d\n", students[i].age);
                    printf("Score: %.2f\n", students[i].score);
                }
            }
            if (!found)
            {
                printf("\nError: Student not found!\n");
            }
            break;
        }
        case 7:
        {
            // 按学号查询学生信息
            printf("\nEnter id to search: ");
            char id[50];
            scanf("%s", id);
            int found = 0;
            for (int i = 0; i < num_students; i++)
            {
                if (strcmp(students[i].id, id) == 0)
                {
                    found = 1;
                    printf("Student ID: %s\n", students[i].id);
                    printf("Name: %s\n", students[i].name);
                    printf("Gender: %s\n", students[i].gender);
                    printf("Birthday: %s\n", students[i].birth);
                    printf("Age: %d\n", students[i].age);
                    printf("Score: %.2f\n", students[i].score);
                }
            }
            if (!found)
            {
                printf("\nError: Student not found!\n");
            }
            break;
        }
        case 8:
        {
            // 按学号排序学生信息
            for (int i = 0; i < num_students - 1; i++)
            {
                for (int j = i + 1; j < num_students; j++)
                {
                    if (strcmp(students[i].id, students[j].id) > 0)
                    {
                        struct student temp = students[i];
                        students[i] = students[j];
                        students[j] = temp;
                    }
                }
            }
            break;
        }
        case 9:
        {
            // 按成绩排序学生信息
            for (int i = 0; i < num_students - 1; i++)
            {
                for (int j = i + 1; j < num_students; j++)
                {
                    if (students[i].score > students[j].score)
                    {
                        struct student temp = students[i];
                        students[i] = students[j];
                        students[j] = temp;
                    }
                }
            }
            break;
        }
        case 10:
        {
            // 统计学生信息
            printf("\nStatistics:\n");
            printf("Number of students: %d\n", num_students);
            int num_males = 0;
            int num_females = 0;
            for (int i = 0; i < num_students; i++)
            {
                if (strcmp(students[i].gender, "male") == 0)
                {
                    num_males++;
                }
                else if (strcmp(students[i].gender, "female") == 0)
                {
                    num_females++;
                }
            }
            printf("Number of males: %d\n", num_males);
            printf("Number of females: %d\n", num_females);

            int num_passed = 0;
            int num_failed = 0;
            for (int i = 0; i < num_students; i++)
            {
                if (students[i].score >= 60)
                {
                    num_passed++;
                }
                else
                {
                    num_failed++;
                }
            }
            printf("Number of passed: %d\n", num_passed);
            printf("Number of failed: %d\n", num_failed);
            break;
        }
        default:
        {
            printf("\nError: Invalid choice!\n");
            break;
        }
        }
    }

    // 将学生信息保存到文件中
    fp = fopen("students.txt", "w");
    if (fp != NULL)
    {
        for (int i = 0; i < num_students; i++)
        {
            fprintf(fp, "%s,%s,%s,%s,%d,%.2f\n", students[i].id, students[i].name, students[i].gender, students[i].birth, students[i].age, students[i].score);
        }
        fclose(fp);
    }

    return 0;
}

可做