linux学习4实现通讯录(结构体)

该博客详细介绍了如何在Linux系统下使用C语言实现一个通讯录应用,包括架构设计与需求分析。功能涵盖添加、显示、删除、查找人员以及文件的保存和加载。人员信息以键值对形式(name:xxx,phone:xxx)存储在文件中,并通过链表管理。文章还展示了关键代码段和执行流程。" 107256196,8040212,MMDetection2实践与官方文档解读,"['深度学习', '计算机视觉', '目标检测', 'MMDetection', 'Python']
摘要由CSDN通过智能技术生成

通讯录实现的架构设计与需求分析

通讯录实现的功能:

  1. 添加一个人员
  2. 打印显示所有人员
  3. 删除一个人员
  4. 查找一个人员
  5. 保存文件
  6. 加载文件

需求分析:

  1. 人员如何存储 —>链表的方式
  2. 文件存储 ---->人员数据的格式
  3. 人员信息 ---->姓名,电话

文件数据存储
name:xxx,phone:xxx
name:yyy,phone:yyy
键值对

架构设计:
在这里插入图片描述

代码



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


#define NAME_LENGTH			16
#define PHONE_LENGTH		32
#define BUFFER_LENGTH		128
#define MIN_TOKEN_LENGTH	5

#define INFO			printf


#define LIST_INSERT(item, list) do {
     	\
	item->prev = NULL;					\
	item->next = list;					\
	if ((list) != NULL) (list)->prev = item; \
	(list) = item;						\
} while(0)


#define LIST_REMOVE(item, list) do {
     	\
	if (item->prev != NULL) item->prev->next = item->next; \
	if (item->next != NULL) item->next->prev = item->prev; \
	if (list == item) list = item->next; 					\
	item->prev = item->next = NULL;							\
} while(0)



struct person {
   
	char name[NAME_LENGTH];
	char phone[PHONE_LENGTH];

	struct person *next;
	struct person *prev;
};


struct contacts {
   
	struct person *people;
	int count;
};

enum {
   
	OPER_INSERT = 1,
	OPER_PRINT,
	OPER_DELETE,
	OPER_SEARCH,
	OPER_SAVE,
	OPER_LOAD
};


// define interface 
int person_insert(struct person **ppeople, struct person *ps) {
   
	if (ps == NULL) return -1;

	LIST_INSERT(ps, *ppeople);

	return 0;
}

int person_delete(struct person **ppeople, struct person *ps) {
   

	if (ps == NULL) return -1;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值