通讯录动态实现

来源:互联网 发布:全球复制软件 编辑:程序博客网 时间:2024/04/30 03:44

contact.h

<span style="font-size:24px;">#include<stdio.h>#include <memory.h>#include<string.h>#include <process.h>#include <stdlib.h>      #include <malloc.h>#ifdef __CONTACT__H_#endif __CONTACT__H_#define NAM_MAX 10#define SEX_MAX 5#define TEL_MAX 12#define ADDR_MAX 10#define MAX 1000#define CUR_N 2#define ADD_N 3typedef struct Per{char name[NAM_MAX];char sex[SEX_MAX];int age;int tel[TEL_MAX];char addr[ADDR_MAX];}Per;typedef struct Contact{Per* p;int num;int cap;}*Pcon,Con;void menu();void Init_Con(Pcon pcon);void Add_Con(Pcon pcon);void Del_Con(Pcon pcon);void Modi_Con(Pcon pcon);void Sear_Con(Pcon pcon);void Emp_Con(Pcon pcon);int find(Pcon pcon,char *name);void print(Pcon pcon);#define _</span>

contact.c

<span style="font-size:24px;">#include"contact.h"void Init_Con(Pcon pcon){   pcon->num=0;   pcon->p=(Per*)malloc(CUR_N*sizeof(Per));   memset(pcon->p,0,CUR_N*sizeof(Per));   pcon->cap=CUR_N;}void Add_Con(Pcon pcon){if(pcon->num==pcon->cap ){ Per* ptr=(Per*)realloc(pcon->p,(pcon->num+ADD_N)*sizeof(Per)); if(ptr==NULL) { printf("out of memory\n"); exit(EXIT_FAILURE); } else pcon->p=ptr; pcon->cap +=ADD_N;}      printf("添加者姓名:");      scanf("%s",pcon->p[pcon->num].name);  printf("添加者性别:");  scanf("%s",pcon->p[pcon->num].sex);  printf("添加者年龄:");  scanf("%d",&(pcon->p[pcon->num].age));  printf("添加者电话:");  scanf("%s",pcon->p[pcon->num].tel);  printf("添加者住址:");  scanf("%s",pcon->p[pcon->num].addr);  pcon->num++;}int find(Pcon pcon,char *name){   int i=0;for(i=0;i<pcon->num;i++){if(0==strcmp(pcon->p[i].name,name)){return i;}     }return -1;}void Del_Con(Pcon pcon){int i=0;int ret=0;char name[10]={0};if(pcon->num==0){printf("电话本已空\n");}else{ printf("请输入删除者姓名:");        scanf("%s",name);ret=find(pcon,name);if(ret!=-1){ for(i=ret;i<pcon->num-1;i++) { pcon->p[i]=pcon->p[i+1]; }  pcon->num--;  printf("删除完毕\n");}elseprintf("不存在");}}void Modi_Con(Pcon pcon){int i=0;int ret=0;char name[10]={0};if(pcon->num==0){printf("电话本已空\n");}else{ printf("请输入修改者姓名:");        scanf("%s",name);ret=find(pcon,name);if(ret!=-1){ printf("添加者姓名:");      scanf("%s",pcon->p[ret].name);  printf("添加者性别:");  scanf("%s",pcon->p[ret].sex);  printf("添加者年龄:");  scanf("%d",&(pcon->p[ret].age));  printf("添加者电话:");  scanf("%s",pcon->p[ret].tel);  printf("添加者住址:");  scanf("%s",pcon->p[ret].addr);}else printf("要修改的人不存在");}}void Sear_Con(Pcon pcon){int ret=0;char name[10]={0};if(pcon->num==0){printf("电话本已空\n");}else{ printf("请输入查找者姓名:");        scanf("%s",name);ret=find(pcon,name);if(ret!=-1){printf("%10s\t%5s\t%5d\t%12s\t%10s\n",pcon->p[ret].name,pcon->p[ret].sex,pcon->p[ret].age,pcon->p[ret].tel,pcon->p[ret].addr);}elseprintf("查找的人不存在\n");}}void Emp_Con(Pcon pcon){pcon->num=0;}void print(Pcon pcon){int i=0;printf("%10s\t%5s\t%5s\t%12s\t%10s\n","name","sex","age","tel","addr");for(i=0;i<pcon->num;i++){    printf("%10s\t%5s\t%5d\t%12s\t%10s\n",pcon->p[i].name,pcon->p[i].sex,pcon->p[i].age,pcon->p[i].tel,pcon->p[i].addr);}}</span>


test.c

<span style="font-size:24px;">#include"contact.h"enum menu{  EXIT,  ADD,  DEL,  SEAR,  MODI,  PRINT,  EMPTY};void menu(){printf("******1.ADD    2.DEL*****\n");printf("*****3.SEAR    4.MODI****\n");printf("****5.PRINT    6.EMPTY***\n");  }int main(){int input=1;Con con;Init_Con(&con); while(input){ menu();    printf("请选择:");scanf("%d",&input);switch(input){case ADD:Add_Con(&con);break;case DEL:Del_Con(&con);break;case SEAR:Sear_Con(&con);break;case MODI:Modi_Con(&con);break;case PRINT:print(&con);break;case EMPTY:Emp_Con(&con);break;default :break;}}system("pause");return 0;}</span>


0 0
原创粉丝点击