因為不知道你要實現什麼功能,給個程序僅供參考
編譯環境:vc++6.0
#include<iostream>
#include<windows.h>
using namespace std;
typedef struct
{
char name[25];//姓名
char number[50];//電話號碼
int a;//序號
char cls;//分類
char mail[50];//郵箱
}BOOK;
typedef struct node
{
BOOK data;
struct node *next;
}Node,*Link;
void Menu()
{
cout<<" |------------------------------------|"<<endl;
cout<<" | 1.查看通訊錄; 2.查找聯系人; |"<<endl;
cout<<" | 3.刪除聯系人; 4.添加聯系人; |"<<endl;
cout<<" | 0.退出系統; |"<<endl;
cout<<" |------------------------------------|"<<endl;
}
void Ordination(Link L)//通訊錄進行排序
{
Node *p;
int i=1;
p=L->next;
while(p)
{
p->data.a=i++;
p=p->next;
}
}
int Ordination1(Link L)//通訊錄進行排序
{
Node *p;
int i=1;
p=L->next;
while(p)
{
p->data.a=i++;
p=p->next;
}
if(i==16)
cout<<"\t\t\t通訊錄已滿!\n";
return(i-1);
}
Node *Locate(Link L,char nam[],char num[])
{
Node *p;
p=L->next;
while(p)
{
if(strcmp(p->data.name,nam)==0||strcmp(p->data.number,num)==0)
return p;
p=p->next;
}
return p;
}
void Fincls(Link L)//按類查找
{
Node *p;
char str;
int count=0;
cout<<"請輸入分類(A,B,C):";
cin>>str;
p=L->next;
if(!p)
{cout<<"\t\t\t通訊錄中沒有聯系人.\n";return;}
while(p)
{
if(str==p->data.cls)
{cout<<"姓名:"<<p->data.name<<";號碼:"<<p->data.number<<endl;
count++;}
p=p->next;
}
if(count==0)
cout<<"\t\t\t沒有"<<str<<"類聯系人.\n";
}
void Add(Link L)//添加聯系人
{
Node *p,*r;
char nam[25];
char num[50];
int flag=0;
flag=Ordination1(L);
if(flag==15)
return;
cout<<"姓名:";
scanf("%s",nam);
cout<<"號碼:";
scanf("%s",num);
p=Locate(L,nam,num);
if(p!=NULL)
{cout<<"\t\t\t該人信息已存在!\n";
return;
}
r=L;
while(r->next!=NULL)
r=r->next;
p=(Node*)malloc(sizeof(Node));
p->next=NULL;
strcpy(p->data.name,nam);
strcpy(p->data.number,num);
cout<<"分類(選A,B或C):";
p->data.cls=getchar();
p->data.cls=getchar();
cout<<"郵件:";
scanf("%s",p->data.mail);
r->next=p;
Ordination(L);
}
void Bohao(Node *p)//自動撥號功能
{
int i,j;
system("cls");
for(i=0;i<50;i++)
{
if(p->data.number[i]=='\0')
break;
}
for(j=0;j<i;j++)
{
printf("\a%c",p->data.number[j]);
Sleep(300);
}
cout<<endl;
}
void Book(Link L)//通訊錄
{
Node *p;
char str[25],ch;
p=L->next;
if(p==NULL)
{cout<<"\t\t\t沒有聯系人.\n";return;}
cout<<"通訊錄:\n";
while(p!=NULL)
{
cout<<p->data.a<<".";//顯示序號
cout<<p->data.name<<endl;
p=p->next;
}
cout<<"請輸入姓名查看聯系方式(0退出通訊錄):";
scanf("%s",str);
if(strcmp(str,"0")==0)
return;
p=L->next;
while(p)
{
if(strcmp(p->data.name,str)==0)
break;
p=p->next;
}
cout<<"姓名:"<<p->data.name<<";號碼:"<<p->data.number<<endl;
cout<<"是否撥號?(y/n):";
ch=getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
Bohao(p);
}
void Delet(Link L)//刪除聯系人
{
Node *p,*r;
char nam[25];
p=L->next;
if(p==NULL)
{cout<<"\t\t\t通訊錄為空,無聯系人可刪!\n";}
cout<<"需刪除聯系人的姓名:";
scanf("%s",nam);
while(p)
{
if(strcmp(p->data.name,nam)==0)
break;
p=p->next;
}
if(p==NULL)
{cout<<"\t\t\t沒有此人!\n";return;}
r=L;
while(r->next)
{
if(r->next==p)
break;
r=r->next;
}
r->next=p->next;
Ordination(L);
}
void main()
{
Link L;
int menu=1;
L=(Node*)malloc(sizeof(Node));
L->next=NULL;
Menu();
while(menu)
{
cout<<"請選擇操作(5顯示菜單):";
cin>>menu;
switch(menu)
{
case 1:Book(L);break;
case 2:Fincls(L);break;
case 3:Delet(L);break;
case 4:Add(L);break;
case 5:Menu();break;
}
}
}