简单静态通讯录的实现

来源:互联网 发布:彩票关注源码出售 编辑:程序博客网 时间:2024/05/16 16:01

头文件部分:

Contact.h#define _CRT_SECURE_NO_WARNINGS#ifndef __CONTACT_H__ #define __CONTACT_H__ #include <stdio.h>#include <assert.h>#include <string.h>#define MAX 1000 //通讯录最大存储量#define NAME_MAX 20//名字最大长度 #define SEX_MAX 5 //性别...#define ADDR_MAX 30 //地址...#define TELE_MAX 12 //电话...typedef struct PeoInfo { char name[NAME_MAX]; int age; char sex[SEX_MAX]; char addr[ADDR_MAX]; char tele[TELE_MAX]; }PeoInfo;//定义的新类型typedef struct Contact { PeoInfo data[MAX]; int sz; }Contact, *pContact; void InitContact(pContact pcon); //初始化通讯录void AddContact(pContact pcon); //添加void ShowContact(const pContact pcon); //展示void DelContact(pContact pcon); //删除void SearchContact(pContact pcon); //查找void ModifyContact(pContact pcon);//修改 void SortContact(pContact pcon); //排序void ClearContact(pContact pcon);//清空 #endif


测试程序

 test.c

#define _CRT_SECURE_NO_WARNINGS  #include "Contact.h"  void menu()//菜单  {  printf("*******************************************************\n");  printf("*************      1.ADD         2.DEL   **************\n");  printf("********           3.SEARCH      4..MODIFY     ********\n");  printf("*************      5.SHOW        6.CLEAR   ************\n");  printf("*************      7.SORT        0.EXIT  **************\n");  printf("*******************************************************\n");  }  enum  {  EXIT,//0  ADD,//1  DEL,//2  SEARCH,//3  MODIFY,//4  SHOW,//5  CLEAR,//6  SORT//7  };  void test()  {  int input = 0;  Contact my_con;  InitContact(&my_con);//初始化通讯录  do   {  menu();//打印菜单  printf("请选择:>");  scanf("%d",&input);  switch (input)  {  case ADD:  AddContact(&my_con);  break;  case SHOW:  ShowContact(&my_con);  break;  case DEL:  DelContact(&my_con);  break;  case SEARCH:  SearchContact(&my_con);  break;  case MODIFY:  ModifyContact(&my_con);  break;  case CLEAR:  ClearContact(&my_con);  break;  case SORT:  SortContact(&my_con);  break;  default:  break;}  } while (input);  }  int main()  {  test();  return 0;  }  

 

实现

Contact.c#define _CRT_SECURE_NO_WARNINGS  #include "Contact.h"  void InitContact(pContact pcon)//初始化通讯录  {  pcon->sz = 0;  memset(pcon->data, 0, sizeof(pcon->data));  }  void AddContact(pContact pcon)//添加联系人  {  assert(pcon!=NULL);  if (pcon->sz == MAX)  {  printf("通讯录满了!\n");  }  printf("请输入姓名:>\n");  scanf("%s",pcon->data[pcon->sz].name);  printf("请输入性别:>\n");  scanf("%s",pcon->data[pcon->sz].sex);  printf("请输入年龄:>\n");  scanf("%d",&(pcon->data[pcon->sz].age));  printf("请输入地址:>\n");  scanf("%s",pcon->data[pcon->sz].addr);  printf("请输入电话:>\n");  scanf("%s",pcon->data[pcon->sz].tele);  pcon->sz++;  printf("录入成功!\n");  }  int find(pContact pcon,char name[])//通用的查找函数  {  int i = 0;  assert(pcon!=NULL);  for (i=0; i<pcon->sz; i++)  {  if (strcmp(pcon->data[i].name ,name) == 0)  {  return i;  }  }return -1;}  void DelContact(pContact pcon)//删除联系人  {  int ret = 0;  char name[NAME_MAX] = {0};  assert(pcon!=NULL);  printf("请输入要删除人的名字:>");  scanf("%s",name);  ret = find(pcon, name);  if (ret == -1)  {  printf("要查找的人不存在\n");  return;  }  else  {  int i =0;  for (i=ret; i<pcon->sz; i++)  {  pcon->data[i] = pcon->data[i+1];  }  pcon->sz--;  printf("删除成功\n");  }  }  void SearchContact(pContact pcon)//查找联系人  {  int ret = 0;  char name[NAME_MAX] = {0};  assert(pcon!=NULL);  printf("请输入要查找的名字:>");  scanf("%s",name);  ret = find(pcon,name);  if (ret == -1)  {  printf("要查找的人不存在\n");  return;  }  else  {  printf("%10s\t%5s\t%5s\t%15s\t%15s\n", "姓名", "性别", "年龄", "地址", "电话");  printf("%10s\t%5s\t%5d\t%15s\t%15s\n", pcon->data[ret].name,   pcon->data[ret].sex,  pcon->data[ret].age,  pcon->data[ret].addr,   pcon->data[ret].tele);     }  }  void ModifyContact(pContact pcon)//修改联系人  {  int ret = 0;  char name[NAME_MAX] = {0};  assert(pcon!=NULL);  printf("请输入要修改人的名字:>");  scanf("%s",name);  ret = find(pcon,name);  if (ret == -1)  {  printf("要查找的人不存在\n");  }  else  {  printf("请输入姓名:>\n");  scanf("%s",pcon->data[ret].name);  printf("请输入性别:>\n");  scanf("%s",pcon->data[ret].sex);  printf("请输入年龄:>\n");  scanf("%d",&(pcon->data[ret].age));  printf("请输入地址:>\n");  scanf("%s",pcon->data[ret].addr);  printf("请输入电话:>\n");  scanf("%s",pcon->data[ret].tele);  }  }  void ShowContact(const pContact pcon)//展示联系人  {  int i = 0;  assert(pcon!=NULL);  printf("%10s\t%5s\t%5s\t%15s\t%15s\n", "姓名", "性别", "年龄", "地址", "电话");  for (i=0; i<pcon->sz; i++)  {  printf("%10s\t%5s\t%5d\t%15s\t%15s\n", pcon->data[i].name,   pcon->data[i].sex,  pcon->data[i].age,  pcon->data[i].addr,   pcon->data[i].tele);   }  }  void ClearContact(pContact pcon)//清空联系人  {  assert(pcon!=NULL);  pcon->sz = 0;  }  void SortContact(pContact pcon)//按名字进行排序  {  int i = 0;  int j = 0;  PeoInfo tmp;  assert(pcon!=NULL);  for (i=0; i<pcon->sz; i++)  {  for (j=0; j<pcon->sz-i-1; j++)  {  if (strcmp(pcon->data[j].name, pcon->data[j+1].name)>0)  {  tmp = pcon->data[j];  pcon->data[j] = pcon->data[j+1];  pcon->data[j+1] = tmp;  }  }  }  ShowContact(pcon);  }  


选取其中几个进行截图:









原创粉丝点击