📄 home.cpp
字号:
cout<<endl<<endl;
}
if(person[i].numberchild==0)
cout<<" 他没有孩子!!!"<<endl<<endl;
else
{
cout<<" 他有"<<person[i].numberchild<<"个孩子,他们的信息 :"<<endl<<endl;
for(k=0;k<person[i].numberchild;k++)
{
cout<<" 姓名 : "<<person[person[i].child[k]].name<<endl
<<" 出生日期 : "<<person[person[i].child[k]].brith
<<" 第几代 : "<<person[person[i].child[k]].generation<<endl
<<" 婚否 : "<<person[person[i].child[k]].marry
<<" 地址 :"<<person[person[i].child[k]].address<<endl
<<" 是否健在 : "<<person[person[i].child[k]].live;
if(person[person[i].child[k]].live=='N'||person[person[i].child[k]].live=='n')
cout<<" 死亡日期 : "<<person[person[i].child[k]].dietime<<endl;
cout<<endl<<endl;
}
}
}
}
cout<<" 你是否想继续查看?如果继续请输入Y或y,否则输入N或n!"<<endl;
cin>>again;
if(toupper(again)=='Y')
{
system("cls");
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<<endl<<endl;
cout<<" 请你输入两个时间,格式为****/**/**!"<<endl;
cout<<" 起始时间是 : ";
cin.getline(begbir,20);
cout<<" 终止时间是 : ";
cin.getline(endbir,20);
cout<<endl<<endl;
for(i=0;i<n2;i++)
{
if(strcmp(person[i].brith,begbir)>=0&&strcmp(person[i].brith,endbir)<=0)
{
cout<<" 姓名 : "<<person[i].name;
cout<<" 生日 : "<<person[i].brith;
flag=1;
cout<<endl;
}
}
cout<<endl<<endl;
if(flag==0)
cout<<" 在这段时间内没有人生日!!!"<<endl<<endl;
cout<<" 你是否想继续查看?如果继续请输入Y或y,否则输入N或n!"<<endl;
cin>>again;
if(toupper(again)=='Y')
{
system("cls");
return;
}
if(toupper(again)=='N')
exit(0);
}
void realation(per person[36],int &n2)
{
char name1[20],name2[20],again;
int i,j,p,q,flag1=0,flag2=0;
cout<<endl<<endl;
cout<<" 请你输入第一个人的姓名 : ";
cin.getline(name1,20);
for(i=0;i<n2;i++)
{
if(strcmp(person[i].name,name1)==0)
{
p=person[i].data;
flag1=1;
}
}
cout<<" 请你输入第二个人的姓名 : ";
cin.getline(name2,20);
for(i=0;i<n2;i++)
{
if(strcmp(person[i].name,name2)==0)
{
q=person[i].data;
flag2=1;
}
}
cout<<endl<<endl;
if(flag1==0)
cout<<" 你输入的第一个人不在家谱中!"<<endl;
if(flag2==0)
cout<<" 你输入的第二个人不在家谱中!"<<endl;
if(flag1==1&&flag2==1)
{
for(i=p;person[i].data!=-1;i=person[p].data)
{
cout<<" 第一个人的祖先是 : "<<person[i].name<<" ";
}
cout<<person[i].name<<endl;
for(j=q;person[j].data!=-1;j=person[q].data)
{
cout<<" 第二个人的祖先是 : "<<person[j].name<<" ";
}
cout<<person[j].name<<endl;
}
cout<<endl<<endl;
cout<<" 你是否想继续查看?如果继续请输入Y或y,否则输入N或n!"<<endl;
cin>>again;
if(toupper(again)=='Y')
{
system("cls");
return;
}
if(toupper(again)=='N')
exit(0);
}
void addchild(per person[36],int &n2)
{
int i;
char again;
fstream file("person.txt",ios::in|ios::out|ios::binary|ios::app);
cout<<endl<<endl;
cout<<" 请输入孩子的信息!!!"<<endl<<endl<<endl;
cout<<" 姓名 : ";
cin.getline(person[n2].name,20);
cout<<" 生日(日期样式为xxxx/xx/xx) : ";
cin.getline(person[n2].brith,20);
cout<<" 婚否(输入Y或y或N或n) :";
cin>>person[n2].marry;
while(toupper(person[n2].marry)!='Y'&&toupper(person[n2].marry)!='N')
{
cout<<" 你输入错误,请你重新输入!!"<<endl;
cout<<" 婚否(输入Y或y或N或n) :";
cin>>person[n2].marry;
}
cin.ignore();
cout<<" 地址 : ";
cin.getline(person[n2].address,20);
cout<<" 是否健在(输入Y或y或N或n) :";
cin>>person[n2].live;
while(toupper(person[n2].live)!='Y'&&toupper(person[n2].live)!='N')
{
cout<<" 你输入错误,请你重新输入!!"<<endl;
cout<<" 婚否(输入Y或y或N或n) :";
cin>>person[n2].live;
}
cin.ignore();
if(toupper(person[n2].live)=='N')
{
cout<<" 死亡日期(日期样式为xxxx/xx/xx) :";
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<<endl;
for(i=0;i<n2;i++)
{
if(strcmp(person[n2].parent,person[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++;
file.write((char*)&person[i],sizeof(per));
file.close();
n2++;
cout<<" 你是否想继续查看?如果继续请输入Y或y,否则输入N或n!"<<endl;
cin>>again;
if(toupper(again)=='Y')
{
system("cls");
return;
}
if(toupper(again)=='N')
exit(0);
}
void editmember(per person[36],int &n2)
{
int i,flag=0,choice;
char name[20],again;
fstream file("person.txt",ios::in|ios::out|ios::binary);
cout<<endl<<endl;
cout<<" 请你输入你想修改的成员的名字 : ";
cin.getline(name,20);
cout<<endl<<endl;
for(i=0;i<n2;i++)
{
if(strcmp(person[i].name,name)==0)
{
flag=1;
break;
}
}
if(flag==0)
cout<<" 家谱中没有这个人!!"<<endl<<endl<<endl;
if(flag==1)
{
cout<<"\t\t请你选择你要修改的项!!"<<endl;
cout<<"\t\t 1. 姓名"<<endl;
cout<<"\t\t 2. 地址"<<endl;
cout<<"\t\t 3. 婚否"<<endl;
cout<<"\t\t 4. 生日"<<endl;
cout<<"\t\t 5. 是否死亡"<<endl;
cout<<"\t\t 6. 死亡日期"<<endl;
cout<<"\t\t 请输入1-6之间的数"<<endl;
cout<<"\t\t 输入选择 : ";
cin>>choice;
while (choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6)
{
cout<<"you enter wrong!"<<endl;
cout<<"please enter again!"<<endl;
cin>>choice;
}
cin.ignore(1,'\n');
switch(choice)
{
case 1: cout<<endl<<" 请你输入新名字 : ";
cin.getline(person[i].name,20);
// file.seekp(i*sizeof(per),ios::beg);
// file.write((char*)&person[i],sizeof(per));
break;
case 2: cout<<endl<<" 请输入新的地址 : ";
cin.getline(person[i].address,20);
// file.seekp(i*sizeof(per),ios::beg);
// file.write((char*)&person[i],sizeof(per));
break;
case 3: cout<<endl<<" 请你输入新的是否结婚 : ";
cin>>person[i].marry;
// file.seekp(i*sizeof(per),ios::beg);
// file.write((char*)&person[i],sizeof(per));
break;
case 4: cout<<endl<<" 请你输入新的生日 : ";
cin.getline(person[i].brith,20);
// file.seekp(i*sizeof(per),ios::beg);
// file.write((char*)&person[i],sizeof(per));
break;
case 5: cout<<endl<<" 请你输入新的是否死亡 : ";
cin>>person[i].live;
// file.seekp(i*sizeof(per),ios::beg);
// file.write((char*)&person[i],sizeof(per));
break;
case 6: cout<<endl<<" 请你输入新的死亡日期 : ";
cin.getline(person[i].dietime,20);
// file.seekp(i*sizeof(per),ios::beg);
// file.write((char*)&person[i],sizeof(per));
break;
}
for(int j=0;j<n2;j++)
file.write((char*)&person[j],sizeof(per));
}
cout<<endl<<endl;
cout<<" 你是否想继续查看?如果继续请输入Y或y,否则输入N或n!"<<endl;
cin>>again;
if(toupper(again)=='Y')
{
system("cls");
return;
}
if(toupper(again)=='N')
exit(0);
}
void sortbirthday(per person[36],int &n2)
{
per person1;
int i,j;
char again;
cout<<endl<<endl;
for(i=0;i<n2-1;i++)
for(j=i+1;j<n2;j++)
{
if(strcmp(person[i].brith,person[j].brith)>=0)
{
person1=person[i];
person[i]=person[j];
person[j]=person1;
}
}
for(i=0;i<n2;i++)
cout<<" 姓名 : "<<person[i].name<<" 生日 : "<<person[i].brith<<endl;
cout<<endl<<endl;
cout<<" 你是否想继续查看?如果继续请输入Y或y,否则输入N或n!"<<endl;
cin>>again;
if(toupper(again)=='Y')
{
system("cls");
return;
}
if(toupper(again)=='N')
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -