基于C的电子通讯录管理系统

实验目的与要求:

1.进一步熟悉C语言的数据类型、运算符、表达式、程序控制结构。
2.掌握C语言的数组和动态链表的熟练使用。
3.掌握C语言的指针的使用。4.掌握C语言的结构体的使用。
5.掌握C语言文件操作命令的使用。
6.以上知识的综合练习完成电子通讯录管理系统代码的编写。

程序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100struct record
{//保存姓名
char name[20];
//保存电子邮件
char email[30];
//保存家庭住址
char homeaddr[60];
//保存手机号
char telephone[13];
}records[N];    //结构体数组
int i;
void Read_Data() /*读文件*/
{//说明fp是指针,用来指向FILE类型的对象
FILE*fp;
fp=fopen("D:\\yinzhihui.txt","a+");
/*fopen函数是打开一个文件,文件指针名=fopen(文件名,使用文件方式)*/   i=0;   while(!feof(fp))//feof:文件结束,返回非0值,文件未结束,返回0值 {    fscanf(fp,"%s%s%s%s",records[i].name,records[i].email,records[i].homead dr,records[i].telephone);     i++;} fclose(fp);//如果流成功关闭,fclose 返回 0,否则返回EOF(-1)
}
//添加联系人
void Add_People(char name[20])
{   int j,n;    for(j=0;j<=i;j++)    //将添加的联系人以名字排序{         if(strcmp(records[j].name,name)>0)break;//strcmp:两个字符串自左向右逐个字符相比(按ASCII值),直到出现不同的字符或遇'\0'为止   }   for(n=i;n>=j;n--)  //将第i个信息变成第i+1个    {           strcpy(records[n+1].name,records[n].name);/*trcpy把后一个字符串复制前面的数组*/      strcpy(records[n+1].email,records[n].email);                       strcpy(records[n+1].homeaddr,records[n].homeaddr);             strcpy(records[n+1].telephone,records[n].telephone);   }       i++;      strcpy(records[j].name,name);  //将联系人姓名存到结构体printf("\n请输入联系人的电子邮件:");     scanf("%s",records[j].email);     printf("\n请输入联系人的家庭地址:");    scanf("%s",records[j].homeaddr);       printf("\n请输入联系人的电话:");       scanf("%s",records[j].telephone);     printf("\n添加成功!\n");
}
int Search_Name(char namestr[20])   //查询
{   int j;  for(j=0;j<=i;j++)    {if(strcmp(namestr,records[j].name )==0)break;}       //比较不同,相同输出  return j;
}
void DeletePeo()            //删除
{   char nametemp[20];  int tp,n;   if(i<1)  {printf("\n没有删除的记录\n");return;}   printf("请输入您要查找的联系人姓名:");  scanf("%s",nametemp); n=Search_Name(nametemp);   if(n>i)  {printf("查找失败!\n");return;}    printf("确认要删除吗?确认按1,否则按任意键返回上一级菜单!\n");  scanf("%d",&tp);  if(tp==1) //确定输入1,删除   {       int j;  for(j=n+1;j<=i;j++){        strcpy(records[j-1].name,records[j].name);                      strcpy(records[j-1].email,records[j].email);                    strcpy(records[j-1].homeaddr,records[j].homeaddr);  strcpy(records[j-1].telephone,records[j].telephone);    }   i--;    }   else return;
}
void Data_Show(int n)       //显示
{printf("%s %s %s %s\n",records[n].name,records[n].email,records[n].homeaddr,records[n].telephone);
}void Change(char name[20]) //修改{   int n,m;    char string[60];    n=Search_Name(name);//判断修改的联系人是否存在 if(n>i)  {printf("您查找的联系人不存在!\n");return;}  Data_Show(n);   //显示联系人的信息  printf("请选择你要修改的资料:\n1修改联系人姓名;\n2修改联系人电子邮箱;\n3修改联系人地址;\n4修改联系人电话;\n5退出!;\n\n"); scanf("%d",&m);   while(m!=5)    {   switch(m)       {       case 1:printf("请输入新的姓名:");scanf("%s",string);            strcpy(records[n].name ,string);break;  case 2:printf("请输入新的电子邮件:");   scanf("%s",string);                                           strcpy(records[n].email ,string);break; case 3:printf("请输入新的地址:");scanf("%s",string);    strcpy(records[n].homeaddr  ,string);break; case 4:printf("请输入新的电话:");scanf("%s",string);        strcpy(records[n].telephone  ,string);break;    case 5:return;      }       printf("请继续选择你要修改的资料:\n1修改联系人姓名;\n2修改联系人电子邮箱;\n3修改联系人地址;\n4修改联系人电话;\n5退出!;\n\n");   scanf("%d",&m);   }
}
void Data_Save()//保存
{   FILE*fp;int n;fp=fopen("D:\\yinzhihui.txt","w+");       //将信息保存到文件yinzhihui.txt中for(n=0;n<=i;n++){ fprintf(fp,"%s %s %s %s",records[n].name,records[n].email,records[n].homeaddr,records[n].telephone);fprintf(fp,"\n");}fclose(fp);
}   void main()
{int ch,m,n;    char tp,nametemp[20];   Read_Data();   //把文件数据导入文件yinzhihui.txt中    i--;    printf("电子通讯录:\n");    printf("请选择您需要的操作:\n");    printf("1修改;\n2查看所有联系人;\n3删除联系人;\n4查询联系人;\n5添加联系人;\n6保存;\n7退出\n\n");  scanf("%d",&ch);  while(ch!=7)   {       switch(ch)      {       case 1:printf("请输入要修改的联系人姓名:");        scanf("%s",nametemp);         Change(nametemp);break;     case 2:for(m=0;m<=i;m++)Data_Show(m);break;      case 3:DeletePeo();break;       case 4:printf("请输入您要查询的人的姓名:");        scanf("%s",nametemp);         n=Search_Name(nametemp);           if(n>i) printf("没有您要找的联系人姓名:"); else Data_Show(n);break;        case 5:printf("请输入待添加的联系人的姓名:");   scanf("%s",nametemp);         Add_People(nametemp);break;     case 6:printf("保存数据吗?确定按8键,否则按任意键选择其他操作!\n");            scanf("%d",&tp);          if(tp==8) Data_Save();break;      case 7:return;      }       printf("\n1修改;\n 2查看所有联系人;\n 3删除联系人;\n 4查询联系人;\n 5添加联系人;\n6保存;\n 7退出\n\n");       scanf("%d",&ch);  }
}

