架构:1.通讯录中可以存放1000个人的信息
每个人的信息:名字,年龄,性别,电话,地址
2.增加人的信息
3.删除指定人的信息
4.修改指定人的信息
5.查找指定人的信息
6.排序指定人的信息
test.c 测试通讯录的模块
contact.h 类型定义 函数声明
contact.c 函数的实现
test.c
#define _CRT_SECURE_NO_WARNINGS 1 #include#include #include #include #include #include #include #include "contact.h" //test.c 测试通讯录的模块 // contact.h 类型定义 函数声明 // contact.c 函数的实现 //通讯录 //1.通讯录中可以存放1000个人的信息 //每个人的信息:名字,年龄,性别,电话,地址 //2.增加人的信息 //3.删除指定人的信息 //4.修改指定人的信息 //5.查找指定人的信息 //6.排序指定人的信息 void menu() { 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"); } enum Option { Exit, Add, Del, Search, Modify, Sort, Print }; int main() { int input = 0; //创建通讯录 Contact con; //初始化通讯录 InitContact(&con); do { menu(); printf("Please select."); 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; //退出 case Exit: printf("退出通讯录n"); break; defult: printf("选择错误,请重新选择n"); break; } } while (input); return 0; }
contact.h
#pragma once
#define Max_Name 20
#define Max_Sex 10
#define Max_Tele 12
#define Max_Addr 12
#define Max 1000
//类型的定义
typedef struct PeoInfo
{
char name[Max_Name];
char sex[Max_Name];
int age;
char tele[Max_Tele];
char addr[Max_Addr];
}PeoInfo;
//通讯录
typedef struct Contact
{
PeoInfo data[Max];//存放添加进来人的信息
int sz;//通讯录中当前有效信息的个数
}Contact;
//初始化通讯录
void InitContact(Contact* pc);
//增加人的信息
void AddContact(Contact* pc);
//打印指定人的信息
void PrintContact(const Contact* pc);
//删除指定人的信息
void DelContact(Contact* pc);
//查找指定人的信息
void SearchContact(Contact* pc);
//修改指定人的信息
void ModifyContact(Contact* pc);
contact.c
#include "contact.h"
//初始化通讯录
void InitContact(Contact* pc)
{
pc->sz = 0;
//memset(); 内存设置
memset(pc->data, 0, sizeof(pc->data));
}
//增加人的信息
void AddContact(Contact* pc)
{
if (pc->sz == Max)
{
printf("通讯录已满,无法添加n");
return;
}
//增加一个人的信息
printf("请输入名字:n");
scanf("%s", pc->data[pc->sz].name);
printf("请输入年龄:n");
scanf("%d", &(pc->data[pc->sz].age));
printf("请输入性别:n");
scanf("%s", pc->data[pc->sz].sex);
printf("请输入电话:n");
scanf("%s", pc->data[pc->sz].tele);
printf("请输入地址:n");
scanf("%s", pc->data[pc->sz].addr);
pc->sz++;
printf("增加成功n");
}
//打印指定人的信息
void PrintContact(const Contact* pc)
{
int i = 0;
//打印标题
printf("%-20st%-10st%-10st%-15st%-20s", "名字", "年龄", "性别", "电话", "地址");
//打印数据
for (i = 0; i < pc->sz; i++)
{
printf("%-20st%-10dt%-10st%-15st%-20s",
pc->data[i].name,
pc->data[i].age,
pc->data[i].sex,
pc->data[i].tele,
pc->data[i].addr);
}
}
static int FindByName(Contact* pc, char name[])
{
int i = 0;
for (i = 0; i < pc->sz; i++)
{
if (strcmp(pc->data[i].name, name) == 0)
{
return i;
}
}
//找不到
return -1;
}
//删除指定人的信息
void DelContact(Contact* pc)
{
char name[Max_Name] = { 0 };
if (pc->sz == 0)
{
printf("通讯录为空,无需删除n");
return;
}
printf("请输入要删除人的名字n");
scanf("%s", name);
//删除一个人的信息
//1.查找要删除的人 有/没有
int pos=FindByName(pc, name);
if (pos == -1)
{
printf("要删除的人不存在n");
return;
}
//2.删除
int i = 0;
for (i = pos; i < pc->sz-1; i++)
{
pc->data[i] = pc->data[i + 1];
}
pc->sz--;
printf("删除成功n");
}
//查找指定人的信息
void SearchContact(const Contact* pc)
{
char name[Max_Name] = { 0 };
printf("请输入要查找人的名字n");
scanf("%s", name);
int pos = FindByName(pc, name);
if (pos == -1)
{
printf("要查找的人不存在n");
return;
}
else
{
//打印标题
printf("%-20st%-10st%-10st%-15st%-20s", "名字", "年龄", "性别", "电话", "地址");
//打印数据
printf("%-20st%-10dt%-10st%-15st%-20s",
pc->data[pos].name,
pc->data[pos].age,
pc->data[pos].sex,
pc->data[pos].tele,
pc->data[pos].addr);
}
}
//修改指定人的信息
void ModifyContact(Contact* pc)
{
char name[Max_Name] = { 0 };
printf("请输入要修改人的名字n");
scanf("%s", name);
int pos = FindByName(pc, name);
if (pos == -1)
{
printf("要修改的人不存在n");
return;
}
else
{
//增加一个人的信息
printf("请输入名字:n");
scanf("%s", pc->data[pos].name);
printf("请输入年龄:n");
scanf("%d", &(pc->data[pos].age));
printf("请输入性别:n");
scanf("%s", pc->data[pos].sex);
printf("请输入电话:n");
scanf("%s", pc->data[pos].tele);
printf("请输入地址:n");
scanf("%s", pc->data[pos].addr);
printf("增加成功n");
}
}
(欢迎大家批评指正,侵权即删)



