家谱管理系统是一种用于存储和管理家族成员信息的系统。在C语言中,我们可以使用数据结构来设计该系统。以下是一个简单的家谱管理系统的C语言实现:
```c
#include
#include
#include
typedef struct FamilyMember {
char name[50];
int age;
char gender;
char nationality;
char maritalStatus;
} FamilyMember;
typedef struct FamilyTree {
FamilyMember *root;
} FamilyTree;
void createFamilyTree(FamilyTree *tree) {
tree->root = (FamilyMember *)malloc(sizeof(FamilyMember));
if (tree->root == NULL) {
printf("Memory allocation failed!
");
exit(1);
}
tree->root->name[0] = ' ';
tree->root->age = 0;
tree->root->gender = 'M';
tree->root->nationality = 'China';
tree->root->maritalStatus = 'Single';
}
void insertFamilyMember(FamilyTree *tree, char *name, int age, char gender, char nationality, char maritalStatus) {
FamilyMember *newMember = (FamilyMember *)malloc(sizeof(FamilyMember));
if (newMember == NULL) {
printf("Memory allocation failed!
");
exit(1);
}
strncpy(newMember->name, name, sizeof(newMember->name));
- newMember->name[sizeof(newMember->name)
- 1] = ' ';
newMember->age = age;
newMember->gender = gender;
newMember->nationality = nationality;
newMember->maritalStatus = maritalStatus;
tree->root = insertNode(tree->root, newMember);
}
void deleteFamilyMember(FamilyTree *tree, char *name) {
FamilyMember *parent = NULL;
for (int i = 0; i < tree->root->children; i++) {
parent = tree->root->children[i];
if (strcmp(parent->name, name) == 0) {
free(parent);
return;
}
}
printf("Member not found!
");
}
void printFamilyTree(FamilyTree *tree) {
printf("Family Tree:
");
if (tree->root == NULL) {
printf("No members in the family tree!
");
return;
}
printNode(tree->root);
printf("
");
}
void printNode(FamilyMember *member) {
printf("Name: %s, Age: %d, Gender: %c, Nationality: %c, Marital Status: %c
", member->name, member->age, member->gender, member->nationality, member->maritalStatus);
}
```
这个程序实现了一个简单的家谱管理系统,包括创建家谱、插入家庭成员、删除家庭成员和打印家谱等功能。