zoukankan      html  css  js  c++  java
  • c语言实现通讯录,包括增加名字,删除信息,查找,修改,排序

    c语言可以实现的简单程序,很好的运用了结构体,结构体数组,结构体指针,函数的实现

    //contact.h
    
    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #ifndef     __CONTACT_H__
    #define     __CONTACT_H__
    #define     MAX  1000
    #define     MAX_NAME 20
    #define     MAX_SEX  5
    #define     MAX_TEL  12
    #define     MAX_ADDR  20
    
    typedef struct PeoInfor
    {
     char name[MAX_NAME];
     char sex[MAX_SEX];
     int age;
     char tel[MAX_TEL];
     char addr[MAX_ADDR];
    }PeoInfor;
    
    typedef struct Contact
    {
     PeoInfor contact [MAX];
     int count;
    }Contact,*pContact;
    
    void InitContact(pContact pcon);
    void AddContact(pContact pcon);
    void DelContact(pContact pcon);
    void SearchContact(pContact pcon);
    void ModifyContact(pContact pcon);
    void ShowContact(pContact pcon);
    void SortContact(pContact pcon);
    #endif //
    
    //contact.c
    #define _CRT_SECURE_NO_WARNINGS 1
    #include "contact.h"
     void InitContact(pContact pcon)
    {
     pcon ->count = 0;
     memset(pcon->contact,0,MAX*sizeof(PeoInfor));
    }
    void AddContact(pContact pcon)
    {
     if (pcon->count >=MAX)
     {
      printf ("电话本满了。
    ");
      return ;
     }
     printf ("请输入姓名>:");
     scanf ("%s",pcon->contact[pcon->count].name);
     printf ("请输入年龄>:");
     scanf ("%d",&(pcon->contact [pcon->count].age));
     printf ("请输入性别>:");
     scanf ("%s",pcon->contact [pcon->count].sex);
     printf ("请输入电话>:");
     scanf ("%s",pcon->contact [pcon->count].tel);
     printf ("请输入地址>:");
     scanf ("%s",pcon->contact [pcon->count].addr);
     pcon->count ++;
     printf("添加成功
    ");
    }
    
    int find_entry(pContact pcon,char name[])
    {
     int i = 0;
     for (i=0;i<pcon->count;i++)
     {
      if (strcmp(name,pcon->contact[i].name)==0)
       return i;
     }
     return -1;
    }
    
    void DelContact(pContact pcon)
    {
     char name[MAX_NAME] = {0};
     int pos = 0;
     int i = 0;
     if (pcon->count==0)
     {
      printf ("电话本为空,无法删除
    ");
      return ;
     }
     printf ("请输入要删除的人名字>:");
     scanf ("%s",name);
     pos = find_entry(pcon,name);
     if (pos==-1)
     {
      printf ("要删的人不存在
    ");
      return ;
     }
     for (i=pos;i<pcon->count;i++)
     {
      pcon->contact[i] = pcon->contact[i+1]; 
     }
     pcon->count--;
     printf ("删除成功
    ");
    }
    
    void SearchContact(pContact pcon)
    {
     int pos = 0;
     char name[MAX_NAME] = {0};
     printf ("请输入你要查找的人名字
    ");
     scanf ("%s",name);
     pos = find_entry(pcon,name);
     if (pos==-1)
     {
      printf ("没有这个人
    ");
      return ;
     }
     else 
     {
       printf ("%10s%5s%6s%7s%8s
    ",
            "name","age","sex","tel","addr"  );
      printf ("%10s%5d%6s%7s%8s
    ",
       pcon->contact[pos].name,
       pcon->contact[pos].age,
       pcon->contact[pos].sex,
       pcon->contact[pos].tel,
       pcon->contact[pos].addr);
     }
    }
    
    void ModifyContact(pContact pcon)
    {
     int pos = 0;
     char name[MAX_NAME] = {0};
     int age = 0;
     char sex[MAX_SEX] = {0};
     char tel[MAX_TEL] = {0};
     char addr[MAX_ADDR] = {0};
     printf ("请输入你要查找的人名字
    ");
     scanf ("%s",name);
     pos = find_entry(pcon,name);
     if (pos==-1)
     {
      printf ("没有这个人
    ");
      return ;
     }
     printf ("请输入你要改为的名字
    ");
     scanf ("%s",name);
     printf ("请输入你要改为的年龄
    ");
     scanf ("%d",&age);
     printf ("请输入你要改为的性别
    ");
     scanf ("%s",sex);
     printf ("请输入你要改为的电话
    ");
     scanf ("%s",tel);
     printf ("请输入你要改为的地址
    ");
     scanf ("%s",addr);
        printf ("%10s%5d%6s%7s%8s
    ",
           strcpy(pcon->contact[pos].name,name),
        age,
        strcpy(pcon->contact[pos].sex,sex),
           strcpy(pcon->contact[pos].tel,tel),
        strcpy(pcon->contact[pos].addr,addr));
    }
    
    void ShowContact(pContact pcon)
    {
     int i = 0;
     printf ("%10s%5s%6s%7s%8s
    ","name","age","sex","tel","addr"  );
     for (i=0;i<pcon->count;i++)
     {
      printf ("%10s%5d%6s%7s%8s
    ",
       pcon->contact[i].name,
       pcon->contact[i].age,
       pcon->contact[i].sex,
       pcon->contact[i].tel,
       pcon->contact[i].addr);
     }
    }
    static int cmp(const void *elem1,const void *elem2)
    {
      return  strcmp ((*(PeoInfor*)elem1).name ,(*(PeoInfor*)elem2).name );
    }
    
    void SortContact(pContact pcon)
    {
     int i = 0;
     int sz = sizeof(pcon->contact)/sizeof(pcon->contact[0]);
     qsort (pcon->contact,pcon->count,sizeof (pcon->contact[0]),&cmp); 
      for (i=0;i<pcon->count;i++)
      {
        printf ("%s %d %s %s %s
    ",
         pcon->contact[i].name,
         pcon->contact[i].age,
         pcon->contact[i].sex,
         pcon->contact[i].tel,
         pcon->contact[i].addr);
      }
    }
          
    
    //test.c
    
    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    #include "contact.h"
    enum Option
    {
     EXIT,
     ADD,
     DEL,
     SEARCH,
     MODIFY,
     SHOW,
     SORT,
    };
    
    void menu ()
    {
     printf ("***************1.ADD      *******
    ");
     printf ("***************2.DEL      *******
    ");
     printf ("***************3.SEARCH   *******
    ");
     printf ("***************4.MODIFY   *******
    ");
     printf ("***************5.SHOW     *******
    ");
     printf ("***************6.SORT     *******
    ");
     printf ("***************0.EXIT     *******
    ");
    }
    
    void test ()
    {
     int input = 0;
     Contact con = {0} ;
     InitContact(&con);
     do
     {
      menu();
      printf ("请选择>:");
         scanf ("%d",&input);
      switch (input)
      {
      case ADD:
       AddContact(&con);
       break;
      case DEL:
       DelContact(&con);
       break;
      case SEARCH:
       SearchContact(&con);
       break;
      case MODIFY:
       ModifyContact(&con);
       break;
      case SHOW:
       ShowContact(&con);
       break;
      case SORT:
          SortContact(&con);
       break;
      case EXIT:
       break;
      default :
       printf ("输入有误,请重新输入!
    ");
       break;
      }
     }while (input);
    }
    
    
    int main ()
    {
     test();
     return 0;
    }
    
  • 相关阅读:
    oracle数据表批量插入查询到的数据
    Eclipse EXCEPTION_ACCESS_VIOLATION 崩溃解决办法
    js获取当前URL、主机端口、网络协议、请求参数
    java.util.ConcurrentModificationException异常分析
    Java跨平台调接口同时更新同一条数据发生阻塞
    centos7+mariadb+防火墙,允许远程
    centos7安装JDK
    centos7安装python3
    VMware 中安装KVM,模块不加载
    C++程序结构.1
  • 原文地址:https://www.cnblogs.com/chan0311/p/9427370.html
Copyright © 2011-2022 走看看