使用顺序表编写编写一个学生信息管理系统,实现学生信息的增删改查等功能。 (1)定义学生结构体,实现简单的输入输出和文件操作功能,完成测试。 用c++
时间: 2024-09-29 07:05:12 浏览: 33
在C++中,我们可以使用顺序表(如数组或动态数组)来创建一个简单的学生信息管理系统。首先,我们需要定义一个`Student`结构体来存储学生的属性,例如姓名、学号和成绩等。然后,我们将实现基本的操作函数,如添加新学生、删除学生、修改学生信息以及从文件中读取和保存数据。以下是基础的实现步骤:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
// 定义学生结构体
struct Student {
std::string name;
int id;
float score;
// 构造函数和成员函数
Student(const std::string& n, int i, float s) : name(n), id(i), score(s) {}
friend std::ostream& operator<<(std::ostream& os, const Student& student);
};
// 输出学生信息到流
std::ostream& operator<<(std::ostream& os, const Student& student) {
return os << "Name: " << student.name << ", ID: " << student.id << ", Score: " << student.score << "\n";
}
// 顺序表实现
class StudentInfoManager {
private:
std::vector<Student> students;
std::ofstream fileStream; // 文件操作
public:
// 添加学生
void addStudent(const Student& newStudent) {
students.push_back(newStudent);
if (fileStream.is_open()) {
fileStream << newStudent;
}
}
// 删除学生
bool removeStudent(int id) {
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->id == id) {
students.erase(it);
if (fileStream.is_open()) {
fileStream.seekp(0, std::ios::end); // 移动到末尾,避免覆盖其他学生的信息
}
return true;
}
}
return false;
}
// 修改学生信息
bool updateScore(int id, float newScore) {
for (auto& student : students) {
if (student.id == id) {
student.score = newScore;
if (fileStream.is_open()) {
fileStream << student;
}
return true;
}
}
return false;
}
// 从文件加载学生信息
void loadFromFile(const std::string& filename) {
fileStream.open(filename, std::ios::in | std::ios::app);
if (fileStream.is_open()) {
std::string line;
while (getline(fileStream, line)) {
std::istringstream iss(line);
Student temp;
iss >> temp;
students.push_back(temp);
}
fileStream.close();
}
}
// 保存学生信息到文件
void saveToFile(const std::string& filename) {
fileStream.open(filename, std::ios::out | std::ios::trunc);
for (const auto& student : students) {
fileStream << student;
}
fileStream.close();
}
};
```
你可以使用上述代码作为起点,对其进行适当的测试,包括插入一些学生信息,尝试删除和更新,以及在程序启动时加载和保存数据。同时,注意处理文件打开和关闭错误,以及对用户输入的验证,以保证程序健壮性。
阅读全文