架构: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("%-20s\t%-10s\t%-10s\t%-15s\t%-20s", "名字", "年龄", "性别", "电话", "地址");
//打印数据
for (i = 0; i < pc->sz; i++)
{
printf("%-20s\t%-10d\t%-10s\t%-15s\t%-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("%-20s\t%-10s\t%-10s\t%-15s\t%-20s", "名字", "年龄", "性别", "电话", "地址");
//打印数据
printf("%-20s\t%-10d\t%-10s\t%-15s\t%-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");
}
}
(欢迎大家批评指正,侵权即删)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)