家谱管理系统的源代码Word格式文档下载.docx

上传人:b****5 文档编号:18198465 上传时间:2022-12-14 格式:DOCX 页数:20 大小:18.57KB
下载 相关 举报
家谱管理系统的源代码Word格式文档下载.docx_第1页
第1页 / 共20页
家谱管理系统的源代码Word格式文档下载.docx_第2页
第2页 / 共20页
家谱管理系统的源代码Word格式文档下载.docx_第3页
第3页 / 共20页
家谱管理系统的源代码Word格式文档下载.docx_第4页
第4页 / 共20页
家谱管理系统的源代码Word格式文档下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

家谱管理系统的源代码Word格式文档下载.docx

《家谱管理系统的源代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《家谱管理系统的源代码Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。

家谱管理系统的源代码Word格式文档下载.docx

data=-10;

generation=0;

numberchild=0;

}

};

voidsetupinfo(perperson[]);

voiddisplay(perperson[],int&

);

voiddisplayhome(perperson[],int&

voiddisplayinfo(perperson[],int&

voidnamesearch(perperson[],int&

voidbirtfdaysearch(perperson[],int&

voidaddchild(perperson[],int&

voideditmember(perperson[],int&

voidsortbirthday(perperson[],int&

voidmain()

{

perperson[36];

intcount=0;

fstreaminputFile("

person.txt"

ios:

:

in|ios:

out|ios:

binary);

if(!

inputFile)

{

cout<

<

"

文件不存在!

endl;

exit(0);

inputFile.read((char*)&

person[count],sizeof(person[count]));

//从文件中读取指定大小的字节函数read(),读取字节函数

while(!

inputFile.eof())//当文件没有读取完毕,进行循环

if(person[count].name[0]!

='

)//当名字不为空时

{

count++;

//统计人数

inputFile.read((char*)(person+count),sizeof(*person));

}

inputFile.close();

//关闭文件

if(count<

1)//如果家谱图里面没人

cout<

家谱不存在,请你建立一个家谱!

!

setupinfo(person);

display(person,count);

}

voidsetupinfo(perperson[36])//创建信息

inti,j,k;

fstreamoutputfile("

binary|ios:

app);

//打开文件

for(i=0;

5;

姓名:

"

cin.getline(person[i].name,20);

生日(日期样式为xxxx/xx/xx):

cin.getline(person[i].brith,20);

婚否(输入Y或y或N或n):

cin>

>

person[i].marry;

while(toupper(person[i].marry)!

Y'

&

toupper(person[i].marry)!

N'

cout<

你输入错误,请你重新输入!

cin.ignore();

地址:

cin.getline(person[i].address,20);

是否健在(输入Y或y或N或n):

person[i].live;

//是否死亡

while(toupper(person[i].live)!

toupper(person[i].live)!

if(toupper(person[i].live)=='

死亡日期(日期样式为xxxx/xx/xx):

cin.getline(person[i].dietime,20);

//输入死亡日期

属于第几代:

person[i].generation;

if(person[i].generation!

=1)//不是第一代

他(她)的父亲:

cin.getline(person[i].parent,20);

//cin.getline是读取字符串函数20是读取字符串的个数

for(j=0;

j<

i;

j++)

if(person[j].generation==1)

person[j].data=-1;

//****************************

for(k=0;

k<

k++)

if(strcmp(person[j].parent,person[k].name)==0)//比较2个字符串是否相同,实质是找某个人的父亲

person[j].data=k;

if(strcmp(person[j].parent,person[k].name)==0)

{

person[k].child[person[k].numberchild]=j;

person[k].numberchild++;

//找某个人的孩子

}

outputfile.write((char*)(person+j),sizeof(*person));

//写文件

outputfile.close();

//关闭文件夹

system("

cls"

voiddisplay(perperson[36],int&

n1)

intchoice;

while

(1)//循环式一直进行的

{

endl<

\t\t家族关系查询系统"

\t\t1.显示家谱"

\t\t2.显示第n代人的所有信息"

\t\t3.按照姓名查询某成员的信息"

\t\t4.按照出生日期查询成员名单"

\t\t5.某成员添加孩子"

\t\t6.修改某成员信息"

\t\t7.按生日日期对家谱中的所有人进行排序"

\t\t8.退出系统"

\t\t输入选择:

\t\t请输入1-8之间的数"

cin>

choice;

while(choice!

=1&

choice!

=2&

=3&

=4&

=5&

=6&

=7

&

=8)

youenterwrong!

pleaseenteragain!

cin>

cin.ignore(1,'

\n'

//跳过一个字符,含义是忽略一行

system("

switch(choice)

case1:

displayhome(person,n1);

break;

case2:

displayinfo(person,n1);

case3:

namesearch(person,n1);

case4:

birtfdaysearch(person,n1);

case5:

addchild(person,n1);

case6:

editmember(person,n1);

case7:

sortbirthday(person,n1);

case8:

 

voiddisplayhome(perperson[36],int&

n2)//调用函数的参数传递的是一个参数地址

inti,j,max;

charagain;

n2-1;

max=person[i].generation;

for(j=i+1;

n2;

if(person[i].generation<

person[j].generation)

max=person[j].generation;

//找出最大的代数

for(i=1;

=max;

第"

代的成员有:

for(j=0;

if(person[j].generation==i)

cout<

person[j].name<

//输出每一代的人

你是否想继续查看?

如果继续请输入Y或y,否则输入N或n!

again;

if(toupper(again)=='

)//就是判断输入得是否为y或Y

return;

exit(0);

//终止程序的执行

voiddisplayinfo(perperson[36],int&

n2)//显示代数

inti,gen,j=0;

请你输入你要查询的代数:

gen;

//换行

=gen)

j++;

if(j==n2)//判断是否找到

你要查的代数还没有!

if(person[i].generation==gen)

person[i].name<

endl

<

出生日期:

person[i].brith<

第几代:

person[i].generation<

婚否:

person[i].marry<

person[i].address<

是否健在:

person[i].live<

if(person[i].live=='

||person[i].live=='

n'

死亡日期:

person[i].dietime<

voidnamesearch(perperson[36],int&

n2)

inti,j=0,k;

charagain,name[20];

请你输入你想要查询的人的姓名:

cin.getline(name,20);

if(strcmp(person[i].name,name)!

=0)

if(j==n2)

你要查询的人没有!

if(strcmp(person[i].name,name)==0)

if(person[i].generation==1)

他是这个家的根,没有父亲!

else

他(她)父亲的信息:

person[person[i].data].name<

<

person[person[i].data].brith

person[person[i].data].generation<

person[person[i].data].marry

person[person[i].data].address<

person[person[i].data].live<

if(person[person[i].data].live=='

||person[person[i].data].live=='

cout<

person[person[i].data].dietime<

if(person[i].numberchild==0)

他没有孩子!

他有"

person[i].numberchild<

个孩子,他们的信息:

for(k=0;

person[i].numberchild;

{

person[person[i].child[k]].name<

<

person[person[i].child[k]].brith

person[person[i].child[k]].generation<

person[person[i].child[k]].marry

person[person[i].child[k]].address<

person[person[i].child[k]].live;

if(person[person[i].child[k]].live=='

||person[person[i].child[k]].live=='

cout<

person[person[i].child[k]].dietime<

}

voidbirtfdaysearch(perperson[36],int&

n2)

charbegbir[20],endbir[20],again;

inti,flag=0;

请你输入两个时间,格式为****/**/**!

起始时间是:

cin.getline(begbir,20);

终止时间是:

cin.getline(endbir,20);

if(strcmp(person[i].brith,begbir)>

=0&

strcmp(person[i].brith,endbir)<

person[i].name;

生日:

person[i].brith;

flag=1;

if(flag==0)

在这段时间内没有人生日!

voidaddchild(perperson[36],int&

inti;

fstreamfile("

请输入孩子的信息!

cin.getline(person[n2].name,20);

cin.getline(person[n2].brith,20);

person[n2].marry;

while(toupper(person[n2].marry)!

toupper(person[n2].marry)!

cin.ignore();

cin.getline(person[n2].address,20);

person[n2].live;

while(toupper(person[n2].live)!

toupper(person[n2].live)!

if(toupper(person[n2].live)=='

cin.getline(person[n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1