C++编程作品——学生信息小助手

[日期:2025-10-15] 作者:信息技术 次浏览 [字体: ]

功能介绍:

  • 能记录班上同学的基本信息:姓名、学号、语文数学成绩

  • 能计算每个人的平均分和总分

  • 能按成绩从高到低排名

  • 操作要简单,有菜单选择


我用到了哪些C++知识?

    • coutcin(输入输出)

    • 数组(存放多个学生信息)

    • 结构体(把每个学生的信息打包在一起)

    • 循环(让程序重复运行)

    • 选择语句(if/switch做菜单)

    • 排序算法(给成绩排名)

遇到什么困难?

  • 排序可能有点难,但可以用简单的冒泡排序

  • 输入输出格式要整齐

  • 要防止程序崩溃(比如输入字母时)

虽然有点挑战,但我觉得我还是搞定了!下面是我的代码

#include <iostream>

#include <string>

using namespace std;


// 定义一个学生结构体

struct Student {

    string name;

    int id;

    float chinese;

    float math;

    float total;

    float average;

};


// 显示菜单函数

void showMenu() {

    cout << "\n========= 学生信息小助手 =========" << endl;

    cout << "1. 输入学生信息" << endl;

    cout << "2. 显示所有学生信息" << endl;

    cout << "3. 按总成绩排名" << endl;

    cout << "4. 退出程序" << endl;

    cout << "请选择(1-4): ";

}


// 输入学生信息函数

void inputStudents(Student students[], int &count) {

    if (count >= 50) {

        cout << "人数已满,不能再添加!" << endl;

        return;

    }

    

    cout << "\n--- 输入第 " << count + 1 << " 个学生信息 ---" << endl;

    cout << "姓名: ";

    cin >> students[count].name;

    cout << "学号: ";

    cin >> students[count].id;

    cout << "语文成绩: ";

    cin >> students[count].chinese;

    cout << "数学成绩: ";

    cin >> students[count].math;

    

    // 计算总分和平均分

    students[count].total = students[count].chinese + students[count].math;

    students[count].average = students[count].total / 2;

    

    count++;

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

}


// 显示所有学生信息

void displayStudents(Student students[], int count) {

    if (count == 0) {

        cout << "还没有学生信息,请先输入!" << endl;

        return;

    }

    

    cout << "\n--- 所有学生信息 ---" << endl;

    cout << "序号\t姓名\t学号\t语文\t数学\t总分\t平均分" << endl;

    cout << "------------------------------------------------" << endl;

    

    for (int i = 0; i < count; i++) {

        cout << i + 1 << "\t" << students[i].name << "\t" 

             << students[i].id << "\t" << students[i].chinese << "\t"

             << students[i].math << "\t" << students[i].total << "\t"

             << students[i].average << endl;

    }

}


// 按总成绩排序(冒泡排序)

void sortStudents(Student students[], int count) {

    if (count == 0) {

        cout << "还没有学生信息,请先输入!" << endl;

        return;

    }

    

    for (int i = 0; i < count - 1; i++) {

        for (int j = 0; j < count - 1 - i; j++) {

            if (students[j].total < students[j + 1].total) {

                // 交换两个学生的位置

                Student temp = students[j];

                students[j] = students[j + 1];

                students[j + 1] = temp;

            }

        }

    }

    

    cout << "排名完成!" << endl;

    displayStudents(students, count);

}


int main() {

    Student students[50];  // 最多存放50个学生

    int studentCount = 0;  // 当前学生人数

    int choice;

    

    cout << "欢迎使用学生信息小助手!" << endl;

    

    do {

        showMenu();

        cin >> choice;

        

        switch (choice) {

            case 1:

                inputStudents(students, studentCount);

                break;

            case 2:

                displayStudents(students, studentCount);

                break;

            case 3:

                sortStudents(students, studentCount);

                break;

            case 4:

                cout << "谢谢使用,再见!" << endl;

                break;

            default:

                cout << "输入错误,请重新选择!" << endl;

        }

    } while (choice != 4);

    

    return 0;

}

#include <iostream>

#include <string>

using namespace std;


// 定义一个学生结构体

struct Student {

    string name;

    int id;

    float chinese;

    float math;

    float total;

    float average;

};


// 显示菜单函数

void showMenu() {

    cout << "\n========= 学生信息小助手 =========" << endl;

    cout << "1. 输入学生信息" << endl;

    cout << "2. 显示所有学生信息" << endl;

    cout << "3. 按总成绩排名" << endl;

    cout << "4. 退出程序" << endl;

    cout << "请选择(1-4): ";

}


// 输入学生信息函数

void inputStudents(Student students[], int &count) {

    if (count >= 50) {

        cout << "人数已满,不能再添加!" << endl;

        return;

    }

    

    cout << "\n--- 输入第 " << count + 1 << " 个学生信息 ---" << endl;

    cout << "姓名: ";

    cin >> students[count].name;

    cout << "学号: ";

    cin >> students[count].id;

    cout << "语文成绩: ";

    cin >> students[count].chinese;

    cout << "数学成绩: ";

    cin >> students[count].math;

    

    // 计算总分和平均分

    students[count].total = students[count].chinese + students[count].math;

    students[count].average = students[count].total / 2;

    

    count++;

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

}


// 显示所有学生信息

void displayStudents(Student students[], int count) {

    if (count == 0) {

        cout << "还没有学生信息,请先输入!" << endl;

        return;

    }

    

    cout << "\n--- 所有学生信息 ---" << endl;

    cout << "序号\t姓名\t学号\t语文\t数学\t总分\t平均分" << endl;

    cout << "------------------------------------------------" << endl;

    

    for (int i = 0; i < count; i++) {

        cout << i + 1 << "\t" << students[i].name << "\t" 

             << students[i].id << "\t" << students[i].chinese << "\t"

             << students[i].math << "\t" << students[i].total << "\t"

             << students[i].average << endl;

    }

}


// 按总成绩排序(冒泡排序)

void sortStudents(Student students[], int count) {

    if (count == 0) {

        cout << "还没有学生信息,请先输入!" << endl;

        return;

    }

    

    for (int i = 0; i < count - 1; i++) {

        for (int j = 0; j < count - 1 - i; j++) {

            if (students[j].total < students[j + 1].total) {

                // 交换两个学生的位置

                Student temp = students[j];

                students[j] = students[j + 1];

                students[j + 1] = temp;

            }

        }

    }

    

    cout << "排名完成!" << endl;

    displayStudents(students, count);

}


int main() {

    Student students[50];  // 最多存放50个学生

    int studentCount = 0;  // 当前学生人数

    int choice;

    

    cout << "欢迎使用学生信息小助手!" << endl;

    

    do {

        showMenu();

        cin >> choice;

        

        switch (choice) {

            case 1:

                inputStudents(students, studentCount);

                break;

            case 2:

                displayStudents(students, studentCount);

                break;

            case 3:

                sortStudents(students, studentCount);

                break;

            case 4:

                cout << "谢谢使用,再见!" << endl;

                break;

            default:

                cout << "输入错误,请重新选择!" << endl;

        }

    } while (choice != 4);

    

    return 0;

}


通过这个项目,我学会了:

  • 用结构体组织相关数据

  • 用数组管理多个数据对象

  • 基本的排序算法

  • 菜单驱动的程序设计

  • 模块化编程(把功能写成函数)

这个程序虽然简单,但真的很实用!我们班同学都可以用它来管理成绩。你也可以根据自己的想法修改和扩展,比如增加更多科目、计算班级平均分等等。

加油,编程其实很有趣的!