用C语言实现简易通讯录

  

C语言实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括:
  

  

姓名:性别,年龄,电话,住址

  

* *提供方法:
  

  

1。添加联系人信息
  2. 删除指定联系人信息
  3.查找指定联系人信息
  4. 修改指定联系人信息
  5. 显示所有联系人信息
  6. 清空所有联系人
  7. 以名字排序所有联系人* *

  

<>强思路分析:

  

首先我们可以分三个模块来解决这个问题,第一个模块我们需要一个头文件,这个头文件里可以包含一些相应信息,当实现文件和测试文件包含自己定义的头文件时便可以获得一些相关的信息。所以头文件里应该包括一个结构体,这个结构体里应包含姓名:性别,年龄,电话,住址。同时还可以定义一个结构体,这个结构体里包含通讯录,同时通讯录里人员的计数变量,将通讯录的地址传到别的地方便可以实现对它遍历或者其他操作。
  第二个模块便是我们的测试函数,测试函数便可以实现我们的菜单打印,同时由我们接收不同的值便可以实现不同的操作,就是相应的方法的实现,这里很明显可以通过一个开关语句来进行控制。
  第三个模块便是我们的方法实现的函数,将模块2里定义的类型为通讯录的地址传到各个方法里,这样便可以实现对通讯录的操作。
  

  

1. linkman.h(头文件)

        的ifndef __LINKMAN_H__   #定义__LINKMAN_H__      # include   # include   # include   # pragma警告(禁用:4996)   typedef struct主持人//建立结构体,存放联系人信息   {   char[20]名称;   char性[10];   int年龄;   int电话[12];   char addr [50];   }主持人;      typedef struct统计学的//把通讯录和人员统计放在结构体内   {   主持人num [1000];   int数;   }统计学的;      空白inint_linkman(统计学的* p);//初始化数组   空白Add_linkman(统计学的* p);//添加联系人信息   空白Dele_linkman(统计学的* p);//删除指定联系人信息   空白Find_linkman(统计学的* p);//查找指定联系人信息   空白Revise_linkman(统计学的* p);//修改指定联系人信息   空白Display_linkman(统计学的* p);//显示所有联系人信息   空白Empty_linkman(统计学的* p);//清空所有联系人   空白sort_linkman(统计学的* p);//以名字排序所有联系人   # endif   之前      

2. test.c(测试)

        # include“linkman.h”   统计学的sta;   空白菜单()//菜单   {   printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”);   printf(" * * * * * * * * 1。添加联系人信息* * * * * * * * * * * \ n”);   printf(" * * * * * * * * 2。删除指定联系人信息* * * * * * * \ n”);   printf(" * * * * * * * * 3。查找指定联系人信息* * * * * * * \ n”);   printf(" * * * * * * * * 4。修改指定联系人信息* * * * * * * \ n”);   printf(" * * * * * * * * 5。显示所有联系人信息* * * * * * * \ n”);   printf(" * * * * * * * * 6。清空所有联系人* * * * * * * * * * * \ n”);   printf(" * * * * * * * * 7。以名字排序所有联系人* * * * * \ n”);   printf(" * * * * * * * * * * * * * *按0退出程序* * * * * * * * * * \ n”);   printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”);      }      空白测试()   {   int i=0;   做   {   菜单();   printf(“请输入你要进行的选项:”);   scanf (“% d”,和我);   开关(我)   {   案例1:   Add_linkman(及sta);   打破;   案例2:   Dele_linkman(及sta);   打破;   案例3:   Find_linkman(及sta);   打破;   案例4:   Revise_linkman(及sta);   打破;   例5:   Display_linkman(及sta);   打破;   例6:   Empty_linkman(及sta);   打破;   例7:   sort_linkman(及sta);   打破;   例0:   退出(1);   打破;   默认值:   printf("输入错误\ n”);   打破;   }   },(我);   }         int main ()   {   inint_linkman(及sta);   测试();   系统(“暂停”);   返回0;   }   之前      

3. game.c(实现)

        # include“linkman.h”         空白inint_linkman(统计学的* p)   {   int数=sizeof (p→num);   p→数=0;   memset (p→num 0数);   }   int找到(统计学的* p, char * pname)//对于一个联系人是否存在封装一个函数,在后面的修改,删除,查找可以用的到   {   int i=0;   (我=0;我& lt;(p→数);我+ +)   {   如果(strcmp (p→num[我]. name, pname)==0)   返回我;      }   返回1;   }      空白menu1()//修改联系人时所用到的菜单   {   printf (" * * * * * * * * * * * * * * * * * * * * * \ n”);   printf(" * * * * 1。姓名* 2。性别* * * * \ n”);   printf(" * * * * 3。年龄* 4。电话* * * * \ n”);   printf(" * * * * 5。地址* 6。返回* * * * \ n”);   printf (" * * * * * * * * * * * * * * * * * * * * * \ n”);   }      空白Add_linkman(统计学的* p)//添加联系人   {   printf(“请输入你要添加的联系人姓名:\ n”);   scanf (“% s”, p→num [p→计数]. name);   printf(“请输入你要添加的联系人性别:\ n”);   scanf (“% s”, p→num [p→计数].sex);   printf(“请输入你要添加的联系人年龄:\ n”);   scanf (“% d”, (p→num [p→计数].age));   printf(“请输入你要添加的联系人电话:\ n”);   scanf (“% s”, p→num [p→计数].tel);   printf(“请输入你要添加的联系人地址:\ n”);   scanf (“% s”, p→num [p→计数].addr);   如果((p→计数)比;1000)   {   printf("联系人上限\ n”);   }   其他的   {   printf("添加成功\ n”);   p→计数+ +;   }   }      空白Dele_linkman(统计学的* p)//删除联系人   {   字符的名字[20]={0};   int结果=0;   int n=0;   int i=0;   printf(“请输入要删除人的姓名:\ n”);   scanf (“% s”的名字);   结果=找到(p,名称);   如果(结果!=1)   {   printf("你是否要删除该联系人? \ n”);   printf("删除请按1,不删除请按0 \ n”);   scanf (“% d”,和n);   如果(n==1)   {   (我=0;我& lt;(p→数量)1;我+ +)   {   p→num[我]=p→num (i + 1);   }   p→计数,   printf("删除成功\ n”);   }   其他的   {   printf("删除失败\ n”);   }   }   其他的   {   printf("你要删除的联系人不存在\ n”);   }   }      空白Find_linkman(统计学的* p)//查找联系人   {   字符的名字[20]={0};   int结果=0;   printf(“请输入要查找联系人的姓名:\ n”);   scanf (“% s”的名字);   结果=找到(p,名称);   如果(结果!=1)   {   printf("姓名:% s \ n, p→num[结果]. name);   printf("性别:% s \ n, p→num[结果].sex);   printf("年龄:% d \ n, p→num[结果].age);   printf("电话:% s \ n, p→num[结果].tel);   printf("地址:% s \ n, p→num[结果].addr);   }   其他的   {   printf("你要查找的联系人不存在\ n”);   }   }      空白Revise_linkman(统计学的* p)//修改联系人   {   字符的名字[20]={0};   int结果=0;   printf(“请输入你要修改联系人的姓名:\ n”);   scanf (“% s”的名字);   结果=找到(p,名称);   如果(结果!=1)   {   printf("姓名:% s \ n, p→num[结果]. name);   printf("性别:% s \ n, p→num[结果].sex);   printf("年龄:% d \ n, p→num[结果].age);   printf("电话:% s \ n, p→num[结果].tel);   printf("地址:% s \ n, p→num[结果].addr);   int i=0;   做   {   menu1 ();   printf("输入你要修改的选项:\ n”);   scanf (“% d”,和我);   开关(我)   {   案例1:   printf("请把姓名修改成:”);   scanf (“% s”, p→num[结果]. name);   打破;   案例2:   printf("请把性别修改成:”);   scanf (“% s”, p→num[结果].sex);   打破;   案例3:   printf("请把年龄修改成:”);   scanf (“% d”, (p→num[结果].age));   打破;   案例4:   printf("请把电话修改成:”);   scanf (“% s”, p→num[结果].tel);   打破;   例5:   printf("请把地址修改成:”);   scanf (“% s”, p→num[结果].addr);   打破;   例0:   打破;   默认值:   printf("输入错误”);   打破;   }   },(我);   }   其他的   {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

用C语言实现简易通讯录