首页 > 编程 > C > 正文

C语言实现简单的通讯录

2020-01-26 13:46:07
字体:
来源:转载
供稿:网友

用C语言写了一个简单的通讯录,说简单一是功能简单,二是也没有加读写文件操作,只是作为链表操作的一个练习,希望能给这方面的新手一此引导和帮助。

代码:

/* 转贴请注明出处         */ /* 作者:小浦原(ID:blueboy82006)      */ /* http://blog.csdn.net/blueboy82006     */ #include <stdio.h> #include <stdlib.h> #include<string.h> #include<ctype.h> typedef struct node{  char name[12];  char phone[13];  struct node *next; }LNode; LNode *h;        //头结点 static int flag=1;     //通讯录创建标记 int CreateNode(void)     //创建单循环链表 {  if(flag)  {   LNode *p;   h=(LNode *)malloc(sizeof(LNode));   h->next=NULL;   p=h;   flag--;   return 1;  }  else   return 0; } int InsertNode(void)    //插入函数 {  if(!flag)  {   LNode *t;   char name1[12];   char phone1[13];   printf("/n输入姓名:");   scanf("%s",name1);   printf("/n输入联系电话:");   scanf("%s",phone1);   t=(LNode *)malloc(sizeof(LNode));   strcpy(t->name,name1);   strcpy(t->phone,phone1);   t->next=h->next;   h->next=t;   return 1;  }  else   return 0; } int SearchNode(void)    //查询函数 {  if(!flag)  {   LNode *p;   int x=0;   char name1[12];   printf("/n输入查询姓名:");   scanf("%s",name1);   p=h;   printf("/n查询结果:");   while(p->next)   {    p=p->next;    if(strcmp(p->name,name1)==0)    {     printf("/n姓名:%s/n联系电话:%s/n",p->name,p->phone);     x++;    }   }   if(!x)    printf("/n没有找到相关信息!");   return 1;  }else   return 0; } int DeletNode(void)    //删除函数 {  if(!flag)  {   LNode *pre,*p;   char name1[12];   p=h;   printf("/n输入要删除联系人的姓名:");   scanf("%s",name1);   while(p->next)   {    pre=p;    p=p->next;    if(strcmp(p->name,name1)==0)    {     pre->next=p->next;     free(p);     printf("删除成功!/n");     break;    }   }   if(!p->next)    printf("/n没有找到要删除的信息!");   return 1;  }  else   return 0; } int PrintNode(void)    //输出函数 {  if(!flag)  {   LNode *p;   p=h;   while(p->next)   {    p=p->next;    printf("/n姓名:%s /t联系电话:%s",p->name,p->phone);   }   return 1;  }  else   return 0; } int main()       //主函数 {  char n;  printf("/n/n");  printf("/t/t   通讯录/t/n");  printf("/t/t|――――――――――――――――|/n");  printf("/t/t|        |/n");  printf("/t/t| [1] 建立通讯录     |/n");  printf("/t/t| [2] 插入联系人的姓名   |/n");  printf("/t/t| [3] 查找联系人的姓名   |/n");  printf("/t/t| [4] 删除联系人的姓名   |/n");  printf("/t/t| [5] 输出所有联系人信息   |/n");  printf("/t/t| [0] 退出      |/n");  printf("/t/t|        |/n");  printf("/t/t| 如未建立新表,请先建立!  |/n");  printf("/t/t|        |/n");  printf("/t/t|――――――――――――――――|/n");  printf("/n");  printf("请输入你的选项(0-5):");  while(1)  {   scanf("%s",&n);   while(!(n=='0'||n=='1'||n=='2'||n=='3'||n=='4'||n=='5'))   {    printf("请输入你的选项(0-5):");    scanf("%s",&n);   }   system("CLS");   switch(n)   {   case '0':{    printf("/n/t/t感谢您的使用!/n");    return 0;      }   case '1':{    if(CreateNode())     printf("通讯录建立成功!/n");    else     printf("通讯录已建立,无需重复建立!/n");    break;      }   case '2':{    if(InsertNode())     printf("添加成功!/n");    else     printf("添加失败,请先创建通讯录!/n");    break;      }   case '3':{    if(SearchNode())     printf("/n");    else     printf("查找失败,请先创建通讯录!/n");    break;      }   case '4':{    if(DeletNode())     printf("/n");    else     printf("删除失败,请先创建通讯录!/n");    break;      }   case '5':{    if(PrintNode())     printf("/n以上是全部联系人信息./n");    else     printf("ERROR,请先创建通讯录!/n");        break;      }   default:{printf("输入不符合要求!");}   }   printf("/n/n");   printf("/t/t   通讯录/t/n");   printf("/t/t|――――――――――――――――|/n");   printf("/t/t|        |/n");   printf("/t/t| [1] 建立通讯录     |/n");   printf("/t/t| [2] 插入联系人的姓名   |/n");   printf("/t/t| [3] 查找联系人的姓名   |/n");   printf("/t/t| [4] 删除联系人的姓名   |/n");   printf("/t/t| [5] 输出所有联系人信息   |/n");   printf("/t/t| [0] 退出      |/n");   printf("/t/t|        |/n");   printf("/t/t| 如未建立新表,请先建立!  |/n");   printf("/t/t|        |/n");   printf("/t/t|――――――――――――――――|/n");   printf("/n");  } } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选