结果

基于C的电子通讯录管理系统相关推荐

  1. python通讯录管理系统姓名年龄号码_基于互联网的移动通讯录管理系统的制作方法...

    本发明涉及一种移动通讯录管理系统,特别涉及一种基于互联网的移 动通讯录管理系统. 背景技术: 目前,移动用户的通讯录一般都是存放在手机等移动终端设备上,最多是 从手机导出到计算机,没有在服务器上备份. ...

  2. [内附完整源码和文档] 基于Java的个人通讯录管理系统

    摘 要 随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须常与亲戚朋友,同学同事保持联系,但有时候存在许多限制条件,因此我们需要为了快速查找联系人的信息,节省查找时间,开发通讯录管理 ...

  3. 基于SpringBoot的电子招标投标管理系统

    末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:HTML.Vue 数据库:MySQL5.7 数据库管理工具:Navicat 12 服务器:Tom ...

  4. python手机通讯录管理系统代码_[内附完整源码和文档] 基于Java的个人通讯录管理系统...

    摘 要 随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须常与亲戚朋友,同学同事保持联系,但有时候存在许多限制条件,因此我们需要为了快速查找联系人的信息,节省查找时间,开发通讯录管理 ...

  5. 基于Linux中的通讯录管理系统(C语言+双向循环链表+MySQL)

    文章目录 系统功能实现 相关软件前提 部分重要的功能代码 Makefile menu.c MySQL API函数使用 C语言连接MySQL: 调用SQL命令 双向循环列表功能 效果实现 这个通讯录管理 ...

  6. 基于JAVA的电子通讯录+源码+毕业设计+课程设计

    源码地址:JAVA+SQL+电子通讯录+源码+毕业设计 随着信息时代的到来,人们越来越注重通讯方式的快捷性和高效性.在这样的背景下,电子通讯录应运而生,成为人们生活中不可或缺的工具.在这篇文章中,我们 ...

  7. 基于java的电子健康档案管理系统

    通过电子健康档案管理系统这个平台,可以实现人员健康情况的信息化.网络化.系统化.规范化管理,从繁杂的数据查询和统计中解脱出来,更好的掌握人员健康状况.系统的主要功能包括:人员档案管理.体检管理与疾病信 ...

  8. 基于java的电子病历管理系统ssh框架

    本电子病例管理系统的用户分为管理员.医生两种角色,每种角色分别有不同的功能模块.管理员可以管理科室.科室项目及医生等基本信息:医生可以管理病人病例及诊疗记录信息. 系统采用Myeclipse为开发平台 ...

  9. 基于JavaWeb的电子政务管理系统(源码+论文)

    当前阶段,伴随着社会信息技术的快速发展,使得电子政务能够成为我国政府职能部门进行办公管理的一个重要内容,其中就包括了提升办公效率完善服务质量以及实现信息共享等.但是,虽然当前我国政府的信息化事业已经取 ...

  10. 【240行拿下】基于C语言 实现通讯录管理系统 带文件保存及读取功能

    一 首言         学校布置的小作业希望对你有帮助,完整代码在文章结尾为方便阅读代码基本都有注释.代码是在满足老师要求下,尽量减少功能和代码方便同学理解的思想上完成的 (完成7个功能,功能性代码 ...

最新文章

  1. Qt opencv 程序异常结束,crashed
  2. 【Qt】QSharedMemory类详解
  3. 宝塔php gd库,宝塔面板安装 EasyImag – 一款最简单图床的安装体验
  4. python3-matplotlib基本使用(以折线图为例)
  5. 8年架构师针对web前端小白,作出的职业规划建议
  6. mysql中索引创建 查看和删除语句_MySQL索引的创建、删除和查看(学习中)
  7. Bailian4138 POJ NOI MATH-7827 质数的和与积【数论】
  8. [NOIP2013D2]
  9. diy手工制作泡沫小球_一撮羊毛用针来回的戳,DIY手工制作羊毛毡小动物,越戳越带劲...
  10. jq 获取父元素html,jq获取父级元素_使用jquery获取父元素或父节点的方法
  11. asp.net页面加载时间计算
  12. 诺基亚称霸时代终结 Ovi商店面临命运抉择
  13. 安川机器人外部信号怎么接线_安川机器人通用输入输出信号定义.pdf
  14. 【Mac】微信视频对方听不见你的声音
  15. 华为MA5626-8密码恢复
  16. 7-3 特立独行的幸福
  17. 计算机图形学Bezier曲线试题,《计算机图形学》试题-C卷及参考答案
  18. json和jsonp区别与讲解
  19. Jquery 中 ajaxSubmit使用讲解
  20. 一次性注册所有DLL!

热门文章

  1. 都市调频广播 2009年节目广告运行表
  2. 资源管理器关闭了怎么打开
  3. HYSBZ - 5145 未来日记
  4. 查看计算机内存条型号,怎么查内存条型号 这几步你要了解
  5. Juicer: 辅助基因组组装
  6. AndroidX使用
  7. noob学python #1
  8. Linux 简介 ------ 带你简单了解Linux
  9. 可靠性工程师是做什么的?需要哪些能力?
  10. CodeForces比赛规则