通讯录
通讯录实现要求
实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址
提供方法:
1.添加联系人信息
2.删除指定联系人信息
3.查找指定联系人信息
4.修改指定联系人信息
5.以名字排序所有联系人
6.显示所有联系人信息
7.清楚所有联系人
模块化实现
头文件声明
contact.h
#pragma once
//库函数
#include<stdio.h>
#include<string.h>
//宏定义,方便后期修改数值时不用依次修改
#define MAX_NAME 20
#define MAX_SEX 10
#define MAX_TELE 20
#define MAX_ADD 10
#define MAX 1000
typedef struct Peoinfo
{
char name[MAX_NAME];
char sex[MAX_SEX];
int age;
char tele[MAX_TELE];
char add[MAX_ADD];//地址
}Peoinfo;
typedef struct Contact
{
Peoinfo data[MAX];
int sz;
}Contact;
//菜单声明
void meun();
//函数声明
void InitContact(Contact* pc);
void AddContact(Contact* pc);
void PrintContact(Contact* pc);
void DelContact(Contact* pc);
void ModifyContact(Contact* pc);
void SortContact(Contact* pc);
菜单界面
test.c
#include"contact.h"
enum Option
{
EXIT,
ADD,
DEL,
SEARCH,
MODIFY,
SORT,
PRINT
};
void meun()
{
printf("********************************************\n");
printf("********** 1.add 2.del **********\n");
printf("********** 3.search 4.modify **********\n");
printf("********** 5.sort 6.print **********\n");
printf("********** 0.exit **********\n");
printf("********************************************\n");
}
int main()
{
int input = 0;
Contact con;
InitContact(&con);
do
{
meun();
printf("请输入:>");
scanf("%d", &input);
switch (input)
{
case ADD :
AddContact(&con);
break;
case DEL :
DelContact(&con);
break;
case SEARCH:
SearchContact(&con);
break;
case MODIFY:
ModifyContact(&con);
break;
case SORT:
SortContact(&con);
break;
case PRINT:
PrintContact(&con);
break;
default:
break;
}
} while (input);
return 0;
}
功能实现
初始化通讯录
//初始化
void InitContact(Contact* pc)
{
pc->sz = 0;
memset(pc->data, 0, sizeof(pc->data));
}
增加联系人
//1.增
void AddContact(Contact* pc)
{
if (pc->sz == MAX)
{
printf("联系人已满");
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].add);
pc->sz++;
printf("添加联系人成功\n");
}
打印通讯录
//6.打印
void PrintContact(Contact* pc)
{
int i = 0;
if (pc->sz == 0)
{
printf("通讯录为空\n");
}
printf("%-20s\t%-10s\t%-4s\t%-20s\t%-10s\n", "姓名", "性别", "年龄", "电话号码", "地址");
for (i = 0; i < pc->sz; i++)
{
printf("%-20s\t%-10s\t%-4d\t%-20s\t%-10s\n",
pc->data[i].name,
pc->data[i].sex,
pc->data[i].age,
pc->data[i].tele,
pc->data[i].add);
}
}
寻找人名函数
//寻
int Find(Contact* pc,char* name)
{
for (int i = 0; i < pc->sz; i++)
{
if (strcmp(pc->data[i].name, name) == 0)
{
return i;
}
}
return -1;
}
删除联系人
//2.删
void DelContact(Contact* pc)
{
if (pc->sz == 0)
{
printf("通讯录为空\n");
}
printf("请输入要删除的联系人");
char name[MAX_NAME];
scanf("%s", &name);
int ret = Find(pc, name);
if (ret == -1)
{
printf("没有找到要删的联系人");
return;
}
else
{
int i = 0;
for (i = ret; i < pc->sz-1; i++)
{
pc->data[i] = pc->data[i + 1];
}
}
pc->sz--;
}
查找联系人
//3.查
void SearchContact(Contact* pc)
{
if (pc->sz == 0)
{
printf("通讯录为空\n");
}
printf("请输入要查找的联系人:>");
char name[MAX_NAME];
scanf("%s", &name);
int ret = Find(pc,name);
if (ret