通讯录管理系统

这个博客介绍了作者使用C语言编写的通讯录管理系统,基于链表和结构体实现,包含增删查改、排序、文件操作等功能。博主强调虽然系统存在一些问题,如插入方法单一、排序功能不稳定,但适合初学者参考学习。他还提醒读者不要直接复制代码,以防出现问题。
摘要由CSDN通过智能技术生成

通讯录管理系统

你好,这是在学习了一段时间的C语言之后,在结合所学知识和网站学习的基础下,编译的第一个程序,可以作为参考,但不建议直接拿去用。萌新谨慎索取。在浏览过程中,如果发现哪方面不足,欢迎下方留言。

通讯录管理系统详解

该系统是基于链表和结构体创建,有链表基本的增删查改,排序,查找,插入,文件的创建,保存,读取和一些小功能。在更改和查找功能中,又分别将其细化,避免了很多不必要的麻烦。
本系统存在的问题也有很多,比如:插入采用的是尾插法,没有运用其他的插入方法,比较单调,单一。排序功能还存在一些问题。 大家都是新手,不建议直接copy哦!!如果出了问题,哥哥概不负责。嘻嘻!!

一、 具体代码详解如下

1.头文件和结构体及变量定义

代码展示如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

struct Person
	{
   
	int num;
	char name[50];
	char  city[50];
	char  tel[13];
	char youbian[6];
	};
struct node
	{
   
	Person data;
	struct node *pnext;
	};
	struct node*phead =NULL;
	int count =0;

在结构体中定义数值域与指针域,数值域储存联系人信息,指针域储存要连接的结构体地址,

2.使用的函数声明

具体如下:

void createFace();//创建主菜单
void createHeadNode();//创建头文件
void addNewNode(struct node *phead);//添加联系人
void showAllNode(struct node *phead);//展示所有联系人
void deleteNodeByNum(struct node *phead);//删除联系人
void findNodeByNum(struct node *phead);//通过编号查找联系人
void xiugaiNodeByNum(struct node *phead);//修改联系人
void initData(struct node *phead);//读取文件
void flush_data(struct node *phead);//写入文件,并退出系统
void findNodeByDim(struct node *phead);//查找相同城市联系人
int isSameNode(char input[], char name[]);//相同筛选
void Sort(struct node *phead);//排序
void find(struct node *phead);//查找联系人
void face();//菜单
void face2();//菜单2

根据所需的功能运用不同的函数,千万要记住函数的声明!!!!千万要记住!!!千万要记住!!!重要的事情说三遍!!!!

2. 菜单和主函数

代码如下

void createFace()
	{
   
	int b=0;
	initData(phead);
	printf("当前文件中有%d条数据\n",count);
	printf("当前日期是:\t"); 
	system("date/t");
	system("time/t");
	printf("\t\t\t=====================欢迎使用通讯录管理系统==================\n");
	printf("\t\t\t*                                                           *\n");
	printf("\t\t\t*                                                           *\n");
	printf("\t\t\t-------------------------------------------------------------\n");
	printf("\t\t\t**************************1.新增联系人***********************\n");
	printf("\t\t\t*                                                           *\n");
	printf("\t\t\t**************************2.删除联系人***********************\n");
	printf("\t\t\t*                                                           *\n");
	printf("\t\t\t**************************3.查找联系人***********************\n");
	printf("\t\t\t*                                                           *\n");
	printf("\t\t\t**************************4.修改联系人信息*******************\n");
	printf("\t\t\t*                                                           *\n");
	printf("\t\t\t**************************5.查看所有联系人*******************\n");
	printf("\t\t\t*                                                           *\n");
	printf("\t\t\t**************************6.排序*****************************\n");
	printf("\t\t\t*                                                           *\n");
	printf("\t\t\t**************************0.数据存档并退出系统***************\n");
	printf("\t\t\t-------------------------------------------------------------\n");
	printf("\t\t\t*                                                           *\n");
	printf("\t\t\t*                                                           *\n");
	printf("\t\t\t=============================================================\n");
	while(1)
	{
   
	loop:printf("输入选项前的数字:");
	int a,b;
		a=scanf("%d",&b);
		if (a!=1)
		{
   
			printf("干哈呢!让你输个数字,你至于吗?老实点!!!!"); 
			fflush(stdin);
			goto loop;
			
		}
		
			switch(b)
				{
   
				case 1:addNewNode(phead);break;
				case 2:deleteNodeByNum(phead);break;
				case 3:find(phead);break;
				case 4:xiugaiNodeByNum(phead);break;
				case 5:showAllNode(phead);break;
				case 6:Sort(phead
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值