李哩哩哩啦 2022-12-21 20:38 采纳率: 71.4%
浏览 106
已结题

学生信息系统管理怎么做

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

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

2条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-21 21:43
    关注

    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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月22日
  • 已采纳回答 12月21日
  • 创建了问题 12月21日

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图