(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)
今天我们试着用c语言实现简单通讯录的制作,功能大致如下:
//1.存放好友信息
//2.增加好友信息
//3.删除好友信息
//4.查找好友信息
//5.修改好友信息
了解相应功能后我们试着构建一个菜单:
void menu()//菜单 { printf("*************************************\n"); printf("******1.add 2.del *******\n"); printf("******3.search 4.modify ****\n"); printf("******5.show 0.exit **\n"); printf("*************************************\n"); }
接下来就是创建通讯录了,先定义用户相关信息,并枚举相关变量
enum MY { MAX = 100,MAX_NAME=20,MAX_SEX=5,MAX_TELE=12,MAX_ADDR=30 }; struct people { char name[MAX_NAME]; int age; char sex[MAX_SEX]; char tele[MAX_TELE]; char addr[MAX_ADDR]; };
接着定义通讯录的类型
struct Contact { struct people data[MAX]; //存放用户信息 int size; //记录当前已经有的用户数量 };
然后初始化通讯录,默认所有信息为0
void InitContact(struct Contact* ps) { memset(ps->data, 0, sizeof(ps->data)); ps->size = 0; }
通讯录初始化后,就要开始完善它的功能的
//增加好友信息 void addContact(struct Contact* ps) { if (ps->size == MAX) { printf("通讯录已满\n"); } else { printf("请输入名字:"); scanf("%s", ps->data[ps->size].name); printf("请输入年龄:"); scanf("%d", &(ps->data[ps->size].age)); printf("请输入性别:"); scanf("%s", ps->data[ps->size].sex); printf("请输入电话:"); scanf("%s", ps->data[ps->size].tele); printf("请输入地址:"); scanf("%s", ps->data[ps->size].addr); ps->size++; printf("添加成功\n"); } } //显示好友信息 void ShowContact(struct Contact* ps) { if (ps->size == 0) { printf("通讯录为空\n"); } else { printf("%20s\t %4s\t %5s\t %12s\t %20s\n","名字","年龄","性别","电话","地址"); for (int i = 0; i < ps->size; i++) { printf("%20s\t %4d\t %5s\t %12s\t %20s\n", ps->data[i].name, ps->data[i].age, ps->data[i].sex, ps->data[i].tele, ps->data[i].addr ); } } } //删除好友信息 void DelContact(struct Contact* ps) { char name[MAX_NAME]; printf("请输入要删除人的名字:"); scanf("%s", name); int i = 0; //1.查找要删除的人在什么位置 for (int i = 0; i < ps->size; i++) { if (strcmp(ps->data[i].name, name) == 0) { break; } } //2.删除 if (i == ps->size) { printf("要删除的人不存在\n"); } else { int j = 0; for (j = i; j < ps->size-1; j++) { ps->data[j] = ps->data[j + 1]; } ps->size--; printf("删除成功\n"); } } //查找指定的人 void SearchContact(struct Contact* ps) { char name[MAX_NAME]; printf("请输入查找人的名字"); scanf("%s", name); int i = 0; //1.查找的人在什么位置 for (int i = 0; i < ps->size; i++) { if (strcmp(ps->data[i].name, name) == 0) { break; } } if (i == ps->size) { printf("查找的人不存在\n"); } else { printf("%20s\t %4s\t %5s\t %12s\t %20s\n", "名字", "年龄", "性别", "电话", "地址"); printf("%20s\t %4d\t %5s\t %12s\t %20s\n", ps->data[i].name, ps->data[i].age, ps->data[i].sex, ps->data[i].tele, ps->data[i].addr); } }; //修改好友信息 void ModifyContact(struct Contact* ps) { char name[MAX_NAME]; printf("请输入修改人的名字"); scanf("%s", name); int i = 0; //1.修改的人在什么位置 for (int i = 0; i < ps->size; i++) { if (strcmp(ps->data[i].name, name) == 0) { break; } } if (i == ps->size) { printf("修改的人不存在\n"); } else { printf("请输入名字:"); scanf("%s", ps->data[i].name); printf("请输入年龄:"); scanf("%d", &(ps->data[i].age)); printf("请输入性别:"); scanf("%s", ps->data[i].sex); printf("请输入电话:"); scanf("%s", ps->data[i].tele); printf("请输入地址:"); scanf("%s", ps->data[i].addr); printf("修改成功\n"); } }
最后就是将其全部存入主函数中
int main() { int input = 0; struct Contact con;//con就是通讯录 InitContact(&con); do { menu(); printf("请选择:"); scanf("%d", &input); switch (input) { case 1: addContact(&con); break; case 2: DelContact(&con); break; case 3: SearchContact(&con); break; case 4: ModifyContact(&con); break; case 5: ShowContact(&con); break; case 0: printf("退出通讯录\n"); break; default: printf("选择错误\n"); break; } } while (input); return 0; }
总体代码就是这样,如果大家发现bug或者有更好的方法 ,欢迎大家一起来讨论呀,一起加油
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> #include<stdlib.h> //1.存放好友信息 //2.增加好友信息 //3.删除好友信息 //4.查找好友信息 //5.修改好友信息 enum MY { MAX = 100,MAX_NAME=20,MAX_SEX=5,MAX_TELE=12,MAX_ADDR=30 }; void menu()//菜单 { printf("*************************************\n"); printf("******1.add 2.del *******\n"); printf("******3.search 4.modify ****\n"); printf("******5.show 0.exit **\n"); printf("*************************************\n"); } //创建通讯录 struct people { char name[MAX_NAME]; int age; char sex[MAX_SEX]; char tele[MAX_TELE]; char addr[MAX_ADDR]; }; //通讯录类型 struct Contact { struct people data[MAX];//存放用户信息 int size;//记录当前已经有的用户数量 }; //初始化通讯录 void InitContact(struct Contact* ps) { memset(ps->data, 0, sizeof(ps->data)); ps->size = 0; } //增加好友信息 void addContact(struct Contact* ps) { if (ps->size == MAX) { printf("通讯录已满\n"); } else { printf("请输入名字:"); scanf("%s", ps->data[ps->size].name); printf("请输入年龄:"); scanf("%d", &(ps->data[ps->size].age)); printf("请输入性别:"); scanf("%s", ps->data[ps->size].sex); printf("请输入电话:"); scanf("%s", ps->data[ps->size].tele); printf("请输入地址:"); scanf("%s", ps->data[ps->size].addr); ps->size++; printf("添加成功\n"); } } //显示好友信息 void ShowContact(struct Contact* ps) { if (ps->size == 0) { printf("通讯录为空\n"); } else { printf("%20s\t %4s\t %5s\t %12s\t %20s\n","名字","年龄","性别","电话","地址"); for (int i = 0; i < ps->size; i++) { printf("%20s\t %4d\t %5s\t %12s\t %20s\n", ps->data[i].name, ps->data[i].age, ps->data[i].sex, ps->data[i].tele, ps->data[i].addr ); } } } //删除好友信息 void DelContact(struct Contact* ps) { char name[MAX_NAME]; printf("请输入要删除人的名字:"); scanf("%s", name); int i = 0; //1.查找要删除的人在什么位置 for (int i = 0; i < ps->size; i++) { if (strcmp(ps->data[i].name, name) == 0) { break; } } //2.删除 if (i == ps->size) { printf("要删除的人不存在\n"); } else { int j = 0; for (j = i; j < ps->size-1; j++) { ps->data[j] = ps->data[j + 1]; } ps->size--; printf("删除成功\n"); } } //查找指定的人 void SearchContact(struct Contact* ps) { char name[MAX_NAME]; printf("请输入查找人的名字"); scanf("%s", name); int i = 0; //1.查找的人在什么位置 for (int i = 0; i < ps->size; i++) { if (strcmp(ps->data[i].name, name) == 0) { break; } } if (i == ps->size) { printf("查找的人不存在\n"); } else { printf("%20s\t %4s\t %5s\t %12s\t %20s\n", "名字", "年龄", "性别", "电话", "地址"); printf("%20s\t %4d\t %5s\t %12s\t %20s\n", ps->data[i].name, ps->data[i].age, ps->data[i].sex, ps->data[i].tele, ps->data[i].addr); } }; //修改好友信息 void ModifyContact(struct Contact* ps) { char name[MAX_NAME]; printf("请输入修改人的名字"); scanf("%s", name); int i = 0; //1.修改的人在什么位置 for (int i = 0; i < ps->size; i++) { if (strcmp(ps->data[i].name, name) == 0) { break; } } if (i == ps->size) { printf("修改的人不存在\n"); } else { printf("请输入名字:"); scanf("%s", ps->data[i].name); printf("请输入年龄:"); scanf("%d", &(ps->data[i].age)); printf("请输入性别:"); scanf("%s", ps->data[i].sex); printf("请输入电话:"); scanf("%s", ps->data[i].tele); printf("请输入地址:"); scanf("%s", ps->data[i].addr); printf("修改成功\n"); } } int main() { int input = 0; struct Contact con;//con就是通讯录 InitContact(&con); do { menu(); printf("请选择:"); scanf("%d", &input); switch (input) { case 1: addContact(&con); break; case 2: DelContact(&con); break; case 3: SearchContact(&con); break; case 4: ModifyContact(&con); break; case 5: ShowContact(&con); break; case 0: printf("退出通讯录\n"); break; default: printf("选择错误\n"); break; } } while (input); return 0; }