C语言如何实现一个通讯录
作者
这篇文章将为大家详细讲解有关C语言如何实现一个通讯录,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1.添加联系人信息2.删除指定联系人信息3.查找指定联系人信息4.修改指定联系人信息5.显示所有联系人信息6.清空所有联系人7.以名字排序所有联系人
没有开辟动态内存的方法:
头文件:test.h
#ifndef__CONTACT #define__CONTACT #define_CRT_SECURE_NO_WARNINGS1 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<assert.h> #defineN1000 typedefstructcontact { charname[30]; chargender[10]; intage; inttelephone; charaddress[100]; };//结构体没有定义变量属于声明一个结构体类型 voidmeau(); voidshow(structcontact*p,intlen);//structcontact*p:结构体指针指向这个结构体,intlen:结构体数组的长度 voidAdd_linkman(structcontact*p,intlen,intflag); intDelete_linkman(structcontact*p,intd_number,intlen);//intd_number选择要删除第几个结构体的内容 voidFind_member(structcontact*p,intd_number,intlen);//intd_number表示要查找的第几个结构体的内容(即联系人的信息) voidempty(structcontact*p); voidModify(structcontact*p,intM_member);//intM_member:要修改的第几个联系人 intcmp(constvoid*a,constvoid*b);//qsort里面的比较函数定义任意类型 voidsort(structcontact*p,intlen);//根据联系人的名字进行排序 #endif//条件编译
contact.c文件
#include"test.h" voidmeau() { printf("*******************************************\n"); printf("*******************************************\n"); printf("##############Myaddressbook##############\n"); printf("*1-Add2-Delete3-Find*\n"); printf("*4-Empty5-Modify6-Sort*\n"); printf("*0-Exit7-Show*\n"); printf("*******************************************\n"); printf("*******************************************\n"); } voidshow(structcontact*p,intlen) { assert(p); inti=0; for(i=0;i<len;i++) { printf("name:%sgender:%sage:%dtelephone:%daddress:%s",\ p[i].name,p[i].gender,p[i].age,p[i].telephone,p[i].address); printf("\n"); } } voidAdd_linkman(structcontact*p,intlen,intflag) { assert(p); inti=0; for(i=flag;i<len;i++) { printf("请输入姓名:"); scanf("%s",&p[i].name); printf("请输入姓别:"); scanf("%s",&p[i].gender); printf("请输入年龄:"); scanf("%d",&p[i].age); printf("请输入电话:"); scanf("%d",&p[i].telephone); printf("请输入地址:"); scanf("%s",&p[i].address); } } intDelete_linkman(structcontact*p,intd_number,intlen) { assert(p); inti=0; for(i=d_number-1;i<len-1;i++) { p[i]=p[i+1]; } } voidFind_member(structcontact*p,intd_number,intlen) { assert(p); if(d_number-1>=0||d_number-1<len) { printf("name:%sgender:%sage:%dtelephone:%daddress:%s",\ p[d_number].name,p[d_number].gender,p[d_number].age,p[d_number].telephone,p[d_number].address); printf("\n"); } else { printf("不存在该联系人:"); return; } } voidempty(structcontact*p) { assert(p); inti=0; for(i=0;i<1000;i++) { memset(p+i,0,sizeof(structcontact)); } } voidModify(structcontact*p,intM_member) { assert(p); printf("修改之前联系人的信息为:"); printf("\n"); printf("name:%sgender:%sage:%dtelephone:%daddress:%s",\ p[M_member-1].name,p[M_member-1].gender,p[M_member-1].age,p[M_member-1].telephone,p[M_member-1].address); printf("\n"); printf("请输入要修改的信息:"); printf("请输入姓名:"); scanf("%s",&p[M_member-1].name); printf("请输入姓别:"); scanf("%s",&p[M_member-1].gender); printf("请输入年龄:"); scanf("%d",&p[M_member-1].age); printf("请输入电话:"); scanf("%d",&p[M_member-1].telephone); printf("请输入地址:"); scanf("%s",&p[M_member-1].address); } intcmp(constvoid*a,constvoid*b) { structcontact*aa=(structcontact*)a; structcontact*bb=(structcontact*)b; if(aa->name!=bb->name) return(strcmp((aa->name),(bb->name))); } voidsort(structcontact*p,intlen) { assert(p); qsort(p,len,sizeof(structcontact),cmp); }
test.c文件:
#include"test.h" intmain() { intnum=0; structcontactstudent[N]; intlen=0; intflag=0;//定义一个标志位来结构体数组中每个结构体的位置 inttotal=N; intdelete_number=0; meau(); while(1) { printf("请输入数字进行选择:"); scanf("%d",&num); switch(num) { case1:{ printf("请添加len个学生的信息:"); scanf("%d",&len); Add_linkman(student,len+flag,flag); flag=flag+len; }break; case2:{ printf("请输入要删除的第i个学生的信息:"); scanf("%d",&delete_number); Delete_linkman(student,delete_number,len+flag); flag=flag-1; }break; case3:{ intFind_number=0; printf("请输入要查找的第i个学生的信息:"); scanf("%d",&Find_number); Find_member(student,delete_number,len+flag); }break; case4:{ printf("清空所有联系人:"); empty(student); }break; case5:{ printf("请输入要修改的的第i个学生的信息:"); intM_member=0; scanf("%d",&M_member); Modify(student,M_member); }break; case6:{ printf("根据名字排序所有联系人:\n"); sort(student,len+flag); }break; case7:{ printf("打印所有联系人的信息:\n"); show(student,flag); }break; case0:{ exit(1); } default:printf("entererrordata!!!"); } } system("pause"); return0; }
关于“C语言如何实现一个通讯录”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
目录
推荐阅读
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~