基于C语言实现个人通讯录管理系统

2020-06-28 17:01:29于海丽

之前利用C语言完成了一个关于个人通讯录管理系统的课题,主要是关于联系人的添加、查找、删除、修改、输出以及文件的写入与读出,还有一个甜点功能—模拟通话,它的实现原理也很容易理解,文章末尾会介绍到。

主框架:

1、函数声明

关于这里的函数声明,主要是为了可以清楚的了解整个系统的功能,这里不做过多介绍。还有结构体链表的创建,贯穿了各个功能代码部分,必不可少。

2、联系人的添加

这部分主要涉及联系人的姓名、地址、电话、QQ号和邮箱(当然需要其他功能可自行添加),考虑到数组操作不便前提下,使用链表的尾插法,通过不断开创新的结点,然后不断将新的结点的地址指向尾结点,使尾结点不断后移,而新创的结点时按照添加的先后顺序进行连接(参考下图可快速理解,此图片来源于网络),当然其中某些项的条件限制也是必不可少的。比如:电话、QQ号、邮箱

int Addpeo()  //添加联系人
{
 int t,n,a;
 char flag='y';  //仅作为第一次执行条件 
 ptcs p=head,q; 
 while(flag!='n'&&flag!='N')  //判断是否继续添加 
 {
 q=(ptcs)malloc(sizeof(pcs));  //申请内存
 p->next=q;  //赋予下一个节点 
 p=q;    
 q->next=NULL;  //尾结点地址赋空值 ,尾插法 
 printf("nt请输入:n");
 printf("tt姓名:");  
 scanf("tt%s",q->chat.name);
 printf("tt地址:");
 scanf("tt%s",q->chat.add);
 printf("tt手机号:");
 scanf("tt%s",q->chat.tel);
 do
 {
 n=0;  //仅做记录 
 if(strlen(q->chat.tel)!=11)  //计算手机号的长度 ,判断是否输入规范 
 {  
 n=1;
 printf("tt您输入的手机号格式不存在,请重新输入:");
 scanf("tt%s",q->chat.tel);
 }
 else 
 {
 for(t=0;t<11;t++)
 {
  if(q->chat.tel[t]<'0'||q->chat.tel[t]>'9')
  {
  n=1;
  printf("tt您输入的手机号格式不合理,请重新输入:");
  scanf("tt%s",q->chat.tel);
  break;
  }
 }
 }
 }while(n);
 //输入QQ号 
 printf("ttQQ号:");
 scanf("tt%s",q->chat.tecent);
 do
 {
 n=0;
 if(strlen(q->chat.tecent)>10)  //以10位QQ号为准,判断是否符合规范 
 {  
 n=1;
 printf("tt您输入的QQ号格式不存在,请重新输入:");
 scanf("tt%s",q->chat.tecent);
 }
 else 
 {
 for(t=0;t<10;t++)
 {
  if(q->chat.tecent[t]<'0'||q->chat.tecent[t]>'9')
  {
  n=1;
  printf("tt您输入的QQ号格式不合理,请重新输入:");
  scanf("tt%s",q->chat.tecent);
  break;
  }
 }
 }
 }while(n);
 //输入邮箱
 printf("ttEmail:");  
 scanf("tt%s",q->chat.email);
 do
 {
 //判断邮箱 @符号输入规范(这里不限定邮箱号码位数) 
 a=0;
 for(t=0;q->chat.email[t]!='';t++)
 {
 if(q->chat.email[t]=='@')
  a++;  //@数为1 
 }
 if(a!=1)  
 {
 printf("tt输入的邮箱格式不合理,请重新输入:");
 scanf("tt%s",q->chat.email);
 }
 }while(a!=1); //是否输入@ ,为1则终止循环 
 printf("nt是否继续添加?(Y/N)");  
 scanf("t%c",&flag); 
 }
 return 0;
}