简单的通讯录项目的实现

发布时间:2024-01-21 10:33:07

首先,为了减少通讯录项目的工程量,这里要引用前一篇文章完成的顺序表的基本功能

这里将代码放到这里,方便查找

1.需要使用的函数

typedef struct SeqList
{
    SLDataType* a;
    int size;     // 有效数据个数
    int capacity; // 空间容量
}SL;

void SLInit(SL* ps);
void SLDestroy(SL* ps);
void SLPrint(SL* ps);
//扩容
void SLCheckCapacity(SL* ps);

//头部插入删除 / 尾部插入删除
void SLPushBack(SL* ps, SLDataType x);
void SLPopBack(SL* ps);
void SLPushFront(SL* ps, SLDataType x);
void SLPopFront(SL* ps);

//指定位置之前插入/删除数据
void SLInsert(SL* ps, int pos, SLDataType x);
void SLErase(SL* ps, int pos);
int SLFind(SL* ps, SLDataType x);

2.通讯录结构体

首先需要创建一个通讯录的结构体,为了方便修改结构体变量的长度,这里选择使用#define

#define NAME_MAX 100

#define SEX_MAX 4

#define TEL_MAX 11

#define ADDR_MAX 100

typedef struct PersonInfo
{
	char name[NAME_MAX];
	int age;
	char sex[SEX_MAX];
	char tel[TEL_MAX];
	char addr[ADDR_MAX];
}PeoInfo;
typedef PeoInfo SLDataType;

注意,该代码因该放到头文件的最前面,

3.通讯录功能的声明

//前置声明
struct SeqList;
typedef struct SeqList contact;

//初始化通讯录

void InitContact(contact* con);

//添加通讯录数据

void AddContact(contact* con);

//删除通讯录数据

void DelContact(contact* con);

//展示通讯录数据

void ShowContact(contact* con);

//查找通讯录数据

void FindContact(contact* con);

//修改通讯录数据

void ModifyContact(contact* con);

//销毁通讯录数据

void DestroyContact(contact* con);

4.增删改查的实现

1.初始化

void InitContact(contact* con)
{
	SLInit(con);
}

2.销毁

void DestroyContact(contact* con)
{
	SLDestroy(con);
}

3.添加联系人

void AddContact(contact* con)
{
	PeoInfo info;
	printf("请输入姓名");
	scanf("%s", info.name);
	printf("请输入年龄");
	scanf("%d", info.age);
	printf("请输入性别");
	scanf("%s", info.sex);
	printf("请输入电话");
	scanf("%s", info.tel);
	printf("请输入地址");
	scanf("%s", info.addr);
	SLPushBack(con,info);
}

4.删除联系人

为了删除联系人,首先需要找到需要删除的联系人,因此可以构造函数查找联系人

int FindName(contact* con,char name[])
{
	for (int i = 0; i < con->size; i++)
	{
		if (strcmp(con->a[i].name, name) == 0)
		{
			//找到了
			return i;
		}
		return -1;
	}
}

找到联系人后才可以进行删除

void DelContact(contact* con)
{
	printf("请输入删除的姓名");
	char name[NAME_MAX];
	cin >> name;
	int findIndex = FindName(con, name);

	if (findIndex < 0)
		cout << "不存在该联系人";

	//执行删除操作
	SLErase(con, findIndex);
	printf("删除成功");
}

5.展示通讯录

void ShowContact(contact* con)
{
	for (int i = 0; i < con->size; i++)
	{
		printf("%s %s %d %s %s",
			con->a[i].name,
			con->a[i].sex,
			con->a[i].age,
			con->a[i].tel,
			con->a[i].addr
		);
	}
}

6.修改联系人信息

void ModifyContact(contact* con)
{
	printf("请输入要修改的姓名");
	char name[NAME_MAX];
	cin >> name;
	int findIndex = FindName(con, name);
	if (findIndex < 0)
	{
		cout << "不存在该联系人";
		return;
	}
	printf("请输入姓名");
	scanf("%s", con->a[findIndex].name);
	printf("请输入年龄");
	scanf("%d", con->a[findIndex].age);
	printf("请输入性别");
	scanf("%s", con->a[findIndex].sex);
	printf("请输入电话");
	scanf("%s", con->a[findIndex].tel);
	printf("请输入地址");
	scanf("%s", con->a[findIndex].addr);
	printf("修改成功");

}

7.查找联系人

void FindContact(contact* con)
{
	char name[NAME_MAX];
	printf("请输入姓名");
	cin >> name;
	int findIndex = FindName(con, name);
	if (findIndex < 0)
	{
		printf("该联系人不存在");
		return;
	}
	printf("%s %s %d %s %s",
		con->a[findIndex].name,
		con->a[findIndex].sex,
		con->a[findIndex].age,
		con->a[findIndex].tel,
		con->a[findIndex].addr
	);

}

文章来源:https://blog.csdn.net/2301_80006788/article/details/135726039
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。