编写一个简易学生信息管理系统.学生信息可以由自定义的结构体或类存储.以链表形式关联所有数据. 实现学生信息的列表显示,查找,删除,增加,保存至文件等功能.用c++
时间: 2024-12-13 07:18:59 浏览: 38
为了实现一个简易的学生信息管理系统,我们可以使用C++中的`std::list`来存储学生的数据,并定义一个结构体来表示学生信息。这里是一个简单的示例:
首先,定义一个`Student`结构体:
```cpp
#include <string>
#include <iostream>
struct Student {
std::string name;
int id;
float grade;
// 构造函数和析构函数
Student(const std::string& n, int i, float g) : name(n), id(i), grade(g) {}
~Student() {}
// 显示学生信息的方法
void display_info() const {
std::cout << "Name: " << name << ", ID: " << id << ", Grade: " << grade << std::endl;
}
};
```
接下来,创建`StudentList`类,包含操作列表的方法:
```cpp
class StudentList {
private:
std::list<Student> students;
public:
// 添加新学生
void add_student(const std::string& name, int id, float grade) {
students.push_back(Student(name, id, grade));
}
// 显示所有学生
void show_students() const {
for (const auto& student : students) {
student.display_info();
}
}
// 查找特定学生(假设通过名字查找)
Student* find_by_name(const std::string& name) {
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->name == name) {
return &(*it);
}
}
return nullptr; // 如果未找到,返回nullptr
}
// 删除学生(假设通过ID删除)
void remove_student(int id) {
students.remove_if([id](const Student& s) { return s.id == id; });
}
// 保存到文件(此处仅作简单示例,实际应用可能需要更复杂的数据序列化)
void save_to_file(const std::string& filename) const {
std::ofstream file(filename);
for (const auto& student : students) {
file << "Name: " << student.name << ", ID: " << student.id << ", Grade: " << student.grade << "\n";
}
file.close();
}
};
```
现在你可以创建一个`StudentList`实例并进行各种操作:
```cpp
int main() {
StudentList system;
// 添加学生
system.add_student("Alice", 123, 90.0);
system.add_student("Bob", 456, 85.5);
// 显示所有学生
system.show_students();
// 查找学生
Student* foundStudent = system.find_by_name("Alice");
if (foundStudent) {
foundStudent->display_info();
} else {
std::cout << "Student not found.\n";
}
// 删除学生
system.remove_student(123);
// 保存到文件
system.save_to_file("students.txt");
return 0;
}
```
阅读全文