woaimeinuo的专栏

用结构体数组编写电话通讯录,必须得知道结构体的形式,那先把结构体定义回顾一下:

一般形式为:(1)struct 结构体名称

{成员表列} 数组名 [数组长度]

如:struct Person leader[3]

(2)对结构体数组初始化的形式是在定义定义数组的后面:={初值列表};

如struct Person leader [3]={"li",0,"zhang",0,"sun",0};

结构体指针:

比如:struct Student *pt;//pt 可以指向struct Student 类型的变量或数组元素

在结构体中,可以用typedef声明新类型名,如:

typedefstruct per{

int a:

char b;

}PER;

此时PER就是per的新名称

通讯录必须的有联系人的信息:姓名,年龄,性别,电话,地址

然后分别用添加函数,删除函数,查找函数,修改函数,显示函数,,清空函数来实现通讯录

void add(Pcon pcon);//添加函数void del(Pcon pcon);//删除函数void search(Pcon pcon);//查找函数

void modify(Pcon pcon);//修改函数void show(Pcon pcon);//显示函数void clear(Pcon pcon);//清空函数

最后用contact.h contact.c 分别编写存储函数

contact.h

<span style="font-size:18px;">#ifndef _CONTACT_H_//宏定义通讯录#define _CONTACT_H_ //宏定义通讯录#define NAME_LEN 30//全局变量#define SEX_LEN 5//全局变量#define TELP_LEN 12//全局变量#define GRO_LEN 15//全局变量#define MAX_PER 1000//全局变量typedef struct per{char name[NAME_LEN];char sex[SEX_LEN];int age;char telp[TELP_LEN];char gro[GRO_LEN];}PER,*PPER;typedef struct Contact{PER dhb[MAX_PER];int count;}PCON,*Pcon;void add(Pcon pcon);//添加函数void del(Pcon pcon);//删除函数void search(Pcon pcon);//查找函数void modify(Pcon pcon);//修改函数void show(Pcon pcon);//显示函数void clear(Pcon pcon);//清空函数#endif</span>

contact.c

<span style="font-size:18px;">#include <stdio.h>#include "contact.h"#include <string.h>int find(char *p,Pcon pcon)//在这封装一个find函数,在以后的函数里直接调用{int i=0;for(i=0;i<pcon->count;i++) {if(strcmp(p,pcon->dhb[i].name)==0)//strcmp为字符串比较函数{return i;} } return -1;}void add(Pcon pcon){if(pcon->count<MAX_PER){printf("请输入联系人名字:");scanf("%s",(pcon->dhb[pcon->count]).name);//结构体中变量间接访问成员printf("请输入年龄:");scanf("%d",&(pcon->dhb[pcon->count].age));printf("请输入性别:");scanf("%s",pcon->dhb[pcon->count].sex);printf("请输入电话:");scanf("%s",pcon->dhb[pcon->count].telp);printf("请输入地址:");scanf("%s",pcon->dhb[pcon->count].gro);pcon->count++;printf("ok!添加成功!\n");}else{printf("电话本已满!退出\n");return ;}}void del(Pcon pcon){char name[NAME_LEN];int k=0;int ret=0;printf("请输入你要删除的人的名字:");scanf("%s",name);ret=find(name,pcon);//调用find函数if(ret==-1){printf("no exit\n");}else{for(k=ret;k<pcon->count-1;k++){pcon->dhb[k-1]=pcon->dhb[k];}}pcon->count –;//删除一个成员后,计数器自减1printf("删除成功");}void search(Pcon pcon){char name[NAME_LEN];int ret = 0;if(ret == -1){printf("no exit\n");}else{printf("请输入要查找的联系人的名字:");scanf("%s",name);ret = find(name,pcon);printf("%12s",(pcon->dhb[ret]).name);printf("%12d",(pcon->dhb[ret]).age);printf("%12s",pcon->dhb[ret].sex);printf("%12s",pcon->dhb[ret].telp);printf("%12s\n",pcon->dhb[ret].gro);}}void modify(Pcon pcon){char name[NAME_LEN];int ret=0;printf("请输入你要修改人的名字:");scanf("%s",name);ret=find(name,pcon);if(ret=-1){printf("no exit\n");}else{printf("请输入修改的联系人的姓名:\n");scanf("%s",pcon->dhb[ret].name);printf("请输入修改的联系人的性别:\n");scanf("%s",pcon->dhb[ret].sex);printf("请输入修改的联系人的年龄:\n");scanf("%d",&pcon->dhb[ret].age);printf("请输入修改的联系人的电话:\n");scanf("%s",pcon->dhb[ret].telp);printf("请输入修改的联系人的住址:\n");scanf("%s",pcon->dhb[ret].gro);printf("修改成功\n");}}void show(Pcon pcon){int j;for(j=0;j<pcon->count;j++){printf("%s\n",pcon->dhb[j].name);printf("%s\n",pcon->dhb[j].sex);printf("%d\n",pcon->dhb[j].age);printf("%s\n",pcon->dhb[j].telp);printf("%s\n",pcon->dhb[j].gro);}}void clear(Pcon pcon){pcon->count=0;//只要设定的电话本里的计数器count归零就达到了清空的作用}void menu()//菜单选择函数{printf("*****************************\n");printf("***1>add***\n");printf("***2>del***\n");printf("***3>search***\n");printf("***4>modify***\n");printf("***5>show***\n");printf("***6>clear***\n");printf("*****************************\n");}int main()//主函数中定义选择语句{PCON con;//此时PCON为类型int input = 1;con.count = 0;//对count初始化为0,说明此时电话本为空while(input){menu();printf("请输入你的选择>:");scanf("%d",&input);switch(input){case 1:add(&con);break;case 2:del(&con);break;case 3:search(&con);break;case 4:modify(&con);break;case 5:show(&con);break;case 6:clear(&con);break;default:break;}}return 0;}</span>

运行结果:

到一个新的环境去欣赏去看去听,

woaimeinuo的专栏

相关文章:

你感兴趣的文章:

标签云: