C语言实现简易通讯录-创新互联
目录
成都创新互联公司长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为渝北企业提供专业的网站建设、网站制作,渝北网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。1.基本框架的实现
1.1 基本内容test.c
2. 函数的声明contact.h
3.函数的实现
3.1 初始化/清空联系人
3.2增加通讯录的联系人
3.3展示通讯录中所以联系人的信息
3.4通过名字找到指定的联系人
3.5通过名字搜索联系人
3.6删除联系人
3.7修改联系人
3.8通过选择的方式排序联系人
实现一个通讯录:
通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址
提供方法:
1.添加联系人信息
2.删除指定联系人信息
3.查找指定联系人信息
4.修改指定联系人信息
5.显示所有联系人信息
6.清空所有联系人
7.以名字排序所有联系人
我们首先在vs里创建一个test.c 和 contact .c 和 contact.h
- 我们在test.c来实现这个通讯录的主体内容
- 在contact.c的内容中来完善函数的实现
- contact.h的内容是定义一些变量和函数
首先我们需要打印一个菜单
void print_menu()
{
printf("*************************************************\n");
printf("******** 1.add 2.search ******\n");
printf("******** 3.del 4.modify ******\n");
printf("******** 5.show 6.empty ******\n");
printf("******** 7.sort 0.exit ******\n");
printf("*************************************************\n");
}
以上的内容就是我们需要实现的基本功能,接着我们就完善test.c中基本框架的实现
//test.c
#include"contact.h"
//实现一个通讯录;
//
//通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址
//
//提供方法:
//
//添加联系人信息
//删除指定联系人信息
//查找指定联系人信息
//修改指定联系人信息
//显示所有联系人信息
//清空所有联系人
//以名字排序所有联系人
void print_menu()
{
printf("*************************************************\n");
printf("******** 1.add 2.search ******\n");
printf("******** 3.del 4.modify ******\n");
printf("******** 5.show 6.empty ******\n");
printf("******** 7.sort 0.exit ******\n");
printf("*************************************************\n");
}
void test()
{
int input = 0;
Contact con;
//初始化通讯录
init_contact(&con);
do
{
//打印菜单
print_menu();
scanf("%d", &input);
switch (input)
{
case 1:
//增加函数
add_contact(&con);
break;
case 2:
//寻找
search_contact(&con);
break;
case 3:
//删除联系人
del_contact(&con);
break;
case 4:
//修改联系人
modify_contact(&con);
break;
case 5:
//展示通讯录
show_contact(&con);
break;
case 6:
init_contact(&con);
printf("清除成功\n");
break;
case 7:
sort_contact(&con);
break;
case 0:
printf("退出成功\n");
break;
default :
printf("输入有误\n");
break;
}
} while (input);
}
int main()
{
test();
return 0;
}
2. 函数的声明contact.h然后需要我们在contact.h中声明这些函数,并创建好通讯录需要的内容,就可以用结构体来实现。
//contact.h
#pragma once
#include#include#include
#include//通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址
#define NAME_MAX 20
#define SEX_MAX 8
#define TELE_MAX 15
#define ADDR_MAX 20
#define MAX 100
typedef struct Peoinfo
{
char name[NAME_MAX];
char sex[SEX_MAX];
int age;
char tele[TELE_MAX];
char addr[ADDR_MAX];
}Peoinfo;
typedef struct Contact
{
Peoinfo data[MAX];
int sz;
}Contact;
//初始化/清空
void init_contact(Contact* pc);
//通讯录中增加
void add_contact(Contact* pc);
//show通讯录
void show_contact( const Contact* pc);
//通讯录寻找人
int find_by_name(const Contact* pc);
//通讯录里search
void search_contact(const Contact* pc);
//删除联系人
void del_contact(Contact* pc);
//修改联系人
void modify_contact(Contact* pc);
//排序
void sort_contact(Contact* pc);
3.函数的实现
3.1 初始化/清空联系人//初始化/清空
void init_contact(Contact* pc)
{
assert(pc);
pc->sz = 0;
memset(pc->data, 0, sizeof(pc->data));
}
3.2增加通讯录的联系人//add
void add_contact(Contact* pc)
{
assert(pc);
if (pc->sz >MAX)
printf("通讯录已满,无法添加\n");
printf("请输入姓名:>\n");
scanf("%s", pc->data[pc->sz].name);
printf("请输入性别;>\n");
scanf("%s", pc->data[pc->sz].sex);
printf("请输入年龄;>\n");
scanf("%d", &(pc->data[pc->sz].age));
printf("请输入电话:>\n");
scanf("%s", pc->data[pc->sz].tele);
printf("请输入住址:>\n");
scanf("%s", pc->data[pc->sz].addr);
pc->sz++;
}
3.3展示通讯录中所以联系人的信息//show
void show_contact(const Contact* pc)
{
assert(pc);
int i = 0;
printf("%-10s\t%-5s\t%-4s\t%-15s\t%-10s\n", "姓名", "性别", "年龄", "电话", "住址");
for (i = 0; i< pc->sz; i++)
{
printf("%-10s\t%-5s\t%-4d\t%-15s\t%-10s\n", pc->data[i].name, pc->data[i].sex, pc->data[i].age, pc->data[i].tele, pc->data[i].addr);
}
}
3.4通过名字找到指定的联系人//通讯录找人
int find_by_name(const Contact* pc)
{
assert(pc);
char findPeo[20];
printf("请输入需要搜索/删除/修改数据的名字:>");
scanf("%s", findPeo);
int i = 0;
for (i = 0; i< pc->sz; i++)
{
if (strcmp(pc->data[i].name, findPeo)==0)
{
return i;
}
}
return -1;
}
3.5通过名字搜索联系人//通讯录中搜索
void search_contact(const Contact* pc)
{
assert(pc);
int ret = find_by_name(pc);
if (ret == -1)
{
printf("不存在此人\n");
}
else
{
printf("%-10s\t%-5s\t%-4s\t%-15s\t%-10s\n", "姓名", "性别", "年龄", "电话", "住址");
printf("%-10s\t%-5s\t%-4d\t%-15s\t%-10s\n",
pc->data[ret].name,
pc->data[ret].sex,
pc->data[ret].age,
pc->data[ret].tele,
pc->data[ret].addr);
}
}
3.6删除联系人//del
void del_contact(Contact*pc)
{
assert(pc);
int ret=find_by_name(pc);
if (ret == -1)
printf("不存在此人\n");
else
{
int i = 0;
for (i = ret; isz; i++)
{
pc->data[i] = pc->data[i + 1];
}
printf("删除成功\n");
pc->sz -= 1;
}
}
3.7修改联系人//modify修改
void modify_contact(Contact* pc)
{
assert(pc);
int ret = find_by_name(pc);
if (ret == -1)
printf("不存在此人\n");
else
{
printf("请输入姓名:>\n");
scanf("%s", pc->data[ret].name);
printf("请输入性别;>\n");
scanf("%s", pc->data[ret].sex);
printf("请输入年龄;>\n");
scanf("%d", &(pc->data[ret].age));
printf("请输入电话:>\n");
scanf("%s", pc->data[ret].tele);
printf("请输入住址:>\n");
scanf("%s", pc->data[ret].addr);
printf("修改成功\n");
}
}
3.8通过选择的方式排序联系人//sort
void sort_contact( Contact* pc)
{
assert(pc);
if (pc->sz == 0)
{
printf("通讯录为空,无法排序\n");
}
int k = 0;
printf("1.按名字排序 2.按年龄排序 0.退出\n");
printf("请选择:>");
scanf("%d", &k);
if (k == 0)
printf("退出成功\n");
else if (k == 1)
{
Peoinfo tmp;
int i = 0;
for (i = 0; i< pc->sz - 1; i++)
{
int j = 0;
for (j = 0; j< pc->sz -i- 1; j++)
{
if (strcmp(pc->data[j].name, pc->data[j + 1].name)>0)
{
tmp = pc->data[j];
pc->data[j] = pc->data[j + 1];
pc->data[j + 1] = tmp;
}
}
}
}
else if (k == 2)
{
int i = 0;
Peoinfo tmp;
for (i = 0; i< pc->sz - 1; i++)
{
for (int j = 0; j< pc->sz - i-1; j++)
{
if ((pc->data[j].age - pc->data[j + 1].age) >0)
{
tmp = pc->data[j];
pc->data[j] = pc->data[j + 1];
pc->data[j + 1] = tmp;
}
}
}
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章名称:C语言实现简易通讯录-创新互联
文章网址:http://ybzwz.com/article/cecgjo.html