//呼叫或被呼叫
int call()
{
int n;
ptcs p=head->next;
//用时间做种,每次产生随机数不一样,随着系统时间的改变而改变
srand((unsigned) time(NULL));
n=rand()%(cacu(p)+5)+1; //产生一个从1到联系人总数+5之间的一个随机数
return n;
}
int save(int n,char *filename)//保存通话记录
{
FILE* fp;
ptcs p=head->next;
int i=1;
if((fp=fopen(filename,"a+"))==NULL)
{
printf("t通话记录将失去!n");
system("pause");
return 0;
}
if(n<=cacu(p))
{
while(i<n)
{
p=p->next;
i++;
}
//输出对应联系人信息
fprintf(fp,"%-16s%-16s%-16s%-20sn",p->chat.name,p->chat.tel,p->chat.tecent,p->chat.email);
fprintf(fp,"----------------------------------------------------------------------n");
}
else
fprintf(fp,"未知号码n");
fclose(fp); //关闭文件
return 0;
}
附上系统功能运行图:

说明:为什么选择使用链表结构呢?主要是因为在添加联系人之前并不会指定添加的个数,因此它是一个动态添加的过程,链表大小可变,扩展性强,并且针对于联系人的删除操作,使用链表不需要改变内存地址,只需要修改节点指针的指向以及节点的值即可,而数组大小固定,不适合于动态的存储,并且在对数组元素进行操作的过程中,这个元素以后的所有元素的内存地址都要移动,操作起来比较麻烦。
整体源码可参考:C语言实现个人通讯录管理系统
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。










