我是靠谱客的博主 深情母鸡,最近开发中收集的这篇文章主要介绍努力实现C语言实现静态版通讯录(一初阶)文章目录二、通讯录的定义实现三.实现通讯录功能四.测试通讯录总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

文章目录

  • 一.通讯录
  • 二.通讯录的定义实现
  • 三.实现通讯录功能
  • 四.测试通讯录

一、通讯录

实现一个通讯录;

通讯录可以用来存储100个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址

提供方法:

初始化通讯录信息

添加联系人信息

删除指定联系人信息

查找指定联系人信息

修改指定联系人信息

显示所有联系人信息

销毁所有联系人信息

以年龄排序所有联系人

二、通讯录的定义实现

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

#define MAX 100
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 12
#define MAX_ADDR 30

//表示人信息
struct PeoInfo
{
	char name[MAX_NAME];
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	int age;
	char addr[MAX_ADDR];
};

struct Contact
{
	struct PeoInfo data[MAX];
	int sz;
};

//初始化通讯录
void InitContact(struct Contact* pc);

//增加人的信息到通讯录
void AddContact(struct Contact* pc);

//显示通讯录中的信息
void ShowContact(const struct Contact* pc);

//删除指定联系人
void DelContact(struct Contact* pc);

//查找指定联系人
void SearchContact(const struct Contact* pc);


//修改指定联系人的信息
void ModifyContact(struct Contact* pc);

//排序通讯录中的信息 - 年龄
void SortContact(struct Contact* pc);

//销毁通讯录
void DestroyContact(struct Contact* pc);

三.实现通讯录功能

#include "contact.h"
静态的版本
void InitContact(struct Contact* pc)
{
	assert(pc);
	pc->sz = 0;
	memset(pc->data, 0, MAX * sizeof(struct PeoInfo));
}

静态的版本
void AddContact(struct Contact* pc)
{
	assert(pc);

	if (pc->sz == MAX)
	{
		printf("通讯录已满,无法添加数据n");
		return;
	}

	//增加人的信息
	printf("请输入名字:>");
	scanf("%s", pc->data[pc->sz].name);
	printf("请输入性别:>");
	scanf("%s", pc->data[pc->sz].sex);
	printf("请输入年龄:>");
	scanf("%d", &(pc->data[pc->sz].age));
	printf("请输入电话:>");
	scanf("%s", pc->data[pc->sz].tele);
	printf("请输入地址:>");
	scanf("%s", pc->data[pc->sz].addr);

	pc->sz++;
	printf("成功增加联系人n");
}

void ShowContact(const struct Contact* pc)
{
	int i = 0;
	printf("%-20st%-5st%-5st%-12st%-30sn", "姓名", "性别", "年龄", "电话", "地址");
	for (i = 0; i < pc->sz; i++)
	{
		printf("%-20st%-5st%-5dt%-12st%-30sn", pc->data[i].name,
			pc->data[i].sex,
			pc->data[i].age,
			pc->data[i].tele,
			pc->data[i].addr);
	}
}

static int FindByName(const struct Contact* pc, char name[])
{
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		if (0 == strcmp(pc->data[i].name, name))
		{
			return i;
		}
	}
	return -1;
}

void DelContact(struct Contact* pc)
{
	char name[MAX_NAME];
	printf("请输入要删除人的名字:>");
	scanf("%s", name);
	//查找一下指定的人是否存在
	int ret = FindByName(pc, name);
	if (ret == -1)
		printf("要删除的人不存在n");
	else
	{
		//删除
		int j = 0;
		for (j = ret; j < pc->sz - 1; j++)
		{
			pc->data[j] = pc->data[j + 1];
		}
		pc->sz--;
		printf("成功删除指定联系人n");
	}
}

void SearchContact(const struct Contact* pc)
{
	char name[MAX_NAME];
	printf("请输入要查找的人的名字:>");
	scanf("%s", name);
	//查找一下指定的人是否存在
	int ret = FindByName(pc, name);
	if (ret == -1)
		printf("要查找的人不存在n");
	else
	{
		printf("%-20st%-5st%-5st%-12st%-30sn", "姓名", "性别", "年龄", "电话", "地址");
		printf("%-20st%-5st%-5dt%-12st%-30sn", pc->data[ret].name,
			pc->data[ret].sex,
			pc->data[ret].age,
			pc->data[ret].tele,
			pc->data[ret].addr);
	}
}

void ModifyContact(struct Contact* pc)
{
	printf("请输入要修改人的名字:>");
	char name[MAX_NAME];
	scanf("%s", name);
	int ret = FindByName(pc, name);
	if (ret == -1)
		printf("要修改的人不存在n");
	else
	{
		printf("请输入名字:>");
		scanf("%s", pc->data[ret].name);
		printf("请输入性别:>");
		scanf("%s", pc->data[ret].sex);
		printf("请输入年龄:>");
		scanf("%d", &(pc->data[ret].age));
		printf("请输入电话:>");
		scanf("%s", pc->data[ret].tele);
		printf("请输入地址:>");
		scanf("%s", pc->data[ret].addr);

		printf("修改成功n");
	}
}

int CmpByName(const void* e1, const void* e2)
{
	return strcmp(((struct PeoInfo*)e1)->name, ((struct PeoInfo*)e2)->name);
}

void SortContact(struct Contact* pc)
{
	qsort(pc->data, pc->sz, sizeof(struct PeoInfo), CmpByName);
}

四.测试通讯录

#include "contact.h"

void menu()
{
	printf("**************************************n");
	printf("*****   1. add      2. del       *****n");
	printf("*****   3. search   4. modify    *****n");
	printf("*****   5. show     6. sort      *****n");
	printf("*****   0. exit                  *****n");
	printf("**************************************n");
}

int main()
{
	int input = 0;
	//创建通讯录
	struct Contact con;//通讯录
	//初始化通讯录
	InitContact(&con);

	do
	{
		menu();
		printf("请选择>:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			AddContact(&con);
			break;
		case 2:
			DelContact(&con);
			break;
		case 3:
			SearchContact(&con);
			break;
		case 4:
			ModifyContact(&con);
			break;
		case 5:
			ShowContact(&con);
			break;
		case 6:
			SortContact(&con);
			break;
        case EXIT:
            DestroyContact(&con);
			printf("退出通讯录n");
			break;
		default:
			printf("选择错误n");
			break;
		}
	} while (input);

	return 0;
}

总结

一定要拿到好offer!!!

最后

以上就是深情母鸡为你收集整理的努力实现C语言实现静态版通讯录(一初阶)文章目录二、通讯录的定义实现三.实现通讯录功能四.测试通讯录总结的全部内容,希望文章能够帮你解决努力实现C语言实现静态版通讯录(一初阶)文章目录二、通讯录的定义实现三.实现通讯录功能四.测试通讯录总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部