目录
创建菜单
通过switch实现菜单,并使用do-while循环。
定义通讯录变量
使用枚举类型代表功能按键
初始化通讯录
通讯录增加联系人:
为了实现查找和删除功能,我们要创建一个查找函数
删除联系人
查找联系人,并打印:
修改联系人
确定通讯录的功能
//通讯录增加联系人--------1
//删除联系人 --------2
//查找联系人,并打印-----3
//修改联系人 --------4
//打印通讯录 --------5
//退出程序 --------0
头文件:
#include
#include
#include
#include
因为每个函数都需要使用指针,需使用assert() 来保证程序稳定性。
void menu()
{
printf("---------------------------------\n");
printf("---------------------------------\n");
printf("--------1.增加联系人-------------\n");
printf("--------2.删除联系人-------------\n");
printf("--------3.查找联系人-------------\n");
printf("--------4.修改联系人数据---------\n");
printf("--------5.打印联系人数据---------\n");
printf("--------0.退出-------------------\n");
printf("---------------------------------\n");
printf("---------------------------------\n");
}
int bh = 0;
do
{
scanf("%d", &bh);
switch (bh)
{
case ADD:
//通讯录增加联系人
add_contact(&con);
break;
case DEL:
//删除联系人
delete_contact(&con);
break;
case FIND:
//查找联系人,并打印
lookup_contact(&con);
break;
case MODIFY:
//修改联系人
modify_contact(&con);
break;
case PRINT:
//打印通讯录
print_contact(&con);
break;
case EXT:
//退出程序
printf("退出通讯录\n");
break;
default:
printf("输入错误,请重新输入:\n");
break;
}
} while (bh != 0);
使用typedef 方便后期使用
//定义联系人变量
typedef struct data
{
char name[20];//名字
int age;//年龄
char sex[10];//性别
char tele[15];//电话
char address[30];//地址
}data;
typedef struct contact//增加序号sz
{
data da[1000];
int sz;
}contact;
//使用枚举类型代表功能按键
enum initial
{
EXT,
ADD,
DEL,
FIND,
MODIFY,
PRINT,
};
void initial_contact(contact*con)
{
assert(con);
//序号初始化为0
con->sz = 0;
//memset初始化为0
memset(con->da, 0, sizeof(con->da));
}
通过变量sz记录序号,每次添加完成sz++;
结构体访问形式-> 和.
void add_contact(contact* con)
{
assert(con);
printf("请输入名字:\n");
scanf("%s", con->da[con->sz].name);
printf("请输入年龄:\n");
scanf("%d", &(con->da[con->sz].age) );
printf("请输入性别:\n");
scanf("%s",con->da[con->sz].sex);
printf("请输入电话号码:\n");
scanf("%s", con->da[con->sz].tele);
printf("请输入地址:\n");
scanf("%s", con->da[con->sz].address);
printf("输入完毕,添加成功\n");
con->sz++;
}
将输入的值传到形参arr[]中,使用strcmp函数在循环下,一一进行比较。
并返回下标,没有找到返回-1。
//查找函数
int look_contact(contact* con,char arr[])
{
assert(con);
int i = 0;
int ho = con->sz + 1;
for(i = 0; i < ho; i++)
{
int ko = strcmp(con->da[i].name, arr);
if (0 == ko)
{
return i;
}
}
return -1;
}
查找函数的返回值赋给put,并打印出该联系人。
con->da[h] = con->da[h + 1];使用数组覆盖的方式
并将sz--;
//删除联系人
void delete_contact(contact* con)
{
assert(con);
int put = -1;
while (put == -1)
{
printf("请输入要删除的人姓名:\n");
char name[25] = { "0" };
scanf("%s", name);
put = look_contact(con, name);
if (put > -1)
{
printf("%-20s %-5s %-5s %-10s %-15s\n", "姓名", "年龄", "性别", "电话", "地址");
printf("%-15s %-5d %-5s %-15s %-15s\n", con->da[put].name, con->da[put].age,
con->da[put].sex, con->da[put].tele, con->da[put].address);
}
else
{
printf("找不到请重新输入:\n");
}
}
int h = 0;
for (h = put;h < con->sz - 1; h++)
{
con->da[h] = con->da[h + 1];
}
printf("删除成功\n");
con->sz--;
}
使用查找函数找到后进行打印
//查找联系人,并打印
void lookup_contact(contact* con)
{
assert(con);
int put = -1;
while(put==-1)
{
printf("请输入要查找的人姓名:\n");
char name[25] = { "0" };
scanf("%s", name);
put = look_contact(con, name);
if (put > -1)
{
printf("%-20s %-5s %-5s %-10s %-15s\n", "姓名", "年龄", "性别", "电话", "地址");
printf("%-15s %-5d %-5s %-15s %-15s\n", con->da[put].name, con->da[put].age,
con->da[put].sex, con->da[put].tele, con->da[put].address);
}
else
{
printf("找不到请重新输入:\n");
}
}
}
同样使用查找函数找到后,重新对该结构体进行赋值。
//修改联系人
void modify_contact(contact* con)
{
assert(con);
int put = -1;
while (put == -1)
{
printf("请输入要修改的人姓名:\n");
char name[25] = { "0" };
scanf("%s", name);
put = look_contact(con, name);
if (put > -1)
{
printf("%-20s %-5s %-5s %-10s %-15s\n", "姓名", "年龄", "性别", "电话", "地址");
printf("%-15s %-5d %-5s %-15s %-15s\n", con->da[put].name, con->da[put].age,
con->da[put].sex, con->da[put].tele, con->da[put].address);
}
else
{
printf("找不到请重新输入:\n");
}
}
printf("开始修改-请输入名字:\n");
scanf("%s", con->da[put].name);
printf("请输入年龄:\n");
scanf("%d", &(con->da[put].age));
printf("请输入性别:\n");
scanf("%s", con->da[put].sex);
printf("请输入电话号码:\n");
scanf("%s", con->da[put].tele);
printf("请输入地址:\n");
scanf("%s", con->da[put].address);
printf("输入完毕,修改成功\n");
}
将所有段函数整合起来后便可以得到通讯录
哈,谢谢各位同志的阅读,然后呢如果觉得本文对您有所帮助的话,还给个免费的赞吧
Thanks♪(・ω・)ノ
(期待一下,要是有分享和收藏更好啦