资源简介
c语言数据结构期末大作业-家族族谱管理
要求设计实现具有下列功能的家谱管理系统:
(1)输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:
姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。
(2) 实现数据的存盘和读盘。
(3)以图形方式显示家谱。
(4)显示第n 代所有人的信息。
(5)按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。
(6)按照出生日期查询成员名单。
(7)输入两人姓名,确定其关系。
(8)某成员添加孩子。
(9)删除某成员(若其还有后代,则一并删除)。
(10)修改某成员信息。
(11)按出生日期对家谱中所有人排序。
(12)打开一家谱时,可提示当天生日的健在成员。
代码片段和文件信息
#include
#include
#include
#include
#include “jiapu.h“
#include
int Createfamilytree(person &Fperson &T) //创建家谱树函数,即为空家谱添加一个祖先
{
int ij=1;
person a;
a=(person)malloc(sizeof(CSNode));
xin(a);
printf(“请输入此人名字:\n“);
scanf(“%s“F->data.name);
fflush(stdin);
a=Value(TF->data.name);
if(a)
{
printf(“此人已存在该家谱中!\n“);
return 0;
}
printf(“请输入此人性别(男输入1,女输入0):\n“);
while(j)
{
scanf(“%d“&(F->data.sex));
fflush(stdin);
switch(F->data.sex)
{
case 1:
j=0;
break;
case 0:
j=0;
break;
default:
printf(“输入数据有误请重新输入!\n“);
fflush(stdin);
break;
}
}
printf(“请输入此人身高(单位:cm):\n“);
scanf(“%d“&(F->data.height));
fflush(stdin);
printf(“请输入此人居住地址:\n“);
scanf(“%s“F->data.address);
fflush(stdin);
printf(“请输入此人父亲的名字(无父亲请输入0):\n你有3次机会\n“);
i=3;
while(i)
{
scanf(“%s“F->data.parentname);
fflush(stdin);
if(strcmp(F->data.parentname“0“)==0)
break;
else
{
a=Value(TF->data.parentname);
if(a==0||a->data.sex==0)
{
i--;
printf(“父亲姓名输入错误\n你还有%d次机会\n“i);
}
else
{
printf(“父亲姓名输入正确。\n“);
F->parent=a;
if(a->firstchild==NULL)
a->firstchild=F;
else
{
a=a->firstchild;
while(a->nextbrother)
a=a->nextbrother;
a->nextbrother=F;
}
break;
}
}
}
if(!i)
{
fflush(stdin);
return 0;
}
printf(“请说明此人是否已婚(已婚输入1,未婚输入0)\n“);
j=1;
while(j)
{
scanf(“%d“&(F->data.jiehun));
fflush(stdin);
switch(F->data.jiehun)
{
case 1:
j=0;
printf(“请输入此人配偶的名字:\n“);
scanf(“%s“F->data.wife_or_husband);
fflush(stdin);
break;
case 0:
j=0;
strcpy(F->data.wife_or_husband“0“);
break;
default:
printf(“输入数据有误请重新输入!\n“);
fflush(stdin);
break;
}
}
printf(“请输入此人出生地址:\n“);
scanf(“%s“F->data.birthplace);
fflush(stdin);
printf(“请输入此人学历:\n“);
scanf(“%s“F->data.education);
fflush(stdin);
printf(“请输入此人的职业:\n“);
scanf(“%s“F->data.occupation);
fflush(stdin);
printf(“请输入此人的简历(字数控制在50字以内):\n“);
scanf(“%s“F->data.resume);
fflush(stdin);
printf(“请说明此人是否还健在(健在输入1死亡输入0):\n“);
j=1;
while(j)
{
scanf(“%d“&(F->data.alive));
fflush(stdin);
switch(F->data.alive)
{
case 1:
i=0;
j=0;
while(i==0)
{
i=riqi(F);
}
F->data.deathdate.year=F->data.deathdate.month=F->data.deathdate.day=0;
break;
case 0:
i=0;
j=0;
while(i==0)
{
i=riqi(F);
}
i=0;
while(i==0)
{
i=riqi1(F);
}
break;
default:
printf(“输入数据有误请重新输入!\n“);
fflush(stdin);
break;
}
}
return 1;
}
int time(person &T) //判断出生日期是否在今天之前
{
int Wabc;
int U=0V=0X=0D=0J=0L=0;
time_t tval;
struct tm *now;
tval = time(NULL);
now = localtime(&tval);
a=no
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-27 17:00 家谱\
文件 7897 2012-02-15 17:03 家谱\1.cpp
文件 3802 2012-02-15 17:03 家谱\2.cpp
文件 1249 2012-02-15 17:03 家谱\3.cpp
文件 2757 2012-02-16 20:52 家谱\4.cpp
文件 9763 2012-02-17 22:02 家谱\5.cpp
文件 12634 2012-02-15 19:53 家谱\6.cpp
文件 8651 2012-02-15 17:03 家谱\7.cpp
文件 2118 2012-02-15 17:03 家谱\8.cpp
文件 827 2012-02-15 17:03 家谱\alog3_2.cpp
目录 0 2012-02-17 22:02 家谱\Debug\
文件 28957 2012-02-16 23:33 家谱\Debug\1.obj
文件 0 2012-02-16 23:33 家谱\Debug\1.sbr
文件 18428 2012-02-16 23:33 家谱\Debug\2.obj
文件 0 2012-02-16 23:33 家谱\Debug\2.sbr
文件 13900 2012-02-16 23:33 家谱\Debug\3.obj
文件 0 2012-02-16 23:33 家谱\Debug\3.sbr
文件 17526 2012-02-16 23:33 家谱\Debug\4.obj
文件 0 2012-02-16 23:33 家谱\Debug\4.sbr
文件 34237 2012-02-17 22:02 家谱\Debug\5.obj
文件 0 2012-02-17 22:02 家谱\Debug\5.sbr
文件 31867 2012-02-16 23:33 家谱\Debug\6.obj
文件 0 2012-02-16 23:33 家谱\Debug\6.sbr
文件 28718 2012-02-16 23:33 家谱\Debug\7.obj
文件 0 2012-02-16 23:33 家谱\Debug\7.sbr
文件 14755 2012-02-16 23:33 家谱\Debug\8.obj
文件 0 2012-02-16 23:33 家谱\Debug\8.sbr
文件 12975 2012-02-16 23:33 家谱\Debug\alog3_2.obj
文件 0 2012-02-16 23:33 家谱\Debug\alog3_2.sbr
文件 21422 2012-02-16 23:33 家谱\Debug\gongneng.obj
文件 0 2012-02-16 23:33 家谱\Debug\gongneng.sbr
............此处省略20个文件信息
- 上一篇:约瑟夫环问题图形界面展示
- 下一篇:VC仿Xp计算器
评论
共有 条评论