一个简单的基于控制台的学生管理系统。用户可以执行以下操作:
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;
}