怎么在C语言中利用结构体实现一个通讯录?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联是一家专注于网站设计、做网站与策划设计,天山网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:天山等地区。天山做网站价格咨询:18982081108提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
代码实现:
头文件:
#ifndef __HEAD_H__ ////防止头文件被多次调用 #define __HEAD_H__ #include<stdio.h> #include<string.h> #include<stdlib.h> #define PEOPLE_MAX 1000 #define NAME_LENTH 20 #define SEX_LENTH 5 #define AGE_LENTH 10 #define TEL_LENTH 15 #define ADDR_LENTH 50 //宏定义各个数据所需的大小,后续引用直接可以使用名称,或需修改时只用修改这里就可以了 struct People { char name[NAME_LENTH]; char sex[SEX_LENTH]; int age; char tel[TEL_LENTH ]; char addr[ADDR_LENTH]; }; //定义人的信息结构体(包含各种信息) struct Contact { struct People person[PEOPLE_MAX]; int user_count; }; //定义通讯录结构体(包含人的信息的结构体和用户个数) typedef struct Contact * pContact; int add_contact(pContact pcon); //pContact是一个结构体指针类型,pcon是一个指向struct Contact的一个指针 int dele_contact(pContact pcon); //例如:typedef int * int 即 int *p ==> int p int find_contact(pContact pcon); int modify_contact(pContact pcon); int show_contact(pContact pcon); int clear_contact(pContact pcon); void menu(); //函数的声明 #endif
各种函数实现:
#include"head.h" int add_contact(pContact pcon) { if(pcon->user_count >= PEOPLE_MAX) { printf("contact is full!\n"); return -1; } else { printf("input name,please!\n"); scanf("%s",pcon->person[pcon->user_count].name); printf("input sex,please!\n"); scanf("%s",pcon->person[pcon->user_count].sex); printf("input age,please!\n"); scanf("%d",&pcon->person[pcon->user_count].age); //这里用%d输出int printf("input tel,please!\n"); scanf("%s",pcon->person[pcon->user_count].tel); printf("input addr,please!\n"); scanf("%s",pcon->person[pcon->user_count].addr); (pcon->user_count)++; } return 0; } //添加信息的实现 int dele_contact(pContact pcon) { int ret = find_contact(pcon); //调用查找函数并保存其值 if(ret != -1) { int i = 0; i = ret; //这里要用另一个变量来保存输入的姓名 for(i = 0;i < pcon->user_count-1;i++) { pcon->person[i] = pcon->person[i+1]; //用后一个覆盖前边的,如果要删除的是最后一个不进行此步骤 } pcon->user_count --; //直接减去最后一个即count-- } return 0; } int find_contact(pContact pcon) { int i = 0; char ret[NAME_LENTH]; //用另一个数组来保存name printf("input name,please!\n"); scanf("%s",ret); while(i <= pcon->user_count) { if(strcmp(ret,pcon->person[i].name)== 0) //比较输入的姓名和通讯录中已有的姓名 { printf("name\tsex\tage\ttel\taddr\t\n"); printf("%s\t",pcon->person[i].name); printf("%s\t",pcon->person[i].sex); printf("%d\t",pcon->person[i].age); printf("%s\t",pcon->person[i].tel); printf("%s\t\n",pcon->person[i].addr); return i; } i++; } printf("sorry,the name you find is not exist!\n"); return -1; } int modify_contact(pContact pcon) //修改函数,首先找到如要修改的姓名,然后重新输入 { int ret = find_contact(pcon); if(ret != -1) { printf("input name,please!\n"); scanf("%s",pcon->person[ret].name); printf("input sex,please!\n"); scanf("%s",pcon->person[ret].sex); printf("input age,please!\n"); scanf("%d",&(pcon->person[ret].age)); printf("input tel,please!\n"); scanf("%s",pcon->person[ret].tel); printf("input addr,please!\n"); scanf("%s",pcon->person[ret].addr); } else { printf("sorry,the name you find is not exist!\n"); } return 0; } int show_contact(pContact pcon) { int i = 0; printf("name\tsex\tage\ttel\t\taddr\t\n"); //制表符来制作表头 for(i = 0;i < pcon->user_count;i++) { printf("%s\t",pcon->person[i].name); printf("%s\t",pcon->person[i].sex); printf("%d\t",pcon->person[i].age); printf("%s\t",pcon->person[i].tel); printf("%s\t\n",pcon->person[i].addr); } printf("\n"); return 0; } int clear_contact(pContact pcon) { pcon->user_count = 0 ; return 0; } //清除所有人,直接让成员个数变为0即可 void menu() { printf("-------contact---------\n"); printf(" 1.添加联系人信息 \n"); printf(" 2.删除指定联系人信息 \n"); printf(" 3.查找指定联系人信息 \n"); printf(" 4.修改指定联系人信息 \n"); printf(" 5.显示所有联系人信息 \n"); printf(" 6.清空所有联系人 \n"); printf(" 0.谢谢使用 \n"); printf("-------contact---------\n"); }
主函数:
#include"head.h" int main() { int n=1; struct Contact people; //调用通讯录结构体 people.user_count = 0; //初始化user_count while(n) { menu(); printf("please input\n"); scanf("%d",&n); switch(n) { case 1: { add_contact(&people); break; } case 2: { dele_contact(&people); break; } case 3: { find_contact(&people); break; } case 4: { modify_contact(&people); break; } case 5: { show_contact(&people); break; } case 6: { clear_contact(&people); break; } default: { return 0; break; } //switch case语句分支选择不同函数实现不同作用 } } return 0; }
结果实现:
关于怎么在C语言中利用结构体实现一个通讯录问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联网站建设公司行业资讯频道了解更多相关知识。
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:怎么在C语言中利用结构体实现一个通讯录-创新互联
链接地址:https://www.cdcxhl.com/article8/jgcop.html
成都网站建设公司_创新互联,为您提供App开发、用户体验、面包屑导航、服务器托管、微信小程序、手机网站建设
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联