当前位置:首页 > 姓名人生 > 正文

家族谱管理系统(C语言版)

家庭族谱管理系统可以分为以下几个模块:1. 族谱结构体定义:定义族谱的基本信息,包括族谱名称、祖先姓名、祖先生日、祖先性别等。2. 成员结构体定义:定义家族成员的基本信息,包括姓名、生日、性别、父亲姓名、母亲姓名等。3. 成员信息录入:实现家族成员信息的录入功能,可以通过键盘输入或者从文件中读取。4. 成员信息查询:根据姓名、生日、性别等条件查询成员信息,并将查询结果输出。5. 成员信息修改:根据姓名、生日、性别等条件修改成员信息。6. 成员信息删除:根据姓名、生日、性别等条件删除成员信息。7. 族谱信息保存:将家族谱信息保存到文件中,以便下次使用。以下是一个基本的家庭族谱管理系统的C语言代码示例:```c# # # # 20# {char name[]; // 家族成员姓名char sex; // 家族成员性别(男:'M',女:'F')char []; // 父亲姓名char []; // 母亲姓名char []; // 配偶姓名char [][]; // 子女姓名} ; []; // 族谱成员列表int = 0; // 族谱成员数量void () { // 录入成员信息char name[];char sex;char [];char [];char [];char [];("请输入成员姓名:");scanf("%s", name);("请输入成员性别(男:M,女:F):");scanf(" %c", &sex);("请输入父亲姓名(如果没有父亲,请直接回车):");scanf("%s", );("请输入母亲姓名(如果没有母亲,请直接回车):");scanf("%s", );("请输入配偶姓名(如果没有配偶,请直接回车):");scanf("%s", );("请输入子女姓名(如果没有子女,请直接回车):");scanf("%s", );([].name, name);[].sex = sex;([]., );([]., );([]., );if (() > 0) {char *p = (, ",");int i = 0;while (p != NULL) {([].[i], p);i++;p = (NULL, ",");}}++;}void () { // 查询成员信息char name[];char sex;char [];char [];char [];char [][];int i;("请输入要查询的成员姓名:");scanf("%s", name);for (i = 0; i < ; i++) {if (([i].name, name) == 0) {("姓名:%s\n", [i].name);("性别:%c\n", [i].sex);("父亲:%s\n", [i].);("母亲:%s\n", [i].);("配偶:%s\n", [i].);("子女:");int j = 0;while (([i].[j]) > 0) {("%s ", [i].[j]);j++;}("\n");break;}}if (i == ) {("未找到成员信息。

\n");}}void () { // 修改成员信息char name[];char sex;char [];char [];char [];char [][];int i;("请输入要修改的成员姓名:");scanf("%s", name);for (i = 0; i < ; i++) {if (([i].name, name) == 0) {("请输入成员性别(男:M,女:F):");scanf(" %c", &sex);("请输入父亲姓名(如果没有父亲,请直接回车):");scanf("%s", );("请输入母亲姓名(如果没有母亲,请直接回车):");scanf("%s", );("请输入配偶姓名(如果没有配偶,请直接回车):");scanf("%s", );("请输入子女姓名(如果没有子女,请直接回车):");scanf("%s", );[i].sex = sex;([i]., );([i]., );([i]., );([i]., 0, ([i].));if (() > 0) {char *p = (, ",");int j = 0;while (p != NULL) {([i].[j], p);j++;p = (NULL, ",");}}("成员信息修改成功。

\n");break;}}if (i == ) {("未找到成员信息。\n");}}void () { // 删除成员信息char name[];int i, j;("请输入要删除的成员姓名:");scanf("%s", name);for (i = 0; i < ; i++) {if (([i].name, name) == 0) {for (j = i; j < - 1; j++) {(&[j], &[j + 1], ());}--;("成员信息删除成功。\n");break;}}if (i == ) {("未找到成员信息。\n");}}void () { // 保存族谱信息到文件FILE *fp;int i, j;fp = fopen(".dat", "wb");if (fp == NULL) {("无法打开文件。

\n");;}(&, (int), 1, fp);(, (), , fp);(fp);("族谱信息保存成功。\n");}void () { // 从文件中读取族谱信息FILE *fp;int i, j;fp = fopen(".dat", "rb");if (fp == NULL) {("无法打开文件。\n");;}fread(&, (int), 1, fp);fread(, (), , fp);(fp);("族谱信息读取成功。\n");}void () { // 打印菜单("****************************************\n");("*家庭族谱管理系统*\n");("****************************************\n");("* 1. 录入成员信息*\n");("* 2. 查询成员信息*\n");("* 3. 修改成员信息*\n");("* 4. 删除成员信息*\n");("* 5. 保存族谱信息到文件*\n");("* 6. 从文件中读取族谱信息*\n");("* 0. 退出系统*\n");("****************************************\n");}int main() {int ;while (1) {();("请选择操作:");scanf("%d", &); () {case 1:();break;case 2:();break;case 3:();break;case 4:();break;case 5:();break;case 6:();break;case 0:exit(0);break;:("无效操作,请重新选择。\n");break;}} 0;}```注意:该代码只是一个简单的示例,实际应用中还需要考虑很多其他因素,比如输入的数据是否合法、数据存储方式等等。