1、
#include
2、 for(int i=0;i<20;i++) name[i]='\0'; for(i=0;i<20;i++) brith[i]='\0'; for(i=0;i<20;i++) address[i]='\0'; for(i=0;i<20;i++) dietime[i]='\0'; for(i=0;i<10;i++) child[i]=0; for(i=0;i<20;i++) parent[i]='\0'; live='\0'; marry='\0'; data=-10; generatio
3、n=0; numberchild=0; } }; void setupinfo(per person[]); void display(per person[],int&); void displayhome(per person[],int&); void displayinfo(per person[],int&); void namesearch(per person[],int&); void birtfdaysearch(per person[],int&); void addchild(per person[],int&); void
4、editmember(per person[],int&);
void sortbirthday(per person[],int&);
void main()
{
per person[36];
int count=0;
fstream inputFile("person.txt",ios::in|ios::out|ios::binary);
if(!inputFile)
{
cout<<"文件不存在!"< 5、person[count]));//从文件中读取指定大小的字节函数read(),读取字节函数
while(!inputFile.eof()) //当文件没有读取完毕,进行循环
{
if(person[count].name[0]!='\0')//当名字不为空时
{
count++; //统计人数
inputFile.read((char*)(person+count),sizeof(*person));
}
}
inputFile.close();//关闭文件
if(count< 6、1) //如果家谱图里面没人
{
cout<<" 家谱不存在,请你建立一个家谱!!"< 7、姓名 : ";
cin.getline(person[i].name,20);
cout<<" 生日(日期样式为xxxx/xx/xx) : ";
cin.getline(person[i].brith,20);
cout<<" 婚否(输入Y或y或N或n) :";
cin>>person[i].marry;
while(toupper(person[i].marry)!='Y'&&toupper(person[i].marry)!='N')
{
cout<<" 你输入错误,请你重新输入!!"< 8、<<" 婚否(输入Y或y或N或n) :";
cin>>person[i].marry;
}
cin.ignore();
cout<<" 地址 : ";
cin.getline(person[i].address,20);
cout<<" 是否健在(输入Y或y或N或n) :";
cin>>person[i].live; //是否死亡
while(toupper(person[i].live)!='Y'&&toupper(person[i].live)!='N')
{
cout<<" 你输入错误,请 9、你重新输入!!"< 10、gnore();
if(person[i].generation!=1) //不是第一代
{
cout<<" 他(她)的父亲 : ";
cin.getline(person[i].parent,20); //cin.getline是读取字符串函数 20是读取字符串的个数
}
cout< 11、
}
for(j=0;j 12、hild[person[k].numberchild]=j;
person[k].numberchild++; //找某个人的孩子
}
}
}
for(j=0;j 13、ile(1) //循环式一直进行的
{
cout< 14、 cout<<"\t\t6. 修改某成员信息"< 15、oice!=7
&&choice!=8)
{
cout<<"you enter wrong!"< 16、1); break;
case 3: namesearch(person,n1); break;
case 4: birtfdaysearch(person,n1); break;
case 5: addchild(person,n1); break;
case 6: editmember(person,n1); break;
case 7: sortbirthday(person,n1); break;
case 8: exit(0);
}
}
}
void displ 17、ayhome(per person[36],int &n2) //调用函数的参数 传递的是一个参数地址
{
int i,j,max;
char again;
cout< 18、
}
for(i=1;i<=max;i++)
{
cout<<" 第"<>again;
if(toupper(again) 19、'Y') //就是判断输入得是否为y或Y
{
system("cls");
return;
}
if(toupper(again)=='N')
exit(0); //终止程序的执行
}
void displayinfo(per person[36],int &n2) //显示代数
{
int i,gen,j=0;
char again;
cout< 20、i 21、tion< 22、n!"< 23、0;i 24、 "< 25、1)
cout<<" 他是这个家的根,没有父亲!!!!"< 26、rson[person[i].data].marry
<<" 地址 :"< 27、dl;
}
if(person[i].numberchild==0)
cout<<" 他没有孩子!!!"< 28、 出生日期 : "< 29、erson[i].child[k]].live=='N'||person[person[i].child[k]].live=='n')
cout<<" 死亡日期 : "< 30、 return;
}
if(toupper(again)=='N')
exit(0);
}
void birtfdaysearch(per person[36],int &n2)
{
char begbir[20],endbir[20],again;
int i,flag=0;
cout< 31、
cin.getline(endbir,20);
cout< 32、ag==0)
cout<<" 在这段时间内没有人生日!!!"< 33、 fstream file("person.txt",ios::in|ios::out|ios::binary|ios::app);
cout< 34、n>>person[n2].marry;
while(toupper(person[n2].marry)!='Y'&&toupper(person[n2].marry)!='N')
{
cout<<" 你输入错误,请你重新输入!!"< 35、或n) :";
cin>>person[n2].live;
while(toupper(person[n2].live)!='Y'&&toupper(person[n2].live)!='N')
{
cout<<" 你输入错误,请你重新输入!!"< 36、";
cin.getline(person[n2].dietime,20);
}
cout<<" 属于第几代 : ";
cin>>person[n2].generation;
cin.ignore();
if(person[n2].generation!=1)
{
cout<<" 他(她)的父亲 : ";
cin.getline(person[n2].parent,20);
}
cout< 37、i].name)==0)
{
person[n2].data=i;
break;
}
}
file.write((char*)&person[n2],sizeof(person[n2]));
file.close();
file.open("person.txt",ios::in|ios::out|ios::binary);
file.seekp(i*sizeof(per),ios::beg);
person[i].child[person[i].numberchild]=n2;
person[i].numberchild++;
38、file.write((char*)&person[i],sizeof(per));
file.close();
n2++;
cout<<" 你是否想继续查看?如果继续请输入Y或y,否则输入N或n!"< 39、hoice;
char name[20],again;
fstream file("person.txt",ios::in|ios::out|ios::binary);
cout< 40、
cout<<" 家谱中没有这个人!!"< 41、ndl;
cout<<"\t\t 请输入1-6之间的数"< 42、nore(1,'\n');
switch(choice)
{
case 1: cout< 43、n[i].address,20);
// file.seekp(i*sizeof(per),ios::beg);
// file.write((char*)&person[i],sizeof(per));
break;
case 3: cout< 44、 break;
case 4: cout< 45、sizeof(per),ios::beg);
// file.write((char*)&person[i],sizeof(per));
break;
case 6: cout< 46、int j=0;j 47、n2)
{
per person1;
int i,j;
char again;
cout< 48、<






