学生籍贯信息记录簿1

C语言编程
每个学生信息包括:学号、姓名、性别、籍贯、年龄。具体功能:
1、信息录入;
2、信息浏览;
3、信息查询(a 按籍贯查询 b按年龄查询)
4、信息排序(a 按年龄排序(从高到低)b 按姓名排序 )
5、信息统计(统计用户要求的某籍贯的学生人数)
6、信息删除(删除指定学号的学生籍贯信息)
0、 退出

该回答引用自ChatGPT:下面是一个使用C语言编写的学生信息管理程序的示例代码,实现了你提到的各项功能:

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

#define MAX_STUDENTS 100

typedef struct {
    int studentId;
    char name[50];
    char gender;
    char hometown[50];
    int age;
} Student;

Student students[MAX_STUDENTS];
int numStudents = 0;

void inputStudentInfo();
void displayAllStudents();
void searchByHometown();
void searchByAge();
void sortByAge();
void sortByName();
void countByHometown();
void deleteByStudentId();

int main() {
    int choice;
    do {
        printf("\n------ 学生信息管理系统 ------\n");
        printf("1. 信息录入\n");
        printf("2. 信息浏览\n");
        printf("3. 信息查询\n");
        printf("4. 信息排序\n");
        printf("5. 信息统计\n");
        printf("6. 信息删除\n");
        printf("0. 退出\n");
        printf("请输入选项:");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                inputStudentInfo();
                break;
            case 2:
                displayAllStudents();
                break;
            case 3:
                printf("\n------ 信息查询 ------\n");
                printf("a. 按籍贯查询\n");
                printf("b. 按年龄查询\n");
                printf("请选择查询方式:");
                scanf(" %c", &choice);
                if (choice == 'a') {
                    searchByHometown();
                } else if (choice == 'b') {
                    searchByAge();
                } else {
                    printf("无效的选项!\n");
                }
                break;
            case 4:
                printf("\n------ 信息排序 ------\n");
                printf("a. 按年龄排序(从高到低)\n");
                printf("b. 按姓名排序\n");
                printf("请选择排序方式:");
                scanf(" %c", &choice);
                if (choice == 'a') {
                    sortByAge();
                } else if (choice == 'b') {
                    sortByName();
                } else {
                    printf("无效的选项!\n");
                }
                break;
            case 5:
                countByHometown();
                break;
            case 6:
                deleteByStudentId();
                break;
            case 0:
                printf("程序已退出。\n");
                break;
            default:
                printf("无效的选项!\n");
                break;
        }
    } while (choice != 0);

    return 0;
}

void inputStudentInfo() {
    if (numStudents >= MAX_STUDENTS) {
        printf("学生信息已达到上限,无法继续添加。\n");
        return;
    }

    Student student;
    printf("\n------ 信息录入 ------\n");
    printf("请输入学号:");
    scanf("%d", &student.studentId);
    printf("请输入姓名:");
    scanf("%s", student.name);
    printf("请输入性别(M/F):");
    scanf(" %c", &student.gender);
    printf("请输入籍贯:");
    scanf("%s", student.hometown);
    printf("请输入年龄:");
    scanf("%d", &student.age);

    students[numStudents] = student;
    numStudents++;

    printf("学生信息录入成功!\n");
}

void displayAllStudents() {
    if (numStudents == 0) {
        printf("没有学生信息可显示。\n");
        return;
    }

    printf("\n------ 信息浏览 ------\n");
    for (int i = 0; i < numStudents; i++) {
        Student student = students[i];
        printf("学号:%d\n", student.studentId);
        printf("姓名:%s\n", student.name);
        printf("性别:%c\n", student.gender);
        printf("籍贯:%s\n", student.hometown);
        printf("年龄:%d\n", student.age);
        printf("--------------------\n");
    }
}

void searchByHometown() {
    char searchHometown[50];
    printf("请输入要查询的籍贯:");
    scanf("%s", searchHometown);

    printf("\n------ 按籍贯查询 ------\n");
    int count = 0;
    for (int i = 0; i < numStudents; i++) {
        Student student = students[i];
        if (strcmp(student.hometown, searchHometown) == 0) {
            printf("学号:%d\n", student.studentId);
            printf("姓名:%s\n", student.name);
            printf("性别:%c\n", student.gender);
            printf("籍贯:%s\n", student.hometown);
            printf("年龄:%d\n", student.age);
            printf("--------------------\n");
            count++;
        }
    }

    if (count == 0) {
        printf("没有找到该籍贯的学生。\n");
    } else {
        printf("共找到%d个学生。\n", count);
    }
}

void searchByAge() {
    int searchAge;
    printf("请输入要查询的年龄:");
    scanf("%d", &searchAge);

    printf("\n------ 按年龄查询 ------\n");
    int count = 0;
    for (int i = 0; i < numStudents; i++) {
        Student student = students[i];
        if (student.age == searchAge) {
            printf("学号:%d\n", student.studentId);
            printf("姓名:%s\n", student.name);
            printf("性别:%c\n", student.gender);
            printf("籍贯:%s\n", student.hometown);
            printf("年龄:%d\n", student.age);
            printf("--------------------\n");
            count++;
        }
    }

    if (count == 0) {
        printf("没有找到该年龄的学生。\n");
    } else {
        printf("共找到%d个学生。\n", count);
    }
}

void sortByAge() {
    for (int i = 0; i < numStudents - 1; i++) {
        for (int j = 0; j < numStudents - i - 1; j++) {
            if (students[j].age < students[j + 1].age) {
                Student temp = students[j];
                students[j] = students[j + 1];
                students[j + 1] = temp;
            }
        }
    }

    printf("\n------ 按年龄排序(从高到低) ------\n");
    displayAllStudents();
}

void sortByName() {
    for (int i = 0; i < numStudents - 1; i++) {
        for (int j = 0; j < numStudents - i - 1; j++) {
            if (strcmp(students[j].name, students[j + 1].name) > 0) {
                Student temp = students[j];
                students[j] = students[j + 1];
                students[j + 1] = temp;
            }
        }
    }

    printf("\n------ 按姓名排序 ------\n");
    displayAllStudents();
}

void countByHometown() {
    char searchHometown[50];
    printf("请输入要统计的籍贯:");
    scanf("%s", searchHometown);

    int count = 0;
    for (int i = 0; i < numStudents; i++) {
        Student student = students[i];
        if (strcmp(student.hometown, searchHometown) == 0) {
            count++;
        }
    }

    printf("籍贯为%s的学生人数:%d\n", searchHometown, count);
}

void deleteByStudentId() {
    int studentId;
    printf("请输入要删除的学号:");
    scanf("%d", &studentId);

    int foundIndex = -1;
    for (int i = 0; i < numStudents; i++) {
        if (students[i].studentId == studentId) {
            foundIndex = i;
            break;
        }
    }

    if (foundIndex == -1) {
        printf("找不到学号为%d的学生。\n", studentId);
    } else {
        for (int i = foundIndex; i < numStudents - 1; i++) {
            students[i] = students[i + 1];
        }
        numStudents--;
        printf("学号为%d的学生信息删除成功!\n", studentId);
    }
}

以上是一个简单的学生信息管理系统的C语言实现。你可以根据需要在main函数中选择相应的功能进行操作。具体功能包括信息录入、信息浏览、信息查询(按籍贯查询和按年龄查询)、信息排序(按年龄排序和按姓名排序)、信息统计和信息删除。

参考:https://blog.csdn.net/qq_45556665/article/details/104122099