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

📄 listmanage.cpp

📁 本代码是基于LINUX系统下的
💻 CPP
字号:
#include <iostream>#include <stdlib.h>#include <fstream.h>#include <iomanip>#include "List.h"void saveUser(List * head)
{
   fstream output;
   output.open("User.txt",ios::out);
   if(!output)
   {
      cerr<<"User.txt open failure !"<<endl;
      return;
   }
   List * p=head->getNext();
   while(p!=NULL)
   {
      output.write((char*)p->getPuser()->getName(),15);
      output.write((char*)p->getPuser()->getUserId(),15);
      output.write((char*)p->getPuser()->getPassWord(),15);
      p=p->getNext();
   }
   output.close();
}
void saveUserBase(int UserId,List * head)
{
   fstream output;   char Id[15];   int j=UserId,k;   for(int i=14;i>=0;i--)   {        k=j%10;        j=j/10;        Id[i]=k+48;   }   char * s=Id;
   sprintf(s+15,"%s",".txt");
   output.open(s,ios::out);
   if(!output)
   {
      cerr<<s<<" open failure !"<<endl;
      return;
   }
   List * p=head->getNext();
   while(p!=NULL)
   {
      output.write((char*)p->getPuser()->getName(),15);
      output.write((char*)p->getPuser()->getUserId(),15);
      p=p->getNext();
   }
   output.close();
}

List * readUser(){   char a[15],ch;   int i=0,j;   List * head=new List;   List * p,*q;   p=head;   fstream output;   output.open("User.txt",ios::in);   if(!output)   {      cerr<<"User.txt open failure !"<<endl;      return NULL;   }   while(!output.eof())   {      q=new List;
	  User *mm=new User;      for(i=0;i<15;i++)      {       output.read(&ch,1);       a[i]=ch;      }
	  mm->setName(a);
	  for(i=0;i<15;i++)
      {
       output.read(&ch,1);
       a[i]=ch;
      }
	  mm->setUserId(a);
	  for(i=0;i<15;i++)
      {
       output.read(&ch,1);
       a[i]=ch;
      }
	  mm->setPassWord(a);
	  q->setPuser(mm);
	  q->setNext(NULL);
	  p->setNext(q);
	  p=q;   }   output.close();   p=head->getNext();   while(p->getNext()!=NULL)   {       q=p;       p=p->getNext();   }   q->setNext(NULL);   delete p;
   return head;}

List * readUserBase(int UserId)
{
   char a[15],ch;
   char Id[15];
   memset(Id,0,15);
   int i=0,j,k=UserId,l;
   for(j=14;j>=0;j--)
   {
      l=k%10;
	k=k/10;
      Id[j]=l+48;
   }
   List * head=new List;
   List * p,*q;
   p=head;
   fstream output;   char * s=Id;
   sprintf(s+15,"%s",".txt");
   output.open(s,ios::in);	while(!output)	{		output.open(s, ios::in);	}   if(!output)
   {
      cerr<<s<<" open failure !"<<endl;
      return NULL;
   }
   while(!output.eof())
   {
      q=new List;
	UserBase *mm=new UserBase;
      for(i=0;i<15;i++)
      {
       output.read(&ch,1);
       a[i]=ch;
      }
	  mm->setName(a);
	  for(i=0;i<15;i++)
      {
       output.read(&ch,1);
       a[i]=ch;
      }
	  mm->setUserId(a);
	  q->setPuser(mm);
	  q->setNext(NULL);
	  p->setNext(q);
	  p=q;
   }
   output.close();   p=head->getNext();   while(p->getNext()!=NULL)   {       q=p;       p=p->getNext();   }   q->setNext(NULL);   delete p;
   return head;
}void delete_List(List * head)
{
	List * p=head;
	List * q;
    while(q!=NULL)
	{
        q=p->getNext();
		delete p;
		p=q;
		q=q->getNext();
	}
	delete p;
}List * find_User_In(List * head,int UserId,char * PassWord)
{
	char Id[15];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
	      Id[j]=k+48;
	}
    List * mm=head->getNext()->find_List_Node(Id);
	if(0==strcmp(mm->getPuser()->getPassWord(),PassWord))
		return mm;
	else
		return NULL;

}

List * insert_User_Node(List * User_head,int UserId,char * UserName,char * PassWord)
{
        char Id[15];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
		Id[j]=k+48;
	}
	User * p=new User;
	p->setName(UserName);
	p->setPassWord(PassWord);
	p->setUserId(Id);
	List * mm=new List;
	mm->setPuser(p);
	mm->setNext(NULL);
	User_head->setNext(mm);	saveUser(User_head);
	return User_head;	
}

int delete_User_Node(List * User_head,int UserId,char * PassWord)
{
	char Id[15];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
		Id[j]=k+48;
	}
	List *mm=User_head->getNext()->find_List_Node(Id);
	if(NULL!=mm&&strcmp(mm->getPuser()->getPassWord(),PassWord)==0)
	{
		User_head->delete_List_Node(Id);		saveUser(User_head);
		return 1;
	}
	else
		return 0;
}

