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

Posted 一起学编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++项目开发:通讯录管理系统源码,C语言链表实现相关的知识,希望对你有一定的参考价值。

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

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

知识点:C语言,链表

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

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

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

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

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

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

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

6. 退出程序


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

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

源码分享:

#include <stdlib.h>
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<m;i++)
    s=(LinkList)malloc(sizeof(ListNode)); //新建的节点 
     printf("输入第%d位编号:",i+1);
     scanf("%s",&s->data.num);
     printf("\\n输入姓名:");
     scanf("%s",&s->data.name);
     printf("\\n输入性别:");
     scanf("%s",&s->data.sex);
     printf("\\n输入电话:");
     scanf("%s",&s->data.phone);
     printf("\\n输入地址:");
     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<i-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<i-1) //使p指向要删除位置的前一个元素 
   p=p->next;
  	j++;
  
  q=p->next; //q指向后一个元素  
  printf("\\n被删除的人员信息为:\\n");
  printf("\\n编号:%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<i)
  p=p->next;
   j++;
  
  d=p->data;
  return 1;
	


void print(LinkList L) //打印通讯录人员信息 
 LinkList p;
  p=L->next;
  while(p)
  
  	printf("\\n编号:%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("\\n--------------------------------------------2.通讯者节点的插入----------------------------------------------------------");
   printf("\\n--------------------------------------------3.通讯者节点的查询----------------------------------------------------------");
   printf("\\n--------------------------------------------4.通讯者节点的删除----------------------------------------------------------");
   printf("\\n--------------------------------------------5.通讯录链表的输出----------------------------------------------------------");
   printf("\\n--------------------------------------------0.退出管理系统--------------------------------------------------------------");
 
 int main()
 
 	LinkList L;
 	DataType d,d1;
 	int m,location,length,choose;
 	menu();
 	p:
 	printf("\\n请输入你的选项:");
 	scanf("%d",&choose);
 	switch(choose)
 	 case 1:printf("请输入通讯录人数:");scanf("%d",&m);CreateList(L,m);goto p;
 	  case 2:printf("\\n输入要插入的位置:");scanf("%d",&location);printf("输入插入人员的编号:"); scanf("%s",&d.num);printf("\\n输入姓名:"); scanf("%s",&d.name); printf("\\n输入性别:");scanf("%s",&d.sex);printf("\\n输入电话:");scanf("%s",&d.phone);printf("\\n输入地址:");scanf("%s",&d.addr);ListInsert(L,location,d);goto p;
	  case 3:printf("\\n请输入查询位置");scanf("%d",&location);GetElem(L,location,d); printf("查询到的人员信息为:\\n");printf("\\n编号:%s  姓名:%s  性别:%s  电话:%s 地址:%s",d.num,d.name,d.sex,d.phone,d.addr);goto p;
	  case 4:printf("\\n输入要删除的位置:");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语言/C++学习问题无法解决,可以来我下方粉丝群交流提问!

粉丝群&(同时也是更多源码素材获取通道):

以上是关于C/C++项目开发:通讯录管理系统源码,C语言链表实现的主要内容,如果未能解决你的问题,请参考以下文章

C语言通讯录系统——C语言单向链表实现

c语言通讯录管理系统的排序怎么做?

求用C语言建立通讯录管理系统

python源码剖析

TCP通信聊天服务端和客户端(C/C++语言开发)附完整源码

C/C++项目开发:推箱子游戏,全源码细致解析