首页 > 学院 > 开发设计 > 正文

c语言实现通讯录,包括增加名字,删除信息,查找,修改,排序

2019-11-08 02:32:19
字体:
来源:转载
供稿:网友

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  20typedef 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 ("电话本满了。/n");  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("添加成功/n");}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 ("电话本为空,无法删除/n");  return ; } printf ("请输入要删除的人名字>:"); scanf ("%s",name); pos = find_entry(pcon,name); if (pos==-1) {  printf ("要删的人不存在/n");  return ; } for (i=pos;i<pcon->count;i++) {  pcon->contact[i] = pcon->contact[i+1];  } pcon->count--; printf ("删除成功/n");}void SearchContact(pContact pcon){ int pos = 0; char name[MAX_NAME] = {0}; printf ("请输入你要查找的人名字/n"); scanf ("%s",name); pos = find_entry(pcon,name); if (pos==-1) {  printf ("没有这个人/n");  return ; } else  {   printf ("%10s%5s%6s%7s%8s/n",        "name","age","sex","tel","addr"  );  printf ("%10s%5d%6s%7s%8s/n",   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 ("请输入你要查找的人名字/n"); scanf ("%s",name); pos = find_entry(pcon,name); if (pos==-1) {  printf ("没有这个人/n");  return ; } printf ("请输入你要改为的名字/n"); scanf ("%s",name); printf ("请输入你要改为的年龄/n"); scanf ("%d",&age); printf ("请输入你要改为的性别/n"); scanf ("%s",sex); printf ("请输入你要改为的电话/n"); scanf ("%s",tel); printf ("请输入你要改为的地址/n"); scanf ("%s",addr);    printf ("%10s%5d%6s%7s%8s/n",       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/n","name","age","sex","tel","addr"  ); for (i=0;i<pcon->count;i++) {  printf ("%10s%5d%6s%7s%8s/n",   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/n",     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      *******/n"); printf ("***************2.DEL      *******/n"); printf ("***************3.SEARCH   *******/n"); printf ("***************4.MODIFY   *******/n"); printf ("***************5.SHOW     *******/n"); printf ("***************6.SORT     *******/n"); printf ("***************0.EXIT     *******/n");}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 ("输入有误,请重新输入!/n");   break;  } }while (input);}int main (){   test(); return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表