📄 information.cpp
字号:
#include "Tree.h"
void readInformation(Queue &Q)
{
Queue *q;
cout<<setw(5)<<setfill(' ')<<"序号"<<setw(10)<<setfill(' ')<<"姓名"<<setw(20)<<setfill(' ')<<"出生地"
<<setw(12)<<setfill(' ')<<"出生日期"<<setw(12)<<setfill(' ')<<"死亡日期"<<setw(8)<<setfill(' ')<<"性别"
<<setw(8)<<setfill(' ')<<"身高"<<setw(14)<<setfill(' ')<<"学历"<<setw(14)<<setfill(' ')<<"职业"<<endl;
for(q=Q.front->next;q!=Q.rear->next && q;q=q->next)
{
cout<<setw(5)<<setfill(' ')<<q->node->MemberNumber<<setw(10)<<setfill(' ')<<q->node->Name
<<setw(20)<<setfill(' ')<<q->node->BornPlace<<setw(12)<<setfill(' ')<<q->node->Birthday
<<setw(12)<<setfill(' ')<<q->node->Deadthday<<setw(8)<<setfill(' ')<<q->node->Sex
<<setw(8)<<setfill(' ')<<q->node->Height<<setw(14)<<setfill(' ')<<q->node->Credentials
<<setw(14)<<setfill(' ')<<q->node->Career<<endl;
}
cout<<endl;
}
void getInformation(Queue &Q)
{
Q.IniQueue();
ifstream infile("information.txt",ios::in);
if(!infile)
{
cerr<<"不能打开文件!"<<endl;
abort();
}
memberData *s=new memberData;
while(infile>>s->MemberNumber>>s->Name>>s->BornPlace>>s->Birthday>>s->Deadthday>>s->Sex
>>s->Height>>s->Credentials>>s->Career)
{
Q.EnQueue(Q,s);
s=new memberData;
}
}
void deletemember(List* &head,memberTree * &root,Queue &Q)
{
Stack S=InitStack();
memberTree*r, *h,*p;
int last;
r=root;
cout<<"序号为1的是家族祖先,不能删除."<<endl;
cout<<"请输入您想删除的成员序号:"<<endl;
int n;
cin>>n;
h=PreOrdermemberTree(S,r,n);
last =totalnum( r);
if(n>last)
{
cerr<<"此成员不存在."<<endl;
return ;
}
else
{
if(h->brother)
{
if(h->parent->child==h) h->parent->child=h->brother;
else
{
p=h->parent->child;
while(p->brother!=h)
{
p=p->brother;
}
p->brother=h->brother;
}
}
else LastOrdermemberTree(h,Q,head);
}
}
void addInformation(Queue &Q,List* &head,memberTree * &root)
{
memberData *s=new memberData;
cout<<"请输入成员信息!"<<endl;
cout<<"请输入成员序号:";
cin>>s->MemberNumber;
cout<<endl;
Queue *q=new Queue;
/*for(q=Q.front->next;q!=Q.rear->next && q;q=q->next)
{
if(q->node->MemberNumber==s->MemberNumber)
{
cout<<"成员信息不存在!"<<endl;
return;
}
}*/
addmember(head,root,s->MemberNumber);
cout<<"请输入成员姓名:";
cin>>s->Name;
cout<<endl;
cout<<"请输入成员出生地:";
cin>>s->BornPlace;
cout<<endl;
cout<<"请输入成员出生时间(例:1987.05.30):";
cin>>s->Birthday;
cout<<endl;
cout<<"请输入成员死亡时间(例:1987.05.31,或“live”):";
cin>>s->Deadthday;
cout<<endl;
cout<<"请输入成员性别(例:male/female):";
cin>>s->Sex;
cout<<endl;
cout<<"请输入成员身高(单位:cm):";
cin>>s->Height;
cout<<endl;
cout<<"请输入成员学历:";
cin>>s->Credentials;
cout<<endl;
cout<<"请输入成员职业:";
cin>>s->Career;
cout<<endl;
Q.EnQueue(Q,s);
addmember(head,root,s->MemberNumber);
printRootLeave(root);
cout<<"成员信息已输入完毕!"<<endl;
}
void updateInformation(Queue &Q)
{
cout<<"请按步骤更新成员信息!"<<endl;
cout<<endl;
cout<<"请输入成员序号: ";
int n;
cin>>n;
Queue *q=new Queue;
for(q=Q.front->next;q!=Q.rear->next && q;q=q->next)
{
if(q->node->MemberNumber==n)
{
cout<<"请输入成员姓名:";
cin>>q->node->Name;
cout<<"请输入成员出生地:";
cin>>q->node->BornPlace;
cout<<"请输入成员出生时间(例:1987.05.30):";
cin>>q->node->Birthday;
cout<<"请输入成员死亡时间(例:1987.05.31,或“live”):";
cin>>q->node->Deadthday;
cout<<"请输入成员性别(例:male/female):";
cin>>q->node->Sex;
cout<<"请输入成员身高(单位:cm):";
cin>>q->node->Height;
cout<<"请输入成员学历:";
cin>>q->node->Credentials;
cout<<"请输入成员职业:";
cin>>q->node->Career;
cout<<endl;
cout<<"成员信息更新完毕!"<<endl;
return;
}
}
cout<<"此成员不存在."<<endl;
}
void writeInformation(Queue &Q)
{
ofstream outfile("information.txt",ios::out);
if(!outfile)
{
cerr<<"不能打开文件!"<<endl;
abort();
}
Queue *q;
for(q=Q.front->next;q!=Q.rear->next && q;q=q->next)
{
outfile<<q->node->MemberNumber<<'\t'<<q->node->Name<<'\t'<<q->node->BornPlace<<'\t'<<q->node->Birthday<<'\t'
<<q->node->Deadthday<<'\t'<<q->node->Sex<<'\t'<<q->node->Height<<'\t'
<<q->node->Credentials<<'\t'<<q->node->Career<<'\n';
}
outfile.close();
}
void findInformation(Queue Q,memberTree *root)
{
a:
cout<<endl;
cout<<"1:按亲属关系查询成员 "<<endl;
cout<<"2: 按基本信息查询成员"<<endl;
cout<<"0: 返回"<<endl;
cout<<endl;
int n;
cin>>n;
switch(n)
{
case 1: cout<<"尚未提供此项服务"<<endl;; break;
case 2: Information(Q,root);break;
case 0: cout<<"您已选择返回上一级."<<endl;break;
default: cout<<"输入出错!"<<endl;
goto a;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -