家族族谱管理系统c++
时间: 2023-06-29 12:19:32 浏览: 185
好的,以下是一个简单的家族族谱管理系统的实现,供您参考:
```c++
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct Member {
string name; // 成员姓名
vector<Member> children; // 孩子列表
};
Member root; // 家族族谱根节点
// 添加成员
void add_member(Member& parent) {
string name;
cout << "请输入要添加的成员姓名:\n";
cin >> name;
Member new_member = {name};
parent.children.push_back(new_member);
cout << "添加成功!\n";
}
// 删除成员
void delete_member(Member& parent) {
string name;
cout << "请输入要删除的成员姓名:\n";
cin >> name;
for (auto it = parent.children.begin(); it != parent.children.end(); it++) {
if (it->name == name) {
parent.children.erase(it);
cout << "删除成功!\n";
return;
}
}
cout << "没有找到该成员!\n";
}
// 显示成员列表
void show_member_list(Member& parent, int level) {
for (auto it = parent.children.begin(); it != parent.children.end(); it++) {
for (int i = 0; i < level; i++) {
cout << " "; // 根据层级缩进
}
cout << "└─" << it->name << endl;
show_member_list(*it, level + 1); // 递归显示子孙列表
}
}
// 查询成员
void search_member(Member& parent) {
string name;
cout << "请输入要查询的成员姓名:\n";
cin >> name;
for (auto it = parent.children.begin(); it != parent.children.end(); it++) {
if (it->name == name) {
cout << "找到了该成员!\n";
return;
}
search_member(*it); // 递归查询子孙列表
}
}
int main() {
root.name = "家族族谱"; // 根节点
while (true) { // 家族族谱管理程序循环
cout << "请选择操作:\n";
cout << "a. 添加成员\n";
cout << "b. 删除成员\n";
cout << "c. 显示成员列表\n";
cout << "d. 查询成员\n";
cout << "e. 退出程序\n";
char choice;
cin >> choice;
switch (choice) {
case 'a':
add_member(root);
break;
case 'b':
delete_member(root);
break;
case 'c':
show_member_list(root, 0);
break;
case 'd':
search_member(root);
break;
case 'e':
cout << "程序已退出!\n";
return 0;
default:
cout << "输入无效,请重新输入!\n";
break;
}
}
}
```
该程序通过使用递归结构来实现家族族谱的管理。程序中每个成员都有一个 `vector` 类型的孩子列表,可以通过添加和删除孩子来修改家族族谱。同时,程序支持显示成员列表和查询成员等功能。
阅读全文