c++家谱族谱管理系统
时间: 2023-05-27 21:07:11 浏览: 104
家谱族谱管理系统是一种专门用于记录和管理家族谱系的软件系统。该系统可以帮助家族成员更好地了解自己的家族历史和文化传承,并且可以方便地记录和更新家族成员的基本信息、家族图谱、家族历史、家族文化等相关信息。家族成员可以通过该系统轻松查找和联系自己的亲属,促进家族成员之间的联系和交流。同时,该系统还可以为家族成员提供定制化的家族文化产品和服务,如家族纪念册、家族博物馆等。
相关问题
c++家谱管理系统二叉树
二叉树是一种常用的数据结构,我们可以通过二叉树来实现家谱管理系统。下面是一个简单的C++代码示例:
```c++
#include <iostream>
#include <string>
using namespace std;
// 家谱节点
struct Genealogy {
string name; // 姓名
Genealogy *father; // 父亲节点指针
Genealogy *mother; // 母亲节点指针
Genealogy(string n) : name(n), father(NULL), mother(NULL) {}
};
// 二叉树节点
struct TreeNode {
Genealogy *data; // 数据
TreeNode *left; // 左子节点指针
TreeNode *right; // 右子节点指针
TreeNode(Genealogy *d) : data(d), left(NULL), right(NULL) {}
};
// 插入节点
void insert(TreeNode *&root, Genealogy *data) {
if (root == NULL) {
root = new TreeNode(data);
return;
}
if (data->name < root->data->name) {
insert(root->left, data);
} else if (data->name > root->data->name) {
insert(root->right, data);
}
}
// 查找节点
Genealogy *search(TreeNode *root, string name) {
if (root == NULL) {
return NULL;
}
if (root->data->name == name) {
return root->data;
} else if (name < root->data->name) {
return search(root->left, name);
} else {
return search(root->right, name);
}
}
// 打印家谱
void print(Genealogy *root, int level) {
if (root == NULL) {
return;
}
for (int i = 0; i < level; i++) {
cout << "--";
}
cout << root->name << endl;
if (root->father != NULL) {
print(root->father, level + 1);
}
if (root->mother != NULL) {
print(root->mother, level + 1);
}
}
int main() {
TreeNode *root = NULL;
// 插入节点
insert(root, new Genealogy("爷爷"));
insert(root, new Genealogy("爸爸"));
insert(root, new Genealogy("妈妈"));
insert(root, new Genealogy("哥哥"));
insert(root, new Genealogy("弟弟"));
insert(root, new Genealogy("姐姐"));
insert(root, new Genealogy("妹妹"));
insert(root, new Genealogy("儿子"));
insert(root, new Genealogy("女儿"));
// 构建家谱
Genealogy *grandfather = search(root, "爷爷");
Genealogy *father = search(root, "爸爸");
Genealogy *mother = search(root, "妈妈");
Genealogy *son1 = search(root, "儿子");
Genealogy *daughter1 = search(root, "女儿");
Genealogy *son2 = new Genealogy("孙子");
Genealogy *daughter2 = new Genealogy("孙女");
insert(father->father, grandfather);
father->mother = new Genealogy("奶奶");
mother->father = new Genealogy("外公");
mother->mother = new Genealogy("外婆");
insert(father, son1);
insert(father, daughter1);
insert(son1, son2);
insert(daughter1, daughter2);
// 打印家谱
print(grandfather, 0);
return 0;
}
```
上述代码中,`Genealogy`结构体表示家谱节点,包括姓名和父亲母亲节点指针;`TreeNode`结构体表示二叉树节点,包括数据和左右子节点指针。`insert`函数用于插入节点,`search`函数用于查找节点,`print`函数用于打印家谱。在`main`函数中,先插入节点,然后根据关系构建家谱,最后打印家谱。
家族族谱管理系统c++
好的,以下是一个简单的家族族谱管理系统的实现,供您参考:
```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` 类型的孩子列表,可以通过添加和删除孩子来修改家族族谱。同时,程序支持显示成员列表和查询成员等功能。