0


C语言实现通讯录——版本1

通讯录

  • 🔽

本通讯录用来录入,查找,删除,修改,显示,排序等功能。
暂定这个通讯录的人包括姓名,年龄,性别,电话,住址。
依然是分模块实现

⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
点击获取通讯录源码

声明包含人的各种信息的结构体类型

  • 姓名,性别,年龄,电话,地址

#definename_max15#definesex_max5#definetele_max12#defineaddress_max30typedefstructpeople{char name[name_max];char sex[sex_max];int age;char tele[tele_max];char address[address_max];}people;

声明包含所有人的信息的结构体类型

  • 先预设最大可以储存1000个人,> > count> > 表示通讯录里面现有的人。

#definehuman_max1000typedefstructcontacts{
    people human[human_max];int count;}contacts;

创建选项菜单

voidmenu(){printf("############################################\n");printf("######          1.录入  2.查找     #########\n");printf("######          3.删除  4.修改     #########\n");printf("######          5.排序  6.显示     #########\n");printf("###########         0.退出     #############\n");printf("############################################\n");}

用户进行选择

enumselect{
    quit,
    add,
    find,
    delete,
    change,
    sort,
    print
};voidtest(){int n;
    contacts con;do{menu();printf("请选择你的操作->");scanf("%d",&n);switch(n){case quit:printf("退出程序\n");break;case add://添加break;case find://查找break;case delete://删除break;case change://修改break;case sort://排序break;case print://打印break;default:printf("操作非法,请重新选择\n");break;}}while(n);}

初始化通讯录

voidinit_contacts(contacts* p){
    p->count =0;memset(p->human,0,sizeof(p->human));}

显示通讯录里面的信息

voidprint_contacts(const contacts* p){printf("%-15s%-5s%-5s%-15s%-30s\n","姓名","性别","年龄","电话","地址");int i =0;for(i =0; i < p->count; i++){printf("%-15s%-5s%-5d%-15s%-30s\n", p->human[i].name, p->human[i].sex, p->human[i].age, p->human[i].tele, p->human[i].address);}}

录入人的信息

voidadd_contacts(contacts* p){if(p->count == human_max){printf("通讯录已满");return;}printf("请输入人的姓名->");scanf("%s", p->human[p->count].name);printf("请输入人的性别->");scanf("%s", p->human[p->count].sex);printf("请输入人的年龄->");scanf("%d",&p->human[p->count].age);printf("请输入人的电话->");scanf("%s", p->human[p->count].tele);printf("请输入人的地址->");scanf("%s", p->human[p->count].address);
    p->count++;printf("录入成功\n");}

查找人姓名的函数

找到返回对应的人的下标
找不到返回-1

intfind_people(char* name_x,const contacts* p){int i =0;for(i=0;i<p->count;i++){if(strcmp(name_x, p->human[i].name)==0)return i;}return-1;}

查找人的信息

voidfind_contacts(const contacts* p){char name_x[name_max];printf("请输入人的姓名->");scanf("%s", name_x);int ret=find_people(name_x, p);if(ret ==-1)printf("没有查找到该人\n");else{printf("%-15s%-5s%-5s%-15s%-30s\n","姓名","性别","年龄","电话","地址");printf("%-15s%-5s%-5d%-15s%-30s\n", p->human[ret].name, p->human[ret].sex, p->human[ret].age,
            p->human[ret].tele, p->human[ret].address);}}

删除人的信息

voiddelete_contacts(contacts* p){char name_x[name_max];printf("请输入人的姓名->");scanf("%s", name_x);int ret =find_people(name_x, p);if(ret ==-1)printf("没有查找到该人\n");else{int i;for(i = ret; i < p->count-1; i++){
            p->human[i]= p->human[i +1];}
        p->count--;printf("删除成功\n");}}

修改人的信息

voidchange_contacts(contacts* p){char name_x[name_max];printf("请输入人的姓名->");scanf("%s", name_x);int ret =find_people(name_x, p);if(ret ==-1)printf("没有查找到该人\n");else{printf("请输入人的姓名->");scanf("%s", p->human[ret].name);printf("请输入人的性别->");scanf("%s", p->human[ret].sex);printf("请输入人的年龄->");scanf("%d",&p->human[ret].age);printf("请输入人的电话->");scanf("%s", p->human[ret].tele);printf("请输入人的地址->");scanf("%s", p->human[ret].address);printf("修改成功\n");}}

按名字排序

intcmp_name(constvoid* e1,constvoid* e2){returnstrcmp(((people*)e1)->name,((people*)e2)->name);}voidsort_contacts(contacts* p){qsort(p->human, p->count,sizeof(p->human[0]), cmp_name);printf("排序成功\n");}

本文转载自: https://blog.csdn.net/m0_60598323/article/details/123949971
版权归原作者 编程SHARE 所有, 如有侵权,请联系我们删除。

“C语言实现通讯录&mdash;&mdash;版本1”的评论:

还没有评论