⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 information.cpp

📁 实现了对家谱管理系统的添加
💻 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 + -