要实现的主要功能如下: 1)建立项目类 2)项目信息的初始化 3)项目信息的添加、修改、删除、查找 4)项目信息的输出 5)将项目信息保存为文件 6)在项目信息中按项目编号、项目名称、项目等级排序
时间: 2024-03-04 11:49:34 浏览: 20
好的,我可以为您提供一个简单的项目类,其中包含数据成员和成员函数,以实现您所描述的主要功能。以下是一个示例:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
// 项目类
class Project {
private:
std::string id; // 项目编号
std::string name; // 项目名称
int level; // 项目等级
public:
// 构造函数
Project(std::string id = "", std::string name = "", int level = 0)
: id(id), name(name), level(level) {}
// 获取项目编号
std::string getID() const {
return id;
}
// 获取项目名称
std::string getName() const {
return name;
}
// 获取项目等级
int getLevel() const {
return level;
}
// 设置项目编号
void setID(std::string id) {
this->id = id;
}
// 设置项目名称
void setName(std::string name) {
this->name = name;
}
// 设置项目等级
void setLevel(int level) {
this->level = level;
}
// 显示项目信息
void display() const {
std::cout << "ID: " << id << ", Name: " << name << ", Level: " << level << std::endl;
}
// 从文件中读取项目信息
void read(std::ifstream& fin) {
fin >> id >> name >> level;
}
// 将项目信息写入文件
void write(std::ofstream& fout) const {
fout << id << " " << name << " " << level << std::endl;
}
};
// 项目管理类
class ProjectManager {
private:
std::vector<Project> projects; // 项目列表
// 根据项目编号查找项目
int findProjectByID(std::string id) const {
for (int i = 0; i < projects.size(); ++i) {
if (projects[i].getID() == id) {
return i;
}
}
return -1;
}
public:
// 添加项目
void addProject(Project project) {
projects.push_back(project);
}
// 修改项目
void modifyProject(std::string id, Project project) {
int index = findProjectByID(id);
if (index >= 0) {
projects[index] = project;
}
}
// 删除项目
void removeProject(std::string id) {
int index = findProjectByID(id);
if (index >= 0) {
projects.erase(projects.begin() + index);
}
}
// 查找项目
Project* findProject(std::string id) {
int index = findProjectByID(id);
if (index >= 0) {
return &projects[index];
}
return nullptr;
}
// 显示所有项目信息
void displayAll() const {
for (const auto& project : projects) {
project.display();
}
}
// 将项目信息保存到文件
void saveToFile(std::string filename) const {
std::ofstream fout(filename);
if (fout) {
for (const auto& project : projects) {
project.write(fout);
}
}
fout.close();
}
// 从文件中读取项目信息
void loadFromFile(std::string filename) {
std::ifstream fin(filename);
if (fin) {
projects.clear();
Project project;
while (!fin.eof()) {
project.read(fin);
if (!fin.eof()) {
projects.push_back(project);
}
}
}
fin.close();
}
// 按项目编号排序
void sortByID() {
std::sort(projects.begin(), projects.end(), [](const Project& a, const Project& b) {
return a.getID() < b.getID();
});
}
// 按项目名称排序
void sortByName() {
std::sort(projects.begin(), projects.end(), [](const Project& a, const Project& b) {
return a.getName() < b.getName();
});
}
// 按项目等级排序
void sortByLevel() {
std::sort(projects.begin(), projects.end(), [](const Project& a, const Project& b) {
return a.getLevel() < b.getLevel();
});
}
};
int main() {
ProjectManager manager;
// 添加项目
Project project1("001", "Project1", 1);
manager.addProject(project1);
Project project2("002", "Project2", 2);
manager.addProject(project2);
// 修改项目
Project modifiedProject("001", "ModifiedProject", 3);
manager.modifyProject("001", modifiedProject);
// 删除项目
manager.removeProject("002");
// 查找项目
Project* foundProject = manager.findProject("001");
if (foundProject) {
foundProject->display();
}
// 显示所有项目信息
manager.displayAll();
// 将项目信息保存到文件
manager.saveToFile("projects.txt");
// 从文件中读取项目信息
manager.loadFromFile("projects.txt");
// 排序并显示所有项目信息
manager.sortByID();
manager.displayAll();
manager.sortByName();
manager.displayAll();
manager.sortByLevel();
manager.displayAll();
return 0;
}
```
该示例中,我们创建了一个`Project`类和一个`ProjectManager`类。`ProjectManager`类包含了添加、修改、删除、查找、输出、排序等项目管理功能。我们在`main`函数中演示了如何使用这些功能。我们还演示了如何将项目信息保存到文件并从文件中读取项目信息。最后,我们进行了按项目编号、项目名称、项目等级的排序,并输出了排序后的结果。
请注意,此示例中的实现仅供参考。你可以根据自己的需求进行修改和扩展。