char * get_User_name(List * User_head,int UserId)
{
	char Id[15];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
	      Id[j]=k+48;
	}
    List * mm=User_head->getNext()->find_List_Node(Id);
	char * Name=new char[15];
	memset(Name,0,15);
	if(mm!=NULL)
	{
		memcpy(Name,mm->getPuser()->getName(),15);
		return Name;
	}
	else
		return NULL;
}

List * find_Online_In(List * Online_head,int UserId)
{
	char Id[16];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
		Id[j]=k+48;
	}
	return Online_head->getNext()->find_List_Node(Id);
}List * insert_Online_Node(List * Online_head,int UserId,int sockfd)
{
        char Id[15];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
		Id[j]=k+48;
	}
	UserOnline * p=new UserOnline;
	p->setUserId(Id);
	p->setState(sockfd);
	List * pp=new List;
	pp->setPuser(p);
	pp->setNext(NULL);
	Online_head->insert_List_Node(pp);
    return Online_head;
}

int get_Sockfd(List * Online_head,int UserId)
{
	char Id[15];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
		Id[j]=k+48;
	}
	List * mm=Online_head->getNext()->find_List_Node(Id);
	if(mm!=NULL)
	{
		return mm->getPuser()->getState();
	}
	else
		return 0;
}
int delete_Online_Node(List * Online_head,int UserId)
{
	char Id[15];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
		Id[j]=k+48;
	}
	if(NULL!=Online_head->getNext()->find_List_Node(Id))
	{
	    Online_head->delete_List_Node(Id);
	    return 1;
	}
	else
		return 0;

}int find_Contact_In(int UserId_m,int UserId)
{        List * Contact_head=readUserBase(UserId_m);
        char Id[15];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
		Id[j]=k+48;
	}
	if(Contact_head->getNext()->find_List_Node(Id)!=NULL)	{	  delete_List(Contact_head->getNext());	  return 1;        }      else      {         delete_List(Contact_head->getNext());         return 0;      }
}
void insert_Contact_Node(int UserId_m,int UserId,char * UserName)
{
	if(find_Contact_In(UserId_m,UserId))
		return;        List * Contact_head=readUserBase(UserId_m);
	char Id[15];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
		Id[j]=k+48;
	}
	UserContact * p=new UserContact;
	p->setUserId(Id);
	p->setName(UserName);
	List * mm=new List;
	mm->setPuser(p);
	Contact_head->insert_List_Node(mm);	saveUserBase(UserId_m,Contact_head);
	delete_List(Contact_head->getNext());
}int delete_Contact_Node(int UserId_m,int UserId)
{    List * Contact_head=readUserBase(UserId_m);  	List * pp = Contact_head;//	List * p = Contact_head->getNext();	List * p = pp->getNext();   // List * pp = Contact_head;
    char Id[15];
	memset(Id,0,16);
	int i=UserId;
	int j,k;
	for(j=14;j>=0;j--)
	{
		k=i%10;
		i=i/10;
		Id[j]=k+48;
	}
	List * mm=p->find_List_Node(Id);
	if(NULL!=mm)
	{
		pp->delete_List_Node(Id);		saveUserBase(UserId_m,pp);		delete_List(Contact_head->getNext());
		return 1;
	}
	else	{	      delete_List(Contact_head->getNext());
		return 0;        }
}int change_User_PassWord(List * User_head,int UserId,char * OldPassWord,char * NewPassWord)
{
   List * mm=find_User_In(User_head,UserId,OldPassWord);
   if(NULL!=mm)
  {
    memset(mm->getPuser()->getPassWord(),0,15);
    strcpy(mm->getPuser()->getUserId(),NewPassWord);    saveUser(User_head);
     return 1;
  }
   else
	   return 0;
}

int get_List_longth(List * head)
{
	List * p=head->getNext();
	int count=0;
	while(p!=NULL)
	{
         count++;
	  p=p->getNext();
	}	return count;
}char * get_Contact_List(List * Online_head,int UserId_m)
{        List * Contact_head=readUserBase(UserId_m);
	int mm=get_List_longth(Contact_head);
	char * ch=new char[mm*31];
	char * ch1;
        int i=0,j,k;
	List * p=Contact_head->getNext();
	while(p!=NULL)
	{
		ch1=p->getPuser()->getName();
		for(j=0;j<15;j++)
		{
			ch[i]=ch1[j];
			i++;
		}
		ch1=p->getPuser()->getUserId();
		for(j=0;j<15;j++)
		{
			ch[i]=ch1[j];
			i++;
		}
		int mm=atoi(ch1);
		if(NULL!=find_Online_In(Online_head,mm))
		{
			ch[i]='1';
			i++;
		}
		else
		{
			ch[i]='0';
			i++;
		}
		p=p->getNext();
	}
	return ch;
}int get_Last_UserId(List * User_head){   List * q=User_head->getNext();   int mm=atoi(q->getPuser()->getUserId());   return mm;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -