如何用java代码实现存储一个家族的族谱,并提供查询和修改。要求刚开始的族谱里至少有10人,能够查询某个指定人物的双亲和他所有的子孙,新增子孙的插入,指定人物由键盘输入。测试上述所有功能。要求使用树相关知识实现。
时间: 2024-03-07 21:46:47 浏览: 146
这是一个相对复杂的问题,需要使用树的相关知识和Java编程技术实现。下面是一个简单的实现示例,供您参考:
```
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class FamilyTree {
// 家族成员类
static class Member {
String name; // 姓名
Member father; // 父亲
List<Member> children; // 孩子
public Member(String name) {
this.name = name;
this.children = new ArrayList<>();
}
// 添加孩子
public void addChild(Member child) {
children.add(child);
child.father = this;
}
}
public static void main(String[] args) {
// 初始族谱
Member root = new Member("祖先");
Member m1 = new Member("父亲");
Member m2 = new Member("叔叔");
Member m3 = new Member("伯伯");
Member m4 = new Member("儿子1");
Member m5 = new Member("儿子2");
Member m6 = new Member("侄子1");
Member m7 = new Member("侄子2");
Member m8 = new Member("侄孙1");
Member m9 = new Member("侄孙2");
Member m10 = new Member("孙子1");
Member m11 = new Member("孙子2");
root.addChild(m1);
root.addChild(m2);
root.addChild(m3);
m1.addChild(m4);
m1.addChild(m5);
m2.addChild(m6);
m2.addChild(m7);
m6.addChild(m8);
m7.addChild(m9);
m4.addChild(m10);
m5.addChild(m11);
// 构建家族成员Map,方便查询
Map<String, Member> members = new HashMap<>();
members.put(root.name, root);
members.put(m1.name, m1);
members.put(m2.name, m2);
members.put(m3.name, m3);
members.put(m4.name, m4);
members.put(m5.name, m5);
members.put(m6.name, m6);
members.put(m7.name, m7);
members.put(m8.name, m8);
members.put(m9.name, m9);
members.put(m10.name, m10);
members.put(m11.name, m11);
// 测试查询和修改功能
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入要查询或修改的家族成员姓名:");
String name = scanner.nextLine();
Member member = members.get(name);
if (member == null) {
System.out.println("找不到该成员!");
continue;
}
System.out.println("该成员的父亲是:" + (member.father == null ? "无" : member.father.name));
System.out.println("该成员的孩子有:");
for (Member child : member.children) {
System.out.println(child.name);
}
System.out.println("请选择要进行的操作:1-新增孩子,2-退出");
int option = scanner.nextInt();
scanner.nextLine();
if (option == 1) {
System.out.println("请输入要新增孩子的姓名:");
String childName = scanner.nextLine();
Member child = new Member(childName);
member.addChild(child);
members.put(childName, child);
System.out.println("新增孩子成功!");
} else if (option == 2) {
break;
} else {
System.out.println("无效的操作!");
}
}
}
}
```
在这个示例中,我们使用了树的数据结构来存储家族成员的族谱,每个成员都是一个节点,有父亲和孩子。构建家族成员Map可以方便地查询和修改家族成员。在主函数中,我们先构建了一个初始的家族成员,然后通过Scanner从键盘输入要查询或修改的成员姓名,查询该成员的父亲和孩子,并提供了新增孩子的功能,直到用户选择退出。
阅读全文
相关推荐

















