📄 -
字号:
#include<iostream.h>
#include<string.h>
typedef struct addr{
char Nodenum[5];
char Name[8];
char Sex;
char Telnum[10];
char* Address;
struct addr* next;
}Addrb,*LinkAddrb;//通讯录类型
LinkAddrb Creat_Addrb()//建立通讯录
{LinkAddrb G=NULL;
cout<<"现在开始建立通讯录:"<<endl;
char n='1';
while(n!='0')
{LinkAddrb T;T=new Addrb;T->Address=new char;
loop:cout<<"请输入编号,姓名,性别[用m表示'男',f表示'女'],电话和地址(用空格隔开):"<<endl;
cin>>T->Nodenum>>T->Name>>T->Sex>>T->Telnum>>T->Address;
if(T->Sex!='m'&&T->Sex!='f'&&T->Sex!='M'&&T->Sex!='F'){cout<<"性别的输入有误,请重新输入:"<<endl;goto loop;}
T->next=G;G=T;
cout<<"如果要结束建立通讯录,请按0。继续建立请按其他键:";cin>>n;
}
return G;
}
Addrb* Insert_Addrb(Addrb *G){//插入
Addrb* T;
cout<<"请输入您要插入人的编号,姓名,性别,电话和地址(用空格隔开):"<<endl;
T=new Addrb;
cin>>T->Nodenum;
cin>>T->Name;
cin>>T->Sex;
cin>>T->Telnum;
T->Address=new char;cin>>T->Address;
T->next=G;G=T;
return G;}
Addrb* Search_Addrb(Addrb* G){
LinkAddrb T;char m;
T=G;
cout<<"请选择查询的类型(按编号查询请输入0,按姓名查询请按其他键):";cin>>m;
if(m=='0')
{
char numtemp[8];cout<<"请输入要查询的编号:";cin>>numtemp;
while(strcmp(T->Nodenum,numtemp)&&T)T=T->next;
if(T){cout<<"查询结果是:"<<endl<<T->Nodenum<<'\t'<<T->Name<<'\t'<<T->Sex<<'\t'<<T->Telnum<<'\t'<<T->Address<<endl;}
else cout<<"没有查询到结果!"<<endl;
}
else
{
char nametemp[8];cout<<"请输入要查询的姓名:";cin>>nametemp;
while(strcmp(T->Name,nametemp)&&T)T=T->next;
if(T){cout<<"查询结果是:"<<endl<<T->Nodenum<<'\t'<<T->Name<<'\t'<<T->Sex<<'\t'<<T->Telnum<<'\t'<<T->Address<<endl;
T=T->next;while(strcmp(T->Name,nametemp)&&T)T=T->next;if(T){cout<<T->Nodenum<<'\t'<<T->Name<<'\t'<<T->Sex<<'\t'<<T->Telnum<<'\t'<<T->Address<<endl;}
}
else cout<<"没有查询到结果!"<<endl;}
return G;
}//查询
Addrb* Del_Addrb(Addrb* G){
LinkAddrb T,P=NULL,K;char m;T=G;
cout<<"请选择要删除的类型(按编号删除请输入0,按姓名删除请按其他键):";cin>>m;
if(m=='0'){char numtemp[8];cout<<"请输入要删除的编号:";cin>>numtemp;
while(strcmp(T->Nodenum,numtemp)){P=T;T=T->next;}
if(T){if(P)P->next=T->next;else{ P=T->next;G=P;}delete T;}else cout<<"没有输入的编号的记录!"<<endl;}
else{char nametemp[8];cout<<"请输入要删除的姓名:";cin>>nametemp;
while(strcmp(T->Name,nametemp)&&T){P=T;T=T->next;}
if(T){if(P)P->next=T->next;else {P=T->next;G=P; }
K=T->next;
cout<<T->Nodenum<<'\t'<<T->Name<<'\t'<<T->Sex<<'\t'<<T->Telnum<<'\t'<<T->Address<<endl;
char key;cout<<"是否确定要删除此通讯录(y或者n)?";cin>>key;if(key=='y'||key=='Y')delete T;
while(strcmp(K->Name,nametemp)&&K){P=K;K=K->next;}
if(K){if(P)P->next=K->next;else{P=K->next;G=P;}
cout<<K->Nodenum<<'\t'<<K->Name<<'\t'<<K->Sex<<'\t'<<K->Telnum<<'\t'<<K->Address<<endl;
cout<<"是否确定要删除此通讯录(y或者n)?";cin>>key;if(key=='y'||key=='Y')delete K;
}
}
else cout<<"没有输入的姓名的记录!"<<endl;}
return G;
}//删除
void Print_Addrb(Addrb* G){
LinkAddrb P;
P=G;
if(!P){cout<<"通讯录中没有记录!"<<endl;return;}
cout<<"编号\t"<<"姓名\t"<<"性别\t"<<"电话\t"<<"地址:"<<endl;
while(P){cout<<P->Nodenum<<'\t'<<P->Name<<'\t'<<P->Sex<<'\t'<<P->Telnum<<'\t'<<P->Address<<endl;P=P->next;}
return;}//输出
void main()
{
Addrb *G;//,*T
G=Creat_Addrb();
char m;
//cls();
H: cout<<"请输入您的操作(1.插入通讯录 2.通讯录查询 3.通讯录删除 4.输出通讯录 其他:退出):";cin>>m;
switch(m)
{
case '1':{G=Insert_Addrb(G);goto H;}
case '2':{G=Search_Addrb(G);goto H;}
case '3':{G=Del_Addrb(G);goto H;}
case '4':{Print_Addrb(G);goto H;}
default:cout<<"退出通讯录管理系统!"<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -