0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通讯录管理系统源码,C语言链表实现

C语言编程学习基地 来源:C语言编程学习基地 作者:C语言编程学习基地 2022-10-28 16:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

hello,各位小伙伴们大家好!你们今天有敲代码嘛?

如果有熟悉的小伙伴看到我,就知道又可以来学习源码项目了!没错,咱们今天要分享的同样也是经典管理系统项目之一:通讯录管理系统!我们一起来看看吧!

知识点:C语言,链表

开发工具:VS2022/2019(没有VS的话也可以来文末领取哦)

b99624a0-5696-11ed-a3b6-dac502259ad0.png

完成一个通讯录管理系统,具体要求如下:

1. 建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等

2. 能够提供添加、删除和修改通讯录信息的功能

3. 能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询

4. 将通讯录保存在文件中

5. 能够按表格方式输出通讯录信息

6. 退出程序


也不说太多多余的话了,先看一下效果图:

b9b91186-5696-11ed-a3b6-dac502259ad0.png

为了照顾那些想要快速完成项目设计的同学,咱们就不进行源码的解析了,直接上全部源码吧!

源码分享:

#include 
typedef struct  //定义每个人员信息结构体 
{
  char num[5]; //编号 
  char name[9];//姓名 
  char sex[3]; //性别 
  char phone[13]; //电话 
  char addr[31]; //地址 
 }DataType;
 typedef struct node  //定义链表类型 
 {
   DataType data; //数据域 
   struct node *next; //指针域 
  }ListNode;
typedef ListNode *LinkList;
void CreateList(LinkList &L,int m)//通讯录链表的建立 
{ int i;
  LinkList s,r;
  L=(LinkList)malloc(sizeof(ListNode));
  L->next=NULL;
  r=L; //尾节点 


  for(i=0;i
  {  s=(LinkList)malloc(sizeof(ListNode)); //新建的节点 
     printf("输入第%d位编号:",i+1);
     scanf("%s",&s->data.num);
     printf("
输入姓名:");
     scanf("%s",&s->data.name);
     printf("
输入性别:");
     scanf("%s",&s->data.sex);
     printf("
输入电话:");
     scanf("%s",&s->data.phone);
     printf("
输入地址:");
     scanf("%s",&s->data.addr);
     s->next=NULL;  
   r->next=s; //插入尾节点之后 
   r=s;
   
  }  


}
int ListLength(LinkList L) //求通讯录链表的长度 
{ LinkList p;
  int length=0;
  p=L->next;
  while(p)
  { length++;
    p=p->next;
  }
  return length;  
 } 
int ListInsert(LinkList &L,int i,DataType d)  //通讯录链表的插入 
{ LinkList p,s;
  int length;
  length=ListLength(L); 
  p=L->next;
  int j=1;
  if(!p||i>length+1) //如果是空表或者查询位置不符合要求 
  return 0;
  while(p&&j-1)  //使p指向要添加位置的前一个元素 
  {
    p=p->next;
    j++;
  }
  s=(LinkList)malloc(sizeof(LinkList));
  s->data=d;
  s->next=p->next;
  p->next=s;
  return 1; 
}
int ListDelete(LinkList &L,int i)
{ LinkList p,q;//p为要删除的前一个节点,q为要删除的节点 
  p=L;
  int j=0;
  int length;
  length=ListLength(L); 
  if(!p||i>length) //如果是空表或者查询位置不符合要求 
  return 0;
  while(p&&j-1) //使p指向要删除位置的前一个元素 
  { p=p->next;
    j++;
  }
  q=p->next; //q指向后一个元素  
  printf("
被删除的人员信息为:
");
  printf("
编号:%s  姓名:%s  性别:%s  电话:%s 地址:%s",q->data.num,q->data.name,q->data.sex,q->data.phone,q->data.addr);
  p->next=q->next; 
  return 1;   
 } 
int GetElem(LinkList L,int i,DataType &d) //查询第i个成员信息 
{ LinkList p;
  p=L->next;
  int j=1;
  int length;
  length=ListLength(L); 
  if(!p||i>length) //如果是空表或者查询位置不符合要求 
  return 0;
  while(j
  {p=p->next;
   j++;
  }
  d=p->data;
  return 1;
  
}


void print(LinkList L) //打印通讯录人员信息 
{ LinkList p;
  p=L->next;
  while(p)
  {
    printf("
编号:%s  姓名:%s  性别:%s  电话:%s 地址:%s",p->data.num,p->data.name,p->data.sex,p->data.phone,p->data.addr);
    p=p->next;
  }
  
 } 
 void menu()
{ printf("--------------------------------------------1.通讯录链表的建立----------------------------------------------------------");
   printf("
--------------------------------------------2.通讯者节点的插入----------------------------------------------------------");
   printf("
--------------------------------------------3.通讯者节点的查询----------------------------------------------------------");
   printf("
--------------------------------------------4.通讯者节点的删除----------------------------------------------------------");
   printf("
--------------------------------------------5.通讯录链表的输出----------------------------------------------------------");
   printf("
--------------------------------------------0.退出管理系统--------------------------------------------------------------");
 }
 int main()
{
   LinkList L;
   DataType d,d1;
   int m,location,length,choose;
   menu();
   p:
   printf("
请输入你的选项:");
   scanf("%d",&choose);
   switch(choose)
   { case 1:printf("请输入通讯录人数:");scanf("%d",&m);CreateList(L,m);goto p;
     case 2:printf("
输入要插入的位置:");scanf("%d",&location);printf("输入插入人员的编号:"); scanf("%s",&d.num);printf("
输入姓名:"); scanf("%s",&d.name); printf("
输入性别:");scanf("%s",&d.sex);printf("
输入电话:");scanf("%s",&d.phone);printf("
输入地址:");scanf("%s",&d.addr);ListInsert(L,location,d);goto p;
    case 3:printf("
请输入查询位置");scanf("%d",&location);GetElem(L,location,d); printf("查询到的人员信息为:
");printf("
编号:%s  姓名:%s  性别:%s  电话:%s 地址:%s",d.num,d.name,d.sex,d.phone,d.addr);goto p;
    case 4:printf("
输入要删除的位置:");scanf("%d",&location);ListDelete(L,location);goto p; 
    case 5:print(L);goto p;
    case 0:printf("系统已退出。");exit(0);
    default:printf("输入错误,请重新输入");goto p;
   }
   return 0;
 }

通讯录管理系统就到此结束啦,大家赶紧试试吧!


审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144599
  • 管理系统
    +关注

    关注

    1

    文章

    2887

    浏览量

    38322

原文标题:C/C++项目开发:通讯录管理系统源码,C语言链表实现

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C语言的编程技巧

    和效率‌:通过位段、内联汇编和尾递归优化等技巧,可以有效提高代码的执行效率。 ‌10、内存管理系统级编程‌:通过内存池技术、复合字面量初始化结构体以及信号处理等功能,实现高效的内存管理
    发表于 11-27 06:46

    C语言程序的结构

    1系统的改进   可以说,这个用ASM51实现的代码是没有什么组织性可言的,要什么功能就加入什么功能,弄得程序的结构非常松散,其实这也是导致笔者最终决定重新改写这些代码的原因。   大家知道
    发表于 11-26 08:12

    C语言特性

    数据,实现对设备的精准控制,同时降低功耗,延长设备的使用寿命。 2、可移植性:跨平台的通行证 C 语言具有良好的可移植性,这意味着用 C 语言
    发表于 11-24 07:01

    C语言在嵌入式开发中的应用

    资源有限的嵌入式设备上实现完整的网络功能 。 5、软件固件开发:嵌入式系统的基石 软件固件是嵌入式系统中最基本的软件,它负责控制硬件设备的运行,并提供基本的系统功能。
    发表于 11-21 08:09

    SaaS云门诊系统源码,诊所his系统源码

    一套成熟的SaaS云门诊系统源码,采用B/S架构,基于SpringBoot+Vue.js技术栈开发。 云门诊系统支持医保结算,包含预约挂号、医生工作站、收费管理、药房发药、库存
    的头像 发表于 11-19 15:51 154次阅读
    SaaS云门诊<b class='flag-5'>系统</b><b class='flag-5'>源码</b>,诊所his<b class='flag-5'>系统</b><b class='flag-5'>源码</b>

    一款基于Java+Spring Boot+Vue的智慧随访管理系统源码

    智慧随访管理系统源码,一款基于Java+Spring Boot+Vue的B/S架构医院随访管理系统源码
    的头像 发表于 11-13 15:38 177次阅读
    一款基于Java+Spring Boot+Vue的智慧随访<b class='flag-5'>管理</b><b class='flag-5'>系统</b><b class='flag-5'>源码</b>

    医院随访管理系统源码,三级随访系统源码,Java+Springboot,Vue,Ant-Design+MySQL5

    Java版随访系统源码,医院随访管理系统源码,三级随访系统
    的头像 发表于 11-08 14:48 199次阅读
    医院随访<b class='flag-5'>管理</b><b class='flag-5'>系统</b><b class='flag-5'>源码</b>,三级随访<b class='flag-5'>系统</b><b class='flag-5'>源码</b>,Java+Springboot,Vue,Ant-Design+MySQL5

    鸿蒙ArkTS+ArkUI仿微信通讯录页面制作【2】

    ' , '#C7CEEA' , '#A8E6CF' , '#FFD3A5' , '#FD9644' , '#9BB5FF' , '#98D8C8' , '#F7DC6F' , '#BB8FCE' , '#85C
    的头像 发表于 07-01 11:45 344次阅读
    鸿蒙ArkTS+ArkUI仿微信<b class='flag-5'>通讯录</b>页面制作【2】

    部队信息化管理系统:建设与实现共存

    管理系统
    北京华盛恒辉科技
    发布于 :2025年05月08日 22:30:46

    部队装备管理信息系统的设计与实现

    管理系统
    北京华盛恒辉科技
    发布于 :2025年05月08日 22:27:56

    电机管理信息系统的设计与实现

    符合行业标准的电机管理信息系统。基于这一要求,本文介绍了电机管理信息系统的设计、主要功能及实现方法。 纯分享帖,需要者可点击附件获取完整资料~~~ (免责声明:本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品
    发表于 04-08 15:56

    EE-188:使用C语言在ADSP-219x DSP上实现中断驱动系统

    电子发烧友网站提供《EE-188:使用C语言在ADSP-219x DSP上实现中断驱动系统.pdf》资料免费下载
    发表于 01-15 16:06 0次下载
    EE-188:使用<b class='flag-5'>C</b><b class='flag-5'>语言</b>在ADSP-219x DSP上<b class='flag-5'>实现</b>中断驱动<b class='flag-5'>系统</b>

    HarmonyOS NEXT 原生应用开发:社交通讯录界面实现

    联系人,实际应用中,这里应实现具体的通话或消息发送功能。 此DEMO提供了一个基础的社交通讯录界面框架,用户可根据实际需求进一步扩展功能,如添加联系人搜索功能、编辑联系人信息、分组显示联系人等,并连接至真实的通讯录服务以
    发表于 01-09 14:37

    语言模型管理的作用

    要充分发挥语言模型的潜力,有效的语言模型管理非常重要。以下,是对语言模型管理作用的分析,由AI部落小编整理。
    的头像 发表于 01-02 11:06 571次阅读

    源码开放 智能监测电源管理教程宝典!

    源码开放,今天我们学习的是电源管理系统的核心功能模块,手把手教你如何通过不同的技术手段实现有效的电源管理
    的头像 发表于 12-11 09:26 989次阅读
    <b class='flag-5'>源码</b>开放  智能监测电源<b class='flag-5'>管理</b>教程宝典!