程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> 用C語言如何做通訊錄?

用C語言如何做通訊錄?

編輯:C語言問答

用C語言如何做通訊錄?

10

最佳回答:

因為不知道你要實現什麼功能,給個程序僅供參考

編譯環境: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;
  }
 }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved