目录
前言
我们用三个文件C语言文件来实现通讯录,分别为 Contanct.h Contanct.c test.c
test.c: 实现通讯录的逻辑。
Contanct.c:分装多个函数,是通讯录的主要实现方法。
Contanct.h:放对结构体,自定义函数的声明。
实现功能
1.存放1000个好友信息 名字 电话 性别 住址 年龄
2.增加好友信息
3.删除指定名字的好友信息
4.查找好友信息
5.修改好友信息
6.打印好友信息
test.c
#include"contanct.h" void menu() { printf("*********************************************\n"); printf("***********1.add 2.del **********\n"); printf("***********3.search 4.modify *******\n"); printf("***********5.show 0.exit *********\n"); printf("*********************************************\n"); printf("*********************************************\n"); } int main() { int input; //创建通讯录 struct Contanct con; //初始化通讯录 InitContact(&con); do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case ADD: AddContact(&con); break; case DEL: DelContact(&con); break; case SEARCH: SEARCHContanct(&con); break; case MODIFY: MODIFYContanct(&con); break; case SHOW: ShowContanct(&con); break; case EXIT: printf("退出通讯录\n"); return 0; default: printf("选择错误!\n"); } } while (1); }
Contanct.h
#define _CRT_SECURE_NO_WARNINGS 1 #define MAX 1000 #define MAX_NAME 20 #define MAX_SEX 5 #define MAX_TELE 12 #define MAX_ADDR 30 #include<stdio.h> #include<string.h> #include<stdlib.h> struct PeoInfo { char name[MAX_NAME]; int age; char sex[MAX_SEX]; char tele[MAX_TELE]; char addr[MAX_ADDR]; }; enum Option { EXIT, ADD, DEL, SEARCH, MODIFY, SHOW, }; //通讯录类型 struct Contanct { struct PeoInfo date[MAX];//存放一个信息 int size;//记录当前已有元素个数 }; //初始化通讯录的函数 void InitContact(struct Contanct* ps); //增加一个信息到通讯录 void AddContact(struct Contanct* ps); //打印通讯录的信息 void ShowContanct(const struct Contanct* ps); //删除指定的联系人 void DelContact(struct Contanct* ps); //查找指定的联系人 void SEARCHContanct(struct Contanct* ps); //修改指定联系人 void MODIFYContanct(struct Contanct* ps);
Contanct.c
#include"contanct.h" //通过名字查找它在数组中对应下标的函数 int Findby_name(struct Contanct *ps,char name[MAX_NAME]) { int i; for (i = 0; i < ps->size; i++) { if (0 == strcmp(ps->date[i].name, name)) return i;//找到了 } return -1;//找不到 } //初始化通讯录的函数 void InitContact(struct Contanct* ps) { memset(ps->date, 0, sizeof(ps->date)); ps->size = 0;//设置通讯录最初只有0个元素 } void AddContact(struct Contanct* ps) { system("cls"); if (ps->size == MAX) { printf("通讯录已满,无法增加"); } else { printf("请输入修改后名字:"); scanf("%s",ps->date[ps->size].name); printf("请输入修改后年龄:"); scanf("%d",&(ps->date[ps->size].age)); printf("请输入修改后性别:"); scanf("%s", ps->date[ps->size].sex); printf("请输入修改后电话:"); scanf("%s", ps->date[ps->size].tele); printf("请输入修改后地址:"); scanf("%s", ps->date[ps->size].addr); ps->size++; system("cls"); printf("添加成功!\n"); } } //打印通讯录的信息 void ShowContanct(const struct Contanct* ps) { system("cls"); if (ps->size == 0) { printf("通讯录为空\n"); } else { printf("%-20s\t%4s\t%-5s\t%-12s\t%-20s\n", "名字", "年龄", "性别", "电话", "地址"); int i = 0; for (i = 0; i < ps->size; i++) { printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n", ps->date[i].name, ps->date[i].age, ps->date[i].sex, ps->date[i].tele, ps->date[i].addr); } } } //删除指定的联系人 void DelContact(struct Contanct* ps) { system("cls"); char name[MAX_NAME]; printf("请输入要删除人的名字:"); scanf("%s", name); int pos = Findby_name(ps, name); if (pos == -1) printf("要删除的人不存在\n"); else { int j = 0; for (j = pos; j < ps->size - 1; j++) { ps->date[j] = ps->date[j + 1]; } ps->size--; printf("删除成功!\n"); } } //查找指定的联系人 void SEARCHContanct(struct Contanct* ps) { system("cls"); char name[MAX_NAME]; printf("请输入查找人的名字:"); scanf("%s", name); int pos =Findby_name(ps, name); if (pos == -1) { printf("要查找的人不存在\n"); } else printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n", ps->date[pos].name, ps->date[pos].age, ps->date[pos].sex, ps->date[pos].tele, ps->date[pos].addr); } //修改指定联系人 void MODIFYContanct(struct Contanct* ps) { system("cls"); char name[MAX_NAME]; printf("请输入要修改联系人的名字\n"); scanf("%s", name); int pos = Findby_name(ps, name); if (pos == -1) { printf("要修改的联系人不存在\n"); } else { printf("请输入名字:"); scanf("%s", ps->date[pos].name); printf("请输入年龄:"); scanf("%d", &(ps->date[pos].age)); printf("请输入性别:"); scanf("%s", ps->date[pos].sex); printf("请输入电话:"); scanf("%s", ps->date[pos].tele); printf("请输入地址:"); scanf("%s", ps->date[pos].addr); ps->size++; printf("修改完成!\n"); } }
实现效果
初始界面:
添加成员:选择1
打印联系人信息:选择5
删除联系人:选择2
再将联系人打印出来:
查找联系人:
修改联系人: