c++学生管理信息系统

要求: 学生信息包括:学号,姓名,年龄,性别,出生年月,政治面貌,籍贯,家庭住址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作

(2)学生信息录入功能(学生信息用文件保存)

(3)学生信息浏览功能

(4)学生信息排序、查询功能对信息进行排序,可以按学号,按姓名,按性别,按出生年月日,按籍贯进行查询

(5)信息统计

    a) 可以按性别,按出生年,按籍贯统计学生人数

    b) 可以按班级统计学生人数

    c) 可以按政治面貌统计学生人数按班级统计学生党员人数,团员人数,以及所占比例,设计并输出统计报表。

(6)学生信息的删除与修改

以下是一个简单的学生信息管理系统的C语言实现:

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

#define MAX_STUDENT_NUM 100 // 最大学生数
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_ADDRESS_LEN 50 // 地址最大长度
#define MAX_PHONE_LEN 20 // 电话最大长度
#define MAX_EMAIL_LEN 50 // 邮箱最大长度

// 学生信息结构体
typedef struct {
    char id[10]; // 学号
    char name[MAX_NAME_LEN]; // 姓名
    int age; // 年龄
    char gender; // 性别
    char birth[11]; // 出生年月日
    char political_status[20]; // 政治面貌
    char hometown[20]; // 籍贯
    char address[MAX_ADDRESS_LEN]; // 家庭住址
    char phone[MAX_PHONE_LEN]; // 电话
    char email[MAX_EMAIL_LEN]; // 邮箱
} Student;

// 学生信息数组
Student students[MAX_STUDENT_NUM];
int student_num = 0; // 学生数

// 读取学生信息文件
void read_student_file() {
    FILE *fp = fopen("students.txt", "r");
    if (fp == NULL) {
        printf("无法打开学生信息文件!\n");
        return;
    }
    while (!feof(fp)) {
        fscanf(fp, "%s %s %d %c %s %s %s %s %s %s\n", students[student_num].id, students[student_num].name, &students[student_num].age, &students[student_num].gender, students[student_num].birth, students[student_num].political_status, students[student_num].hometown, students[student_num].address, students[student_num].phone, students[student_num].email);
        student_num++;
    }
    fclose(fp);
}

// 保存学生信息文件
void save_student_file() {
    FILE *fp = fopen("students.txt", "w");
    if (fp == NULL) {
        printf("无法打开学生信息文件!\n");
        return;
    }
    for (int i = 0; i < student_num; i++) {
        fprintf(fp, "%s %s %d %c %s %s %s %s %s %s\n", students[i].id, students[i].name, students[i].age, students[i].gender, students[i].birth, students[i].political_status, students[i].hometown, students[i].address, students[i].phone, students[i].email);
    }
    fclose(fp);
}

// 录入学生信息
void input_student_info() {
    printf("请输入学生信息:\n");
    printf("学号:");
    scanf("%s", students[student_num].id);
    printf("姓名:");
    scanf("%s", students[student_num].name);
    printf("年龄:");
    scanf("%d", &students[student_num].age);
    printf("性别:");
    scanf(" %c", &students[student_num].gender);
    printf("出生年月日(格式:yyyy-mm-dd):");
    scanf("%s", students[student_num].birth);
    printf("政治面貌:");
    scanf("%s", students[student_num].political_status);
    printf("籍贯:");
    scanf("%s", students[student_num].hometown);
    printf("家庭住址:");
    scanf("%s", students[student_num].address);
    printf("电话:");
    scanf("%s", students[student_num].phone);
    printf("邮箱:");
    scanf("%s", students[student_num].email);
    student_num++;
    printf("学生信息录入成功!\n");
}

// 显示学生信息
void show_student_info(Student student) {
    printf("%s\t%s\t%d\t%c\t%s\t%s\t%s\t%s\t%s\t%s\n", student.id, student.name, student.age, student.gender, student.birth, student.political_status, student.hometown, student.address, student.phone, student.email);
}

// 浏览学生信息
void browse_student_info() {
    printf("学号\t姓名\t年龄\t性别\t出生年月日\t政治面貌\t籍贯\t家庭住址\t电话\t邮箱\n");
    for (int i = 0; i < student_num; i++) {
        show_student_info(students[i]);
    }
}

// 按学号排序
int cmp_by_id(const void *a, const void *b) {
    return strcmp(((Student *)a)->id, ((Student *)b)->id);
}

// 按姓名排序
int cmp_by_name(const void *a, const void *b) {
    return strcmp(((Student *)a)->name, ((Student *)b)->name);
}

// 按性别排序
int cmp_by_gender(const void *a, const void *b) {
    return ((Student *)a)->gender - ((Student *)b)->gender;
}

// 按出生年月日排序
int cmp_by_birth(const void *a, const void *b) {
    return strcmp(((Student *)a)->birth, ((Student *)b)->birth);
}

// 按籍贯排序
int cmp_by_hometown(const void *a, const void *b) {
    return strcmp(((Student *)a)->hometown, ((Student *)b)->hometown);
}

// 排序学生信息
void sort_student_info() {
    printf("请选择排序方式:\n");
    printf("1. 按学号排序\n");
    printf("2. 按姓名排序\n");
    printf("3. 按性别排序\n");
    printf("4. 按出生年月日排序\n");
    printf("5. 按籍贯排序\n");
    int choice;
    scanf("%d", &choice);
    switch (choice) {
        case 1:
            qsort(students, student_num, sizeof(Student), cmp_by_id);
            printf("按学号排序成功!\n");
            break;
        case 2:
            qsort(students, student_num, sizeof(Student), cmp_by_name);
            printf("按姓名排序成功!\n");
            break;
        case 3:
            qsort(students, student_num, sizeof(Student), cmp_by_gender);
            printf("按性别排序成功!\n");
            break;
        case 4:
            qsort(students, student_num, sizeof(Student), cmp_by_birth);
            printf("按出生年月日排序成功!\n");
            break;
        case 5:
            qsort(students, student_num, sizeof(Student), cmp_by_hometown);
            printf("按籍贯排序成功!\n");
            break;
        default:
            printf("无效的选择!\n");
            break;
    }
}

// 查询学生信息
void query_student_info() {
    printf("请选择查询方式:\n");
    printf("1. 按学号查询\n");
    printf("2. 按姓名查询\n");
    printf("3. 按性别查询\n");
    printf("4. 按出生年月日查询\n");
    printf("5. 按籍贯查询\n");
    int choice;
    scanf("%d", &choice);
    switch (choice) {
        case 1:
            printf("请输入学号:");
            char id[10];
            scanf("%s", id);
            for (int i = 0; i < student_num; i++) {
                if (strcmp(students[i].id, id) == 0) {
                    show_student_info(students[i]);
                    return;
                }
            }
            printf("未找到该学生!\n");
            break;
        case 2:
            printf("请输入姓名:");
            char name[MAX_NAME_LEN];
            scanf("%s", name);
            for (int i = 0; i < student_num; i++) {
                if (strcmp(students[i].name, name) == 0) {
                    show_student_info(students[i]);
                }
            }
            break;
        case 3:
            printf("请输入性别(M/F):");
            char gender;
            scanf(" %c", &gender);
            for (int i = 0; i < student_num; i++) {
                if (students[i].gender == gender) {
                    show_student_info(students[i]);
                }
            }
            break;
        case 4:
            printf("请输入出生年月日(格式:yyyy-mm-dd):");
            char birth[11];
            scanf("%s", birth);
            for (int i = 0; i < student_num; i++) {
                if (strcmp(students[i].birth, birth) == 0) {
                    show_student_info(students[i]);
                }
            }
            break;
        case 5:
            printf("请输入籍贯:");
            char hometown[20];
            scanf("%s", hometown);
            for (int i = 0; i < student_num; i++) {
                if (strcmp(students[i].hometown, hometown) == 0) {
                    show_student_info(students[i]);

img

 
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
 
struct Student {
    int studentId;
    std::string name;
    int age;
    std::string gender;
    std::string birthDate;
    std::string politicalStatus;
    std::string hometown;
    std::string address;
    std::string phone;
    std::string email;
};
 
void saveStudentInfo(const Student& student) {
    std::ofstream file("student_info.txt", std::ios::app);
    file << student.studentId << " " << student.name << " " << student.age << " " << student.gender << " "
        << student.birthDate << " " << student.politicalStatus << " " << student.hometown << " "
        << student.address << " " << student.phone << " " << student.email << std::endl;
    file.close();
}
 
std::vector<Student> loadStudentInfo() {
    std::vector<Student> students;
    std::ifstream file("student_info.txt");
    if (file.is_open()) {
        int studentId, age;
        std::string name, gender, birthDate, politicalStatus, hometown, address, phone, email;
        while (file >> studentId >> name >> age >> gender >> birthDate >> politicalStatus >> hometown >> address >> phone >> email) {
            students.push_back({ studentId, name, age, gender, birthDate, politicalStatus, hometown, address, phone, email });
        }
        file.close();
    }
    return students;
}
 
void displayStudentInfo(const Student& student) {
    std::cout << "学号: " << student.studentId << std::endl;
    std::cout << "姓名: " << student.name << std::endl;
    std::cout << "年龄: " << student.age << std::endl;
    std::cout << "性别: " << student.gender << std::endl;
    std::cout << "出生年月: " << student.birthDate << std::endl;
    std::cout << "政治面貌: " << student.politicalStatus << std::endl;
    std::cout << "籍贯: " << student.hometown << std::endl;
    std::cout << "家庭住址: " << student.address << std::endl;
    std::cout << "电话: " << student.phone << std::endl;
    std::cout << "E-mail: " << student.email << std::endl;
    std::cout << std::endl;
}
 
void browseStudentInfo() {
    std::vector<Student> students = loadStudentInfo();
    for (const auto& student : students) {
        displayStudentInfo(student);
    }
}
 
bool compareByStudentId(const Student& s1, const Student& s2) {
    return s1.studentId < s2.studentId;
}
 
bool compareByName(const Student& s1, const Student& s2) {
    return s1.name < s2.name;
}
 
bool compareByGender(const Student& s1, const Student& s2) {
    return s1.gender < s2.gender;
}
 
bool compareByBirthDate(const Student& s1, const Student& s2) {
    return s1.birthDate < s2.birthDate;
}
 
bool compareByHometown(const Student& s1, const Student& s2) {
    return s1.hometown < s2.hometown;
}
 
void sortStudentInfo(int option) {
    std::vector<Student> students = loadStudentInfo();
    switch (option) {
    case 1:
        std::sort(students.begin(), students.end(), compareByStudentId);
        break;
    case 2:
        std::sort(students.begin(), students.end(), compareByName);
        break;
    case 3:
        std::sort(students.begin(), students.end(), compareByGender);
        break;
    case 4:
        std::sort(students.begin(), students.end(), compareByBirthDate);
        break;
    case 5:
        std::sort(students.begin(), students.end(), compareByHometown);
        break;
    default:
        std::cout << "无效的选项!" << std::endl;
        return;
    }
    for (const auto& student : students) {
        displayStudentInfo(student);
    }
}
 
void searchStudentInfo(int option, const std::string& keyword) {
    std::vector<Student> students = loadStudentInfo();
    std::vector<Student> searchResults;
    switch (option) {
    case 1:
        for (const auto& student : students) {
            if (student.name == keyword) {
                searchResults.push_back(student);
            }
        }
        break;
    case 2:
        for (const auto& student : students) {
            if (student.gender == keyword) {
                searchResults.push_back(student);
            }
        }
        break;
    case 3:
        for (const auto& student : students) {
            if (student.birthDate == keyword) {
                searchResults.push_back(student);
            }
        }
        break;
    case 4:
        for (const auto& student : students) {
            if (student.hometown == keyword) {
                searchResults.push_back(student);
            }
        }
        break;
    default:
        std::cout << "无效的选项!" << std::endl;
        return;
    }
    for (const auto& student : searchResults) {
        displayStudentInfo(student);
    }
}
 
void countByGender() {
    std::vector<Student> students = loadStudentInfo();
    int maleCount = 0, femaleCount = 0;
    for (const auto& student : students) {
        if (student.gender == "男") {
            maleCount++;
        }
        else if (student.gender == "女") {
            femaleCount++;
        }
    }
    std::cout << "男性学生人数: " << maleCount << std::endl;
    std::cout << "女性学生人数: " << femaleCount << std::endl;
}
 
void countByBirthYear() {
    std::vector<Student> students = loadStudentInfo();
    std::vector<int> birthYears;
    for (const auto& student : students) {
        std::string year = student.birthDate.substr(0, 4);
        int birthYear = std::stoi(year);
        if (std::find(birthYears.begin(), birthYears.end(), birthYear) == birthYears.end()) {
            birthYears.push_back(birthYear);
        }
    }
    for (const auto& year : birthYears) {
        int count = 0;
        for (const auto& student : students) {
            std::string studentYear = student.birthDate.substr(0, 4);
            int studentBirthYear = std::stoi(studentYear);
            if (studentBirthYear == year) {
                count++;
            }
        }
        std::cout << year << "年出生的学生人数: " << count << std::endl;
    }
}
 
void countByPoliticalStatus() {
    std::vector<Student> students = loadStudentInfo();
    std::vector<std::string> politicalStatuses;
    for (const auto& student : students) {
        if (std::find(politicalStatuses.begin(), politicalStatuses.end(), student.politicalStatus) == politicalStatuses.end()) {
            politicalStatuses.push_back(student.politicalStatus);
        }
    }
    for (const auto& politicalStatus : politicalStatuses) {
        int count = 0;
        for (const auto& student : students) {
            if (student.politicalStatus == politicalStatus) {
                count++;
            }
        }
        std::cout << politicalStatus << "学生人数: " << count << std::endl;
    }
}
 
void countByClass() {
    std::vector<Student> students = loadStudentInfo();
    std::vector<std::string> classes;
    for (const auto& student : students) {
        std::string studentClass = student.name.substr(0, 2);
        if (std::find(classes.begin(), classes.end(), studentClass) == classes.end()) {
            classes.push_back(studentClass);
        }
    }
    for (const auto& studentClass : classes) {
        int count = 0;
        for (const auto& student : students) {
            std::string studentClass = student.name.substr(0, 2);
            if (studentClass == studentClass) {
                count++;
            }
        }
        std::cout << studentClass << "班学生人数: " << count << std::endl;
    }
}
 
void displayMenu() {
    std::cout << "学生信息管理系统" << std::endl;
    std::cout << "1. 显示所有学生信息" << std::endl;
    std::cout << "2. 按学号排序" << std::endl;
    std::cout << "3. 按姓名排序" << std::endl;
    std::cout << "4. 按性别排序" << std::endl;
    std::cout << "5. 按出生日期排序" << std::endl;
    std::cout << "6. 按籍贯排序" << std::endl;
    std::cout << "7. 搜索学生信息" << std::endl;
    std::cout << "8. 统计男女学生人数" << std::endl;
    std::cout << "9. 统计出生年份学生人数" << std::endl;
    std::cout << "10. 统计政治面貌学生人数" << std::endl;
    std::cout << "11. 统计班级学生人数" << std::endl;
    std::cout << "0. 退出程序" << std::endl;
}
 
int main() {
    while (true) {
        displayMenu();
        int option;
        std::cout << "请输入选项: ";
        std::cin >> option;
        if (option == 0) {
            break;
        }
        switch (option) {
        case 1:
            browseStudentInfo();
            break;
        case 2:
            sortStudentInfo(option);
            break;
        case 3:
            sortStudentInfo(option);
            break;
        case 4:
            sortStudentInfo(option);
            break;
        case 5:
            sortStudentInfo(option);
            break;
        case 6:
            sortStudentInfo(option);
            break;
        case 7: {
            int searchOption;
            std::string keyword;
            std::cout << "请输入搜索选项: ";
            std::cin >> searchOption;
            std::cout << "请输入关键词: ";
            std::cin >> keyword;
            searchStudentInfo(searchOption, keyword);
            break;
        }
        case 8:
            countByGender();
            break;
        case 9:
            countByBirthYear();
            break;
        case 10:
            countByPoliticalStatus();
            break;
        case 11:
            countByClass();
            break;
        default:
            std::cout << "无效的选项!" << std::endl;
            break;
        }
    }
    return 0;
}
 

这种直接拿chatgpt一搜全是。

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

struct Student {
    string studentId;
    string name;
    int age;
    string gender;
    string birthDate;
    string politicalStatus;
    string hometown;
    string address;
    string phone;
    string email;
};

vector<Student> students;

void displayMenu() {
    cout << "1. 学生信息录入" << endl;
    cout << "2. 学生信息浏览" << endl;
    cout << "3. 学生信息排序和查询" << endl;
    cout << "4. 信息统计" << endl;
    cout << "5. 学生信息的删除与修改" << endl;
    cout << "0. 退出程序" << endl;
    cout << "请输入菜单选项:";
}

void addStudent() {
    Student student;
    cout << "请输入学生信息:" << endl;
    cout << "学号: ";
    cin >> student.studentId;
    cout << "姓名: ";
    cin >> student.name;
    cout << "年龄: ";
    cin >> student.age;
    cout << "性别: ";
    cin >> student.gender;
    cout << "出生年月: ";
    cin >> student.birthDate;
    cout << "政治面貌: ";
    cin >> student.politicalStatus;
    cout << "籍贯: ";
    cin >> student.hometown;
    cout << "家庭住址: ";
    cin >> student.address;
    cout << "电话: ";
    cin >> student.phone;
    cout << "E-mail: ";
    cin >> student.email;

    students.push_back(student);

    // 将学生信息写入文件
    ofstream file("students.txt", ios::app);
    file << student.studentId << " "
         << student.name << " "
         << student.age << " "
         << student.gender << " "
         << student.birthDate << " "
         << student.politicalStatus << " "
         << student.hometown << " "
         << student.address << " "
         << student.phone << " "
         << student.email << endl;
    file.close();

    cout << "学生信息录入成功!" << endl;
}

void viewStudents() {
    cout << "学生信息如下:" << endl;
    for (const auto& student : students) {
        cout << "学号: " << student.studentId << endl;
        cout << "姓名: " << student.name << endl;
        cout << "年龄: " << student.age << endl;
        cout << "性别: " << student.gender << endl;
        cout << "出生年月: " << student.birthDate << endl;
        cout << "政治面貌: " << student.politicalStatus << endl;
        cout << "籍贯: " << student.hometown << endl;
        cout << "家庭住址: " << student.address << endl;
        cout << "电话: " << student.phone << endl;
        cout << "E-mail: " << student.email << endl;
        cout << endl;
    }
}

bool compareByStudentId(const Student& s1, const Student& s2) {
    return s1.studentId < s2.studentId;
}

bool compareByName(const Student& s1, const Student& s2) {
    return s1.name < s2.name;
}

bool compareByGender(const Student& s1, const Student& s2) {
    return s1.gender < s2.gender;
}

bool compareByBirthDate(const Student& s1, const Student& s2) {
    return s1.birthDate < s2.birthDate;
}

bool compareByHometown(const Student& s1, const Student& s2) {
    return s1.hometown < s2.hometown;
}

void sortAndQueryStudents() {
    cout << "请选择排序方式:" << endl;
    cout << "1. 按学号排序" << endl;
    cout << "2. 按姓名排序" << endl;
    cout << "3. 按性别排序" << endl;
    cout << "4. 按出生年月排序" << endl;
    cout << "5. 按籍贯排序" << endl;
    cout << "请输入排序选项:";
    int option;
    cin >> option;

    switch (option) {
        case 1:
            sort(students.begin(), students.end(), compareByStudentId);
            break;
        case 2:
            sort(students.begin(), students.end(), compareByName);
            break;
        case 3:
            sort(students.begin(), students.end(), compareByGender);
            break;
        case 4:
            sort(students.begin(), students.end(), compareByBirthDate);
            break;
        case 5:
            sort(students.begin(), students.end(), compareByHometown);
            break;
        default:
            cout << "无效的选项!" << endl;
            return;
    }

    viewStudents();
}

void countStudentsByGender() {
    int maleCount = 0;
    int femaleCount = 0;

    for (const auto& student : students) {
        if (student.gender == "男") {
            maleCount++;
        } else if (student.gender == "女") {
            femaleCount++;
        }
    }

    cout << "男生人数:" << maleCount << endl;
    cout << "女生人数:" << femaleCount << endl;
}

void countStudentsByBirthYear() {
    cout << "请输入统计年份:";
    int year;
    cin >> year;

    int count = 0;

    for (const auto& student : students) {
        string birthYear = student.birthDate.substr(0, 4);
        if (stoi(birthYear) == year) {
            count++;
        }
    }

    cout << year << "年出生的学生人数:" << count << endl;
}

void countStudentsByHometown() {
    cout << "请输入统计籍贯:";
    string hometown;
    cin >> hometown;

    int count = 0;

    for (const auto& student : students) {
        if (student.hometown == hometown) {
            count++;
        }
    }

    cout << hometown << "籍贯的学生人数:" << count << endl;
}

void deleteStudent() {
    cout << "请输入要删除的学生的学号:";
    string studentId;
    cin >> studentId;

    for (auto it = students.begin(); it != students.end(); ++it) {
        if (it->studentId == studentId) {
            students.erase(it);
            cout << "学生信息删除成功!" << endl;
            return;
        }
    }

    cout << "未找到该学生的信息!" << endl;
}

void modifyStudent() {
    cout << "请输入要修改的学生的学号:";
    string studentId;
    cin >> studentId;

    for (auto& student : students) {
        if (student.studentId == studentId) {
            cout << "请输入修改后的学生信息:" << endl;
            cout << "学号: ";
            cin >> student.studentId;
            cout << "姓名: ";
            cin >> student.name;
            cout << "年龄: ";
            cin >> student.age;
            cout << "性别: ";
            cin >> student.gender;
            cout << "出生年月: ";
            cin >> student.birthDate;
            cout << "政治面貌: ";
            cin >> student.politicalStatus;
            cout << "籍贯: ";
            cin >> student.hometown;
            cout << "家庭住址: ";
            cin >> student.address;
            cout << "电话: ";
            cin >> student.phone;
            cout << "E-mail: ";
            cin >> student.email;

            cout << "学生信息修改成功!" << endl;
            return;
        }
    }

    cout << "未找到该学生的信息!" << endl;
}

int main() {
    ifstream file("students.txt");
    if (file.is_open()) {
        string studentId, name, gender, birthDate, politicalStatus, hometown, address, phone, email;
        int age;
        while (file >> studentId >> name >> age >> gender >> birthDate >> politicalStatus >> hometown >> address >> phone >> email) {
            Student student{studentId, name, age, gender, birthDate, politicalStatus, hometown, address, phone, email};
            students.push_back(student);
        }
        file.close();
    }

    int option;
    while (true) {
        displayMenu();
        cin >> option;
        cout << endl;

        switch (option) {
            case 1:
                addStudent();
                break;
            case 2:
                viewStudents();
                break;
            case 3:
                sortAndQueryStudents();
                break;
            case 4:
                cout << "请选择统计方式:" << endl;
                cout << "1. 按性别统计学生人数" << endl;
                cout << "2. 按出生年统计学生人数" << endl;
                cout << "3. 按籍贯统计学生人数" << endl;
                cout << "请输入统计选项:";
                int statOption;
                cin >> statOption;
                cout << endl;
                switch (statOption) {
                    case 1:
                        countStudentsByGender();
                        break;
                    case 2:
                        countStudentsByBirthYear();
                        break;
                    case 3:
                        countStudentsByHometown();
                        break;
                    default:
                        cout << "无效的选项!" << endl;
                        break;
                }
                break;
            case 5:
                cout << "请选择操作:" << endl;
                cout << "1. 删除学生信息" << endl;
                cout << "2. 修改学生信息" << endl;
                cout << "请输入操作选项:";
                int op;
                cin >> op;
                cout << endl;
                switch (op) {
                    case 1:
                        deleteStudent();
                        break;
                    case 2:
                        modifyStudent();
                        break;
                    default:
                        cout << "无效的选项!" << endl;
                        break;
                }
                break;
            case 0:
                cout << "程序已退出。" << endl;
                return 0;
            default:
                cout << "无效的选项!" << endl;
                break;
        }

        cout << endl;
    }

    return 0;
}

每天都有人问这种,这种你网上搜啊,一大堆

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7460477
  • 这篇博客你也可以参考下:c++ 学生成绩管理系统
  • 除此之外, 这篇博客: c++学生链表的实现中的 流程 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在主函数中,提示用户输入节点个数n,然后提示用户输入指令,并进行相应操作

  • 您还可以看一下 陈小玉老师的C++快速入门课程中的 字符串小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    针对学生管理信息系统,您可以考虑以下几个功能的实现:

    1. 添加学生信息 可以通过定义一个学生类来存储学生的信息,包括学号、姓名、性别、年龄等等。定义一个包含学生类对象的数组,并且在程序运行时从键盘输入学生信息添加到数组中。

    示例代码:

    #include <iostream>
    #include <string>
    using namespace std;
    
    class Student {
    public:
        string id;      // 学号
        string name;    // 姓名
        char gender;    // 性别
        int age;        // 年龄
        // ... 其他属性和方法
    };
    
    int main() {
        const int MAX_STUDENT = 100;    // 最大学生数
        Student students[MAX_STUDENT];  // 学生数组
    
        // 从键盘输入学生信息,并添加到数组中
        int numStudents;  // 学生数
        cout << "请输入学生数: ";
        cin >> numStudents;
        for (int i = 0; i < numStudents; i++) {
            cout << "请输入学号、姓名、性别(男/女)、年龄: ";
            cin >> students[i].id >> students[i].name >> students[i].gender >> students[i].age;
            // ... 输入其他属性
        }
    
        // TODO: 将学生信息保存到文件中
    
        return 0;
    }
    
    1. 修改学生信息 可以通过从数组中查找学生对象,然后修改其属性来实现。可以考虑将学生的信息以学号作为键值存储到一个哈希表中,这样可以提高查找效率。

    示例代码:

    // 实现一个哈希表,将学生对象以学号作为键值存储
    class StudentHashTable {
    public:
        void add(const Student& student) {
            // TODO: 实现添加操作
        }
        void remove(const string& studentId) {
            // TODO: 实现删除操作
        }
        Student* find(const string& studentId) {
            // TODO: 实现查找操作
            return nullptr;
        }
        void update(const string& studentId, const Student& newStudent) {
            Student* student = find(studentId);
            if (student != nullptr) {
                *student = newStudent;
            }
        }
        // ... 其他操作
    };
    
    1. 删除学生信息 同样可以通过从数组或哈希表中查找学生对象,然后将其删除来实现。

    示例代码:

    // 实现一个哈希表,将学生对象以学号作为键值存储
    class StudentHashTable {
    public:
        void add(const Student& student) {
            // TODO: 实现添加操作
        }
        void remove(const string& studentId) {
            // TODO: 实现删除操作
        }
        // ... 其他操作
    };
    
    // 从哈希表中删除学生对象
    void deleteStudent(StudentHashTable& hashTable, const string& studentId) {
        hashTable.remove(studentId);
    }
    
    1. 查看学生信息 可以通过输出数组或哈希表中的学生对象来查看学生信息。

    示例代码:

    // 输出学生信息
    void printStudent(const Student& student) {
        cout << student.id << " " << student.name << " " << student.gender << " " << student.age << endl;
        // ... 输出其他属性
    }
    
    // 输出所有学生信息
    void printAllStudents(const StudentHashTable& hashTable) {
        // 遍历哈希表中的所有键值对,输出学生信息
        // TODO: 实现遍历操作
        Student* student = nullptr;
        while ((student = hashTable.getNextStudent()) != nullptr) {
            printStudent(*student);
        }
    }
    
    // 从哈希表中查找并输出某个学生的信息
    void findAndPrintStudent(StudentHashTable& hashTable, const string& studentId) {
        Student* student = hashTable.find(studentId);
        if (student != nullptr) {
            printStudent(*student);
        }
    }
    
    1. 排序学生信息 可以通过sort算法对数组中的学生对象按某个属性进行排序。

    示例代码:

    // 比较器类,用于为sort算法提供排序规则
    class StudentComparator {
    public:
        bool operator()(const Student& s1, const Student& s2) {
            // 按学号升序排列
            return s1.id < s2.id;
        }
    };
    
    void sortStudents(Student students[], int numStudents) {
        sort(students, students + numStudents, StudentComparator());
    }
    

需求to我,价低