正规的彩票

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

 更新时间: 2020年06月28日 14:24:21   转载 作者: YUN♛  
这篇文章主要为大家详细介绍了基于C语言实现个人通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

正规的彩票zhiqianliyongcyuyanwanchengleyigeguanyugerentongxunluguanlixitongdeketi,zhuyaoshiguanyulianxirendetianjia、chazhao、shanchu、xiugai、shuchuyijiwenjiandexieruyuduchu,haiyouyigetiandiangongneng—monitonghua,tadeshixianyuanliyehenrongyilijie,wenzhangmoweihuijieshaodao。

主框架:

1、函数声明

正规的彩票guanyuzheilidehanshushengming,zhuyaoshiweilekeyiqingchudelejiezhenggexitongdegongneng,zheilibuzuoguoduojieshao。haiyoujiegoutilianbiaodechuangjian,guanchuanlegegegongnengdaimabufen,bibukeshao。

2、联系人的添加

zheibufenzhuyaoshejilianxirendexingming、dizhi、dianhua、qqhaoheyouxiang(dangranxuyaoqitagongnengkezixingtianjia),kaolvdaoshuzucaozuobubianqiantixia,shiyonglianbiaodeweichafa,tongguobuduankaichuangxindejiedian,ranhoubuduanjiangxindejiediandedizhizhixiangweijiedian,shiweijiedianbuduanhouyi,erxinchuangdejiedianshianzhaotianjiadexianhoushunxujinxinglianjie(cankaoxiatukekuaisulijie,citupianlaiyuanyuwangluo),dangranqizhongmouxiexiangdetiaojianxianzhiyeshibibukeshaode。biru: dianhua、qqhao、youxiang

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("\n\t请输入:\n");
 printf("\t\t姓名:");  
 scanf("\t\t%s",q->chat.name);
 printf("\t\t地址:");
 scanf("\t\t%s",q->chat.add);
 printf("\t\t手机号:");
 scanf("\t\t%s",q->chat.tel);
 do
 {
 n=0;  //仅做记录 
 if(strlen(q->chat.tel)!=11)  //计算手机号的长度 ,判断是否输入规范 
 {  
 n=1;
 printf("\t\t您输入的手机号格式不存在,请重新输入:");
 scanf("\t\t%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("\t\t您输入的手机号格式不合理,请重新输入:");
  scanf("\t\t%s",q->chat.tel);
  break;
  }
 }
 }
 }while(n);
 //输入QQ号 
 printf("\t\tQQ号:");
 scanf("\t\t%s",q->chat.tecent);
 do
 {
 n=0;
 if(strlen(q->chat.tecent)>10)  //以10位QQ号为准,判断是否符合规范 
 {  
 n=1;
 printf("\t\t您输入的QQ号格式不存在,请重新输入:");
 scanf("\t\t%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("\t\t您输入的QQ号格式不合理,请重新输入:");
  scanf("\t\t%s",q->chat.tecent);
  break;
  }
 }
 }
 }while(n);
 //输入邮箱
 printf("\t\tEmail:");  
 scanf("\t\t%s",q->chat.email);
 do
 {
 //判断邮箱 @符号输入规范(这里不限定邮箱号码位数) 
 a=0;
 for(t=0;q->chat.email[t]!='\0';t++)
 {
 if(q->chat.email[t]=='@')
  a++;  //@数为1 
 }
 if(a!=1)  
 {
 printf("\t\t输入的邮箱格式不合理,请重新输入:");
 scanf("\t\t%s",q->chat.email);
 }
 }while(a!=1); //是否输入@ ,为1则终止循环 
 printf("\n\t是否继续添加?(Y/N)");  
 scanf("\t%c",&flag); 
 }
 return 0;
}

3、联系人的查询

zheibushiyongdeshibianlichaxun,gongshezhilesanzhongfangshi,zaidingyilianbiaozhizhendeqiantixia,tongguobianlilianbiaojinxingxinxideduibi,congerpanduanlianxirenshifoucunzai,ruguocunzaijiuzhijiexianshijiyonghu,bucunzaijiuzhijietuihuigongnengxuanxiang。

int Query()
{
 int m,n;  //m记录选项 
 char flag='y';
 ptcs p=head->next;  
 while(flag!='n'&&flag!='N') //是否继续查询 
 {
 printf("\n");
 printf("\t*************查询方式**************\n");
 printf("\t-----------------------------------\n");
 printf("\t   1.按姓名查找   \n");
 printf("\t   2.手机号查找   \n");
 printf("\t   3.按QQ号码查找   \n");
 printf("\t   4.返回     \n");
 printf("\t-----------------------------------\n");
 printf("\n\t请选择查询方式:");
 scanf("\t%d",&m);  
 do
 {
 n=0; 
 if(m!=1&&m!=2&&m!=3&&m!=4)
 { 
 n=1;
 printf("\t您输入的查询方式不存在,请重新输入:");
 scanf("\t%d",&m); 
 }
 }while(n);  //是否输入正确 
 if(!p)  //判断链表是否为空 
 {
 printf("\t该通讯录为空!\n");
 return 0;
 }
 if(m==1)
 {
 char nm[15];  //要查询的联系人
 printf("\t请输入您要查询的联系人姓名:
");
 scanf("\t%s",nm);
 //若链表不为空,且联系人不相符,则继续往后遍历 
 while(p!=NULL&&strcmp(p->chat.name,nm)!=0)
 p=p->next;  //遍历链表
 if(!p)
 {
 printf("\t您要查询的联系人不存在!\n");
 return 0;
 }
 printf("\t地址:
%s\n",p->chat.add);
 printf("\t手机号:
%s\n",p->chat.tel);
 printf("\tQQ号:
%s\n",p->chat.tecent);
 printf("\tEmail:
%s\n",p->chat.email);
 }
 if(m==2)
 {
 char te[20];  //要查询的手机号码
 printf("\t请输入您要查询的手机号:");
 scanf("\t%s",te);
 while(p!=NULL&&strcmp(p->chat.tel,te)!=0)
 p=p->next;
 if(!p)
 {
 printf("\t您要查询的联系人不存在!\n");
 return 0;
 }
 printf("\t姓名:%s\n",p->chat.name);
 printf("\t地址:
%s\n",p->chat.add);
 printf("\tQQ号:%s\n",p->chat.tecent);
 printf("\tEmail:%s\n",p->chat.email);
 }
 if(m==3)
 {
 char qq[15];  //要查询的qq号
 printf("\t请输入您要查询的QQ号:");
 scanf("\t%s",qq);
 while(p!=NULL&&strcmp(p->chat.tecent,qq)!=0)
 p=p->next;
 if(!p)
 {
 printf("\t您要查询的联系人不存在!\n");
 return 0;
 }
 printf("\t姓名:%s\n",p->chat.name);
 printf("\t地址:
%s\n",p->chat.add);
 printf("\t手机号:%s\n",p->chat.tecent);
 printf("\tEmail:%s\n",p->chat.email);
 }
 if(m==4)
 return 0;
 printf("\t是否继续查询?(Y/N)");  //Y则继续执行while循环,否则退出 
 scanf("\t%c",&flag);
 }
 return 0;
}

4、联系人的删除

zheibufentigonganxingmingshanchu,tongguobianlilianbiaochaxundaozhidingjiedian,shiyongzhizhenshigaijiediandeshangyigejiedianzhijiezhixiangxiayigejiedian,yicilaishixianduilianxirendeshanchucaozuo。xiangjietufengshang

int Delete()
{
 char nm[20];  //要删除的联系人姓名
 char flag='y';
 ptcs p=head->next,bh,pre;  //bh,pre均为过度节点指针 
 if(!p)  //判断链表是否为空 
 {
 printf("\t该通讯录为空!\n");
 return 0;
 }
 while(flag!='n'&&flag!='N')
 {
 p=head->next;
 printf("\t请输入您要删除的联系人姓名:");
 scanf("\t%s",nm);
 while(p!=NULL&&strcmp(p->chat.name,nm)!=0)  //比较输入的联系人是否正确 
 {
 pre=p;
 p=p->next; //往后遍历链表,直至找到联系人,并赋给p 
 }
 if(!p)
 {
 printf("\t该联系人不存在!\n");
 return 0;
 }
 bh=p->next;  //将next值赋给bh,指向要删除的联系人的下一个地址 
 if(p==head->next)  
 head->next=bh;
 else 
 pre->next=bh;  //使当前联系人的上一个地址,直接指向联系人的下一个地址 
 printf("\t该联系人已删除!\n");
 printf("\t是否继续删除?(Y/N)");
 scanf("\t%c",&flag);
 }
 return 0;
}

5、联系人信息的修改

guanyulianxirendexiugai,taqishishiduilianbiaodemouyijiedianjinxingxiugai,tongguobianlilianbiaochaxundaozhidingjiedianbingzhijiejinxingxiugai,xiugaiguochengzhongyijiuyanyongbufengeshixiandingtiaojian,ruoshurumouxiangbufuheyaoqiu,zeyizhizhongfushuru,zhidaogaixiangshurufuheyaoqiuweizhi。huabuduoshuo,shangdaima

//修改姓名
int changename(ptcs p)
{
 scanf("\t%s",p->chat.name);
 printf("\t修改成功!\n"); 
 return 0;
 }

//修改地址 
int changeadd(ptcs p)
{
 scanf("\t%s",p->chat.add);
 printf("\t修改成功!\n"); 
 return 0;
 } 
 
//修改手机号内容
int changetel(ptcs p)
{
 int n,t;
 scanf("\t%s",p->chat.tel);
 do
 {
 n=0;
 if(strlen(p->chat.tel)!=11)
 {  
 n=1;
 printf("\t您输入的手机号格式不存在,请重新输入:");
 scanf("\t%s",p->chat.tel);
 }
 else 
 {
 for(t=0;t<11;t++)
 {
 if(p->chat.tel[t]<'0'||p->chat.tel[t]>'9')
 {
  n=1;
  printf("\t您输入的手机号格式不合理,请重新输入:");
  scanf("\t%s",p->chat.tel);
  break;
 }
 }
 }
 }
 while(n);
 printf("\t修改成功!\n"); 
 return 0;
}

//修改QQ号码 
int changeQQ(ptcs p)
{
 int n,t;
 scanf("%s",p->chat.tecent);
 do
 {
 n=0;
 if(strlen(p->chat.tecent)!=10)
 {  
 n=1;
 printf("\t您输入的QQ号格式不存在,请重新输入:");
 scanf("\t%s",p->chat.tecent);
 }
 else 
 {
 for(t=0;t<10;t++)
 {
 if(p->chat.tecent[t]<'0'||p->chat.tecent[t]>'9')
 {
  n=1;
  printf("\t您输入的QQ号格式不合理,请重新输入:");
  scanf("\t%s",p->chat.tecent);
  break;
 }
 }
 }
 }
 while(n);
 printf("\t修改成功!\n"); 
 return 0;
}

//修改电子邮箱 
int changeEmail(ptcs p)
{
 int t,a;
 scanf("\t%s",p->chat.email);
 do
 {
 a=0;
 for(t=0;p->chat.email[t]!='\0';t++)
 {
 if(p->chat.email[t]=='@')
 a++;
 }
 if(a!=1)
 {
 printf("\t输入的邮箱格式不合理,请重新输入:");
 scanf("\t%s",p->chat.email);
 }
 }
 while(a);
 printf("\t修改成功!\n"); 
 return 0;
}

6、联系人的输出

guanyushuchujiushianzhaoshurudeshunxuyicijianglianxirenshuchu

//输出通讯录列表 
int Display()
{
 ptcs p=head->next;  
 if(!p)  //判断链表是否为空 
 {
 printf("\t该通讯录为空!\n");
 return 0;
 }
 printf("\n\t**********************************通讯录列表*************************************\n\n");
 printf("\t姓名\t地址\t\t\t手机号\t\tQQ号\t\tEmail\n");
 printf("\t---------------------------------------------------------------------------------\n");
 while(p)
 {
 printf("\t%-8s%-24s%-16s%-16s%-20s\n",p->chat.name,p->chat.add,p->chat.tel,p->chat.tecent,p->chat.email);
 p=p->next;  //继续往后遍历输出 
 printf("\t---------------------------------------------------------------------------------\n");
 }
 return 0;
}

7、文件的写入与读出

tongguoxinjianyigewenjianbingqiezhidingwenjiandequanxian,jiangshujuxierudaozhidingwenjianzhong,yicishixianduiwenjiandezhengtixierucaozuo。tadeduchucaozuoshitongguofangwenyijianlidewenjian,shiyongfgetshanshuhuoquwenjianzhongdexinxibingbaocunzaizhidingdezifushuzuzhong,zhihouzhugejinxingshuchu。

//将数据写入文件
int fwrite()
{
 ptcs p=head->next;
 FILE* fp;
 char filename[30];
 if(!p)
 {
 printf("\t该通讯录为空!");
 return 0;
 }
 printf("\t请输入所写入的文件名:");
 scanf("\t%s",filename);
 if((fp=fopen(filename,"a+"))==NULL)
 {
 printf("\t无法打开文件!\n");
 system("pause");  //暂停 
 return 0;
 }
 fprintf(fp,"**********************************通讯录列表*************************************\n\n");
 fprintf(fp,"姓名\t地址\t\t\t手机号\t\tQQ号\t\tEmail\n");
 fprintf(fp,"---------------------------------------------------------------------------------\n");
 while(p)
 {
 fprintf(fp,"%-8s%-24s%-16s%-16s%-20s\n",p->chat.name,p->chat.add,p->chat.tel,p->chat.tecent,p->chat.email);
 p=p->next;   
 fprintf(fp,"---------------------------------------------------------------------------------\n");
 }
 fprintf(fp,"\n**********************************共%d个联系人************************************\n",cacu(head->next));
 fclose(fp);   //关闭文件 
 printf("\t写入成功!\n"); 
 return 0;
}

//读取文件 
int fread()
{
 char str[100];
 char filename[30];
 FILE* fp;  //定义文件指针 
 printf("\t请输入要读出的文件名:");
 scanf("\t%s",filename);
 if((fp=fopen(filename,"a+"))==NULL)  
 {
 printf("\t无法打开文件!\n");
 system("pause");
 return 0;
 }
 while((fgets(str,100,fp))!=NULL)  //fgets获取文件中的信息 ,存入str中 
 { 
 printf("\t%s",str);  //输出文件中的信息 
 }
 return 0;
}

8、模拟通话

tongguodiaoyongtimehanshulaihuoqusuijishu(cong1970.1.1suanqi),genjudangqianxitongshijian,liyongxiangguanhanshuchanshengyigesuijishudezhongzi,zailiyongduiyinghanshuchanshengyigesuijishu,suihoupanduanshifouyutongxunluzhonglianxirendexiangshuxiangfu,ruoxiangfu,zezhijiejianggailianxirendexinxixieruzhidingwenjianzhong,ruobuxiangfu,zezaigaiwenjianzhongxieruweizhilianxiren。

//呼叫或被呼叫 
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%-20s\n",p->chat.name,p->chat.tel,p->chat.tecent,p->chat.email);
 fprintf(fp,"----------------------------------------------------------------------\n");
 }
 else 
 fprintf(fp,"未知号码\n");
 fclose(fp); //关闭文件 
 return 0;
}

fushangxitonggongnengyunxingtu:

shuoming: weishenmexuanzeshiyonglianbiaojiegouni?zhuyaoshiyinweizaitianjialianxirenzhiqianbingbuhuizhidingtianjiadegeshu,yincitashiyigedongtaitianjiadeguocheng,lianbiaodaxiaokebian,kuozhanxingqiang,bingqiezhenduiyulianxirendeshanchucaozuo,shiyonglianbiaobuxuyaogaibianneicundizhi,zhixuyaoxiugaijiedianzhizhendezhixiangyijijiediandezhijike,ershuzudaxiaoguding,bushiheyudongtaidecunchu,bingqiezaiduishuzuyuansujinxingcaozuodeguochengzhong,zheigeyuansuyihoudesuoyouyuansudeneicundizhidouyaoyidong,caozuoqilaibijiaomafan。

整体源码可参考: C语言实现个人通讯录管理系统

yishangjiushibenwendequanbuneirong,xiwangduidajiadexuexiyousuobangzhu,yexiwangdajiaduoduozhichijiaobenzhijia。

正规的彩票相关的文章

  • c语言指针之二级指针示例

    c语言指针之二级指针示例

    这篇文章主要介绍了c语言指针中的二级指针示例,需要的朋友可以参考下
    2013-04-04
  • C++类型转换归纳总结

    C++类型转换归纳总结

    这篇文章主要介绍了C++类型转换归纳总结,通过本文可以加深读者对于C++变量类型及其相互转换方法的理解,需要的朋友可以参考下
    2013-07-07
  • c语言获取直播吧最近一周nba比赛信息

    c语言获取直播吧最近一周nba比赛信息

    这篇文章主要介绍了使用c语言获取直播吧最近一周nba比赛信息的方法,需要的朋友可以参考下
    2013-04-04
  • C语言数据结构之循环链表的简单实例

    C语言数据结构之循环链表的简单实例

    这篇文章主要介绍了C语言数据结构之循环链表的简单实例的相关资料,需要的朋友可以参考下
    2016-06-06
  • 深入C++中inline关键字的使用

    深入C++中inline关键字的使用

    本篇文章是对C++中inline关键字的使用进行了详细的分析介绍,需要的朋友参考下
    2012-05-05
  • 深入探讨POJ 2312 Battle City 优先队列+BFS

    深入探讨POJ 2312 Battle City 优先队列+BFS

    本篇文章是对优先队列+BFS进行了详细的分析介绍,需要的朋友参考下
    2012-05-05
  • C++智能指针读书笔记

    C++智能指针读书笔记

    本篇随笔仅作为个人学习《C++ Primer》智能指针一节后的部分小结,抄书严重,伴随个人理解。主要介绍shared_ptr、make_shared、weak_ptr的用法和联系
    2014-11-11
  • C字符串与C++中string的区别详解

    C字符串与C++中string的区别详解

    以下是对C字符串与C++中string的区别进行了详细的分析介绍,需要的朋友可以过来参考下
    2012-09-09
  • C语言实现小学生考试系统

    C语言实现小学生考试系统

    这篇文章主要为大家详细介绍了C语言实现小学生考试系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • tinyxml 常用的C++ XML解析器非常优秀

    tinyxml 常用的C++ XML解析器非常优秀

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好
    2011-11-11

最新评论

正规的彩票_正规彩票平台app下载[首页最快线路√] 彩票官网_彩票官网app|网站首页 彩票平台_彩票平台快三-[平台最快线路√] 彩票app下载_彩票app下载官网下载快三_官方入口 彩票平台_彩票平台app-专注彩票门户 彩票官网_彩票官网app下载网址-HOME 彩票平台_彩票平台登录-老品牌最信誉 彩票app_彩票app客户端下载>> 首页 彩票平台_彩票平台免费送彩金18-点击进入>! 彩票平台_彩票平台官网〖2020购彩首选〗 彩票app_彩票app彩票投注平台-Welcome