C++:制作一个学生成绩管理系统

鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)

写一个c++98模式的程序,并能实现下列功能。
1.浏览功能: 能合理的显示学生跟成绩信息,不限方法。(学生成绩要求不少于3门课程)
2.查询功能: 能根据某一关键字进行学生成绩查询。
3.更改功能: 能更改学生信息中的某项内容。
4.删除功能:可以删除具体某个学生的信息。
5.录入(插入) 功能:能增加或者录入新的学生成绩信息。
6.排序功能: 能根据某一关键字进行排序。
7.退出系统。

学生成绩管理系统原理详细解释:

  1. 数据结构: 使用学生结构体(struct Student)来组织学生的基本信息,包括姓名、学号、三门课程的成绩等。

  2. 类与对象: 虽然示例代码中没有显式使用类,但可以将学生成绩管理系统看作一个类,每个学生对象是该类的实例。

  3. 模块化设计: 将不同功能拆分为独立的函数或方法,如添加学生信息、显示所有学生信息、查询学生信息等,以提高代码的可读性和可维护性。

  4. 交互式控制台界面: 通过在控制台输出提示信息,接收用户的输入,实现与用户的简单交互。

  5. 基本操作: 包括添加学生、显示所有学生、查询学生、更新学生成绩、删除学生、录入学生信息、排序等基本操作,满足用户对学生信息的管理需求。

  6. 数据存储: 在示例代码中,数据存储在内存中,每次程序运行都是一个新的实例。在实际应用中,可以将数据存储到文件、数据库等持久化存储介质中。

底层架构流程图:

+---------------------+
|  学生成绩管理系统   |
+---------------------+
         |
   +-----|-----+
   |           |
+--v--+    +--v--+
| 模块1 |    | 模块2 |
+------+    +------+
   |           |
   +-----|-----+
         |
   +-----|-----+
   |           |
+--v--+    +--v--+
| 模块3 |    | 模块4 |
+------+    +------+
         |
   +-----|-----+
   |           |
+--v--+    +--v--+
| 模块5 |    | 模块6 |
+------+    +------+
         |
         .
         .

使用场景解释:

  1. 学校学生成绩管理: 学校老师或管理员可以使用该系统对学生的成绩进行管理,包括添加新生信息、录入学生成绩、查询学生成绩、更新学生成绩等。

  2. 个人学习记录: 学生可以使用该系统记录个人的学习成绩,方便查看自己的学业情况,也可以在需要时向老师展示成绩。

  3. 培训机构学员管理: 培训机构可以利用该系统对学员的培训成绩进行管理,实现学员信息的录入、查询、更新等功能。

  4. 其他学生成绩统计场景: 适用于需要管理学生成绩的各类教育培训机构或学校。

#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

const int MAX_STUDENTS = 100;

// 学生结构体
struct Student {
    string name;
    int id;
    double score1, score2, score3;
};

// 学生成绩管理类
class StudentManager {
private:
    Student students[MAX_STUDENTS];
    int numStudents;

public:
    // 构造函数
    StudentManager() : numStudents(0) {}

    // 添加学生
    void addStudent(const Student& student) {
        if (numStudents < MAX_STUDENTS) {
            students[numStudents++] = student;
            cout << "学生信息已添加!" << endl;
        } else {
            cout << "学生信息已满,无法添加更多学生!" << endl;
        }
    }

    // 显示所有学生信息
    void displayAllStudents() {
        cout << "学生信息列表:" << endl;
        for (int i = 0; i < numStudents; ++i) {
            displayStudent(students[i]);
        }
    }

    // 根据关键字查询学生信息
    void searchStudent(const string& keyword) {
        bool found = false;
        for (int i = 0; i < numStudents; ++i) {
            if (students[i].name.find(keyword) != string::npos || to_string(students[i].id).find(keyword) != string::npos) {
                displayStudent(students[i]);
                found = true;
            }
        }
        if (!found) {
            cout << "未找到符合条件的学生信息!" << endl;
        }
    }

    // 更改学生信息
    void updateStudent(int studentId, double newScore1, double newScore2, double newScore3) {
        for (int i = 0; i < numStudents; ++i) {
            if (students[i].id == studentId) {
                students[i].score1 = newScore1;
                students[i].score2 = newScore2;
                students[i].score3 = newScore3;
                cout << "学生信息已更新!" << endl;
                return;
            }
        }
        cout << "未找到指定学生,无法更新信息!" << endl;
    }

    // 删除学生信息
    void deleteStudent(int studentId) {
        for (int i = 0; i < numStudents; ++i) {
            if (students[i].id == studentId) {
                for (int j = i; j < numStudents - 1; ++j) {
                    students[j] = students[j + 1];
                }
                --numStudents;
                cout << "学生信息已删除!" << endl;
                return;
            }
        }
        cout << "未找到指定学生,无法删除信息!" << endl;
    }

    // 录入学生信息
    void inputStudentInfo() {
        Student newStudent;
        cout << "请输入学生姓名:" << endl;
        cin >> newStudent.name;
        cout << "请输入学生学号:" << endl;
        cin >> newStudent.id;
        cout << "请输入学生课程1成绩:" << endl;
        cin >> newStudent.score1;
        cout << "请输入学生课程2成绩:" << endl;
        cin >> newStudent.score2;
        cout << "请输入学生课程3成绩:" << endl;
        cin >> newStudent.score3;

        addStudent(newStudent);
    }

    // 根据关键字排序学生信息
    void sortStudentsByName() {
        for (int i = 0; i < numStudents - 1; ++i) {
            for (int j = 0; j < numStudents - i - 1; ++j) {
                if (students[j].name > students[j + 1].name) {
                    swap(students[j], students[j + 1]);
                }
            }
        }
        cout << "学生信息已按姓名排序!" << endl;
    }

private:
    // 显示单个学生信息
    void displayStudent(const Student& student) {
        cout << "姓名:" << student.name << " 学号:" << student.id
             << " 课程1成绩:" << student.score1 << " 课程2成绩:" << student.score2
             << " 课程3成绩:" << student.score3 << endl;
    }
};

int main() {
    StudentManager studentManager;

    int choice;
    do {
        cout << "======== 学生成绩管理系统 ========"
             << "\n1. 添加学生信息"
             << "\n2. 显示所有学生信息"
             << "\n3. 查询学生信息"
             << "\n4. 更新学生信息"
             << "\n5. 删除学生信息"
             << "\n6. 录入学生信息"
             << "\n7. 按姓名排序学生信息"
             << "\n0. 退出系统"
             << "\n请选择操作:";
        cin >> choice;

        switch (choice) {
            case 1: {
                Student newStudent;
                cout << "请输入学生姓名:" << endl;
                cin >> newStudent.name;
                cout << "请输入学生学号:" << endl;
                cin >> newStudent.id;
                cout << "请输入学生课程1成绩:" << endl;
                cin >> newStudent.score1;
                cout << "请输入学生课程2成绩:" << endl;
                cin >> newStudent.score2;
                cout << "请输入学生课程3成绩:" << endl;
                cin >> newStudent.score3;

                studentManager.addStudent(newStudent);
                break;
            }
            case 2:
                studentManager.displayAllStudents();
                break;
            case 3: {
                cout << "请输入查询关键字(姓名或学号):" << endl;
                string keyword;
                cin >> keyword;
                studentManager.searchStudent(keyword);
                break;
            }
            case 4: {
                int studentId;
                double newScore1, newScore2, newScore3;
                cout << "请输入要更新的学生学号:" << endl;
                cin >> studentId;
                cout << "请输入新的课程1成绩:" << endl;
                cin >> newScore1;
                cout << "请输入新的课程2成绩:" << endl;
                cin >> newScore2;
                cout << "请输入新的课程3成绩:" << endl;
                cin >> newScore3;

                studentManager.updateStudent(studentId, newScore1, newScore2, newScore3);
                break;
            }
            case 5: {
                int studentId;
                cout << "请输入要删除的学生学号:" << endl;
                cin >> studentId;
                studentManager.deleteStudent(studentId);
                break;
            }
            case 6:
                studentManager.inputStudentInfo();
                break;
            case 7:
                studentManager.sortStudentsByName();
                break;
            case 0:
                cout << "退出系统,谢谢使用!" << endl;
                break;
            default:
                cout << "无效的选择,请重新输入!" << endl;
        }
    } while (choice != 0);

    return 0;
}

文献材料链接:

  1. C++ Primer(第五版) - Stanley B. Lippman 等著:经典的C++入门教材,介绍了C++的基础知识和编程技巧。

  2. C++ Documentation - cplusplus.com: C++官方文档,提供了关于C++语言的详细信息和参考手册。

当前产品使用情况:

目前市面上有许多学生成绩管理系统,其中一些是基于Web的应用程序,可以提供更友好的用户界面和更强大的功能。例如,一些在线教育平台、学校信息管理系统等都包含学生成绩管理的功能。这些系统通常使用更先进的技术和数据库来支持大规模的学生数据管理。

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,学生成绩管理系统可以使用C语言来实现。以下是一个简单的实现,包括添加学生信息、查找学生信息、修改学生信息和删除学生信息等功能。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> struct student { char name[50]; int id; int score; }; int main() { struct student s[100]; int choice, i, n = 0, id, found = 0; do { printf("\n\n---学生成绩管理系统---\n"); printf("1. 添加学生信息\n"); printf("2. 查找学生信息\n"); printf("3. 修改学生信息\n"); printf("4. 删除学生信息\n"); printf("5. 显示所有学生信息\n"); printf("0. 退出\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch (choice) { case 1: printf("请输入学生姓名:"); scanf("%s", s[n].name); printf("请输入学生学号:"); scanf("%d", &s[n].id); printf("请输入学生成绩:"); scanf("%d", &s[n].score); n++; printf("学生信息添加成功!\n"); break; case 2: printf("请输入要查找的学生学号:"); scanf("%d", &id); found = 0; for (i = 0; i < n; i++) { if (s[i].id == id) { printf("学生姓名:%s\n", s[i].name); printf("学生学号:%d\n", s[i].id); printf("学生成绩:%d\n", s[i].score); found = 1; break; } } if (!found) { printf("没有找到该学生信息!\n"); } break; case 3: printf("请输入要修改的学生学号:"); scanf("%d", &id); found = 0; for (i = 0; i < n; i++) { if (s[i].id == id) { printf("请输入学生姓名:"); scanf("%s", s[i].name); printf("请输入学生成绩:"); scanf("%d", &s[i].score); found = 1; printf("学生信息修改成功!\n"); break; } } if (!found) { printf("没有找到该学生信息!\n"); } break; case 4: printf("请输入要删除的学生学号:"); scanf("%d", &id); found = 0; for (i = 0; i < n; i++) { if (s[i].id == id) { for (int j = i; j < n - 1; j++) { s[j] = s[j + 1]; } n--; found = 1; printf("学生信息删除成功!\n"); break; } } if (!found) { printf("没有找到该学生信息!\n"); } break; case 5: printf("所有学生信息如下:\n"); for (i = 0; i < n; i++) { printf("学生姓名:%s\n", s[i].name); printf("学生学号:%d\n", s[i].id); printf("学生成绩:%d\n", s[i].score); } break; case 0: printf("感谢使用学生成绩管理系统!\n"); break; default: printf("输入错误,请重新输入!\n"); break; } } while (choice != 0); return 0; } ``` 以上代码仅为一个简单的示例,实际开发中还需要考虑一些细节问题,比如数据的存储和读取、输入的合法性判断等。同时,也可以根据实际需求来进行功能扩展和优化。 ### 回答2: 学生成绩管理系统一个基于C语言开发的应用程序,主要用于学校或教育机构对学生成绩进行管理和分析。 该系统的主要功能包括学生信息录入、成绩录入、成绩查询、成绩分析和报告输出等。通过学生信息录入功能,管理员或教师可以将学生的基本信息录入系统,包括学号、姓名、性别、年级等。成绩录入功能则允许管理员或教师录入学生的各门课程的成绩信息,包括考试成绩、平时成绩等。 学生成绩查询功能可以根据学生的学号或姓名快速查询其对应的成绩信息。而成绩分析功能可以进行单个学生或整个班级的成绩分析,包括各科目成绩的平均分、最高分、最低分等统计数据,以及对学生的成绩进行排名等。管理员或教师可以根据这些分析结果了解学生的学习情况,并进行针对性的辅导。 另外,学生成绩管理系统还可以生成成绩报告或成绩单,以便管理员或教师将学生的成绩情况及时告知给学生或家长。报告输出功能可以根据需要进行灵活的设置,可以生成简单的成绩单,也可以生成详细的成绩报告。 总的来说,学生成绩管理系统利用C语言的编程优势,结合数据库技术,能够高效、准确地管理学生的成绩信息,并提供各种查询、分析和报告功能,帮助学校和教育机构更好地进行学生成绩管理工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼弦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值