📄 listmanage.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 + -