用C++实现——学生管理系统


一个简单的基于控制台的学生管理系统。用户可以执行以下操作:
1. 添加学生
2. 删除学生
3. 更新学生信息
4. 显示所有学生信息
5. 退出程序

为了实现这个系统,我们定义了两个类:`Student`和`StudentManager`。`Student`类包含学生的基本信息(姓名、年龄和ID),以及用于访问和修改这些信息的方法。`StudentManager`类负责管理一组学生,可以添加、删除、修改和查找学生。

`main()`函数提供了一个简单的用户界面,允许用户与学生管理系统交互。用户可以根据提示输入选择,执行相应的操作。请注意,该示例不包含输入验证和错误处理,您可能需要在实际应用中加入这些功能。
 

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

class Student {
public:
    Student(std::string name, int age, int id) : name_(name), age_(age), id_(id) {}

    std::string GetName() const {
        return name_;
    }

    int GetAge() const {
        return age_;
    }

    int GetId() const {
        return id_;
    }

    void SetName(std::string name) {
        name_ = name;
    }

    void SetAge(int age) {
        age_ = age;
    }

private:
    std::string name_;
    int age_;
    int id_;
};

class StudentManager {
public:
    void AddStudent(const Student& student) {
        students_.push_back(student);
    }

    bool RemoveStudent(int id) {
        auto it = std::find_if(students_.begin(), students_.end(), [id](const Student& s) {
            return s.GetId() == id;
        });

        if (it != students_.end()) {
            students_.erase(it);
            return true;
        }
        return false;
    }

    Student* FindStudent(int id) {
        auto it = std::find_if(students_.begin(), students_.end(), [id](const Student& s) {
            return s.GetId() == id;
        });

        if (it != students_.end()) {
            return &(*it);
        }
        return nullptr;
    }

    void DisplayStudents() const {
        for (const auto& student : students_) {
            std::cout << "ID: " << student.GetId() << ", Name: " << student.GetName() << ", Age: " << student.GetAge() << std::endl;
        }
    }

private:
    std::vector<Student> students_;
};

int main() {
    StudentManager manager;

    int choice;
    while (true) {
        std::cout << "1. Add student\n";
        std::cout << "2. Remove student\n";
        std::cout << "3. Update student\n";
        std::cout << "4. Display students\n";
        std::cout << "5. Exit\n";
        std::cout << "Enter your choice: ";
        std::cin >> choice;

        switch (choice) {
            case 1: {
                std::string name;
                int age, id;
                std::cout << "Enter name, age, and ID: ";
                std::cin >> name >> age >> id;
                manager.AddStudent(Student(name, age, id));
                break;
            }
            case 2: {
                int id;
                std::cout << "Enter ID: ";
                std::cin >> id;
                if (manager.RemoveStudent(id)) {
                    std::cout << "Student removed successfully.\n";
                } else {
                    std::cout << "Student not found.\n";
                }
                break;
            }
            case 3: {
                int id;
                std::cout << "Enter ID: ";
                std::cin >> id;
                Student* student = manager.FindStudent(id);
                if (student) {
                    std::string name;
                    int age;
                    std::cout << "Enter new name and age: ";
                    std::cin >> name >>age;
					student->SetName(name);
					student->SetAge(age);
					std::cout << "Student updated successfully.\n";
				} else {
					std::cout << "Student not found.\n";
				}
				break;
			}
			case 4: {
				manager.DisplayStudents();
				break;
			}
			case 5: {
				std::cout << "Exiting...\n";
				return 0;
			}
			default: {
				std::cout << "Invalid choice. Please try again.\n";
				break;
			}
		}
	}
	return 0;
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT大鸵鸟

你的鼓励是我创作的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值