一、概述
通讯录的实现其中包括了指针、结构体、动态内存管理、文件的读写操作等知识点,是对这些知识点应用巩固的非常好的例子;
通讯录功能如下:
- 添加联系人
- 删除联系人
- 查找联系人
- 修改联系人
- 显示所有联系人
- 加载联系人
- 保存联系人
- 联系人排序
二、代码如下
contact.h
#ifndef CONTACT_H
#define CONTACT_H
#define NAME_MAX 20
#define SEX_MAX 10
#define TEL_MAX 12
#define ADDR_MAX 20
#define MEMBER_MAX 1
typedef struct info
{
char name[NAME_MAX];
char sex[SEX_MAX];
int age;
char tele[TEL_MAX];
char addr[ADDR_MAX];
}info;
typedef struct contact
{
info *data;
int size;
int capacity;
}contact, *pcontact;
//初始化通讯录
void InitContact(pcontact list);
//添加联系人
void AddContact(pcontact list);
//删除联系人
void DellContact(pcontact list);
//查找联系人
void FindContact(pcontact list);
//修改联系人
void ModContact(pcontact list);
//显示所有联系人
void ShowContact(pcontact list);
//联系人排序(选择法)
void SortContact(pcontact list);
//检查容量
int CheckSize(pcontact list);
//查找联系人在数组data第几个位置
int FindContactAddr(pcontact list);
//从文件中加载联系人到内存
void LoadContact(pcontact list);
//将联系人从内从中保存到文件
void SaveContact(pcontact list);
#endif
contact.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "contact.h"
//初始化通讯录
void InitContact(pcontact list)
{
list->data = (info *)malloc(sizeof(info)* MEMBER_MAX);
list->size = 0;
list->capacity = MEMBER_MAX;
//每次初始化是加载一遍文件,防止最新录入的在保存在文件时覆盖上次
//打开程序时保存的信息
LoadContact(list);
}
//添加联系人
void AddContact(pcontact list)
{
info tmp_member;
if (CheckCapacity(list) == 0)
{
printf("成员已满,添加失败!");
return;
}
printf("请输入姓名:");
scanf("%s", tmp_member.name);
printf("请输入性别:");
scanf("%s", tmp_member.sex);
printf("请输入年龄:");
scanf("%d", &tmp_member.age);
printf("请输入电话:");

这篇博客通过C语言实现了一个简易通讯录,涵盖了指针、结构体、动态内存管理和文件操作等基础知识。功能包括添加、删除、查找、修改联系人,以及联系人排序和文件的读写。提供了contact.h、contact.c和test.c三个源文件作为实现示例。
1320

被折叠的 条评论
为什么被折叠?



