宜春做网站的,亚马逊网站推广怎么做,广州互联网大厂公司有哪些,泰州公司注册思路#xff1a;
将代码分成三个模块#xff0c;头文件contact.h#xff1a;声明函数#xff0c;定义结构体 test.c测试类#xff0c;contact.c用来实现通讯录中的函数功能
1.打印菜单#xff0c;让用户进行选择
2.定义一个结构体PeoInfo#xff0c;其中包含联系人的…思路
将代码分成三个模块头文件contact.h声明函数定义结构体 test.c测试类contact.c用来实现通讯录中的函数功能
1.打印菜单让用户进行选择
2.定义一个结构体PeoInfo其中包含联系人的信息如姓名等。将PeoInfo定义一个100大小的数组data与count封装再同一结构体Contact中可以这个count来记录data数组的增删查改因为初始化为0后可以作为数组data的下标
3.用Contact创建一个con成员并初始化。但结构体数组要想全部成员都进行初始化需要用到
void * memset ( void * ptr, int value, size_t num ) 函数。4.功能实现添加成员后count删除成员后count--,访问成员时则以下循环就行for i in range(0,pc-count)当然查找删除修改都需要用到查找函数。排序可以用库函数qsort来实现。
5.代码如下
头文件contact.h
#pragma once#include stdio.h
#include string.h
#include assert.h
#include stdlib.h#define MAX_CONTACTS 100//定义联系人
typedef struct PenInfo {char name[20];int age;char sex[10];char tele[12];char addr[30];
}PenInfo;//通讯录所包含内容
typedef struct Contact {PenInfo data[MAX_CONTACTS];int count;
}Contact;//初始化联系人列表
void Initcontact(Contact *pc);//添加联系人
void Addcontact(Contact *pc);//删除练习人
void Delcontact(Contact* pc);//显示联系人
void Showcontact(const Contact* pc); //查找联系人
void Searchcontact(Contact* pc);//修改联系人
void Modifycontact(Contact* pc);//排序
void Sortcontact(Contact* pc); contact.c:
#define _CRT_SECURE_NO_WARNINGS#include contact.hvoid Initcontact(Contact* pc) {memset(pc-data, 0, sizeof(pc-data));pc-count 0;
}void Addcontact(Contact* pc){assert(pc);if (pc-count 100) {printf(联系人已满无法添加\n);return;}printf(请输入联系人名字);scanf(%s, pc-data[pc-count].name);printf(请输入联系人年龄);scanf(%d, (pc-data[pc-count].age));printf(请输入联系人性别);scanf(%s, pc-data[pc-count].sex);printf(请输入联系人电话);scanf(%s, pc-data[pc-count].tele);printf(请输入联系人地址);scanf(%s, pc-data[pc-count].addr);pc-count;printf(添加成功\n);
}void Showcontact(const Contact* pc) {assert(pc);if (pc-count 0) {printf(还没添加联系人\n);return;}printf(%-20s\t%-3s\t%-10s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);printf(-----------------------------------------------------------------------------\n);for (int i 0; i pc-count; i) {printf(%-20s\t%-5d\t%-10s\t%-12s\t%-30s, pc-data[i].name,pc-data[i].age,pc-data[i].sex,pc-data[i].tele,pc-data[i].addr);printf(\n);printf(-----------------------------------------------------------------------------\n);}
}//查找联系人
static int Findcontact(Contact* pc, char* name) {assert(pc);for (int i 0; i pc-count; i) {if (strcmp(name, pc-data[i].name) 0) {return i;}}return -1;
}
void Delcontact(Contact* pc) {assert(pc);char name[20] { 0 };printf(请输入要删除的联系人名字);scanf(%s, name);//查找int pos Findcontact(pc, name);//删除if (pos -1) {printf(没有该联系人\n);return;}for (int i pos; i pc-count 1; i) {pc-data[i] pc-data[i 1];}pc-count--;printf(删除成功\n);}void Searchcontact(Contact* pc) {assert(pc);char name[20] { 0 };printf(请输入要查找的联系人名字);scanf(%s, name);//查找int pos Findcontact(pc, name);//删除if (pos -1) {printf(没有该联系人\n);return;}else {printf(找到了\n);printf(%-20s\t%-3s\t%-10s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);printf(-----------------------------------------------------------------------------\n);printf(%-20s\t%-5d\t%-10s\t%-12s\t%-30s, pc-data[pos].name,pc-data[pos].age,pc-data[pos].sex,pc-data[pos].tele,pc-data[pos].addr);printf(\n);printf(-----------------------------------------------------------------------------\n);}}void Modifycontact(Contact* pc) {assert(pc);char name[20] { 0 };printf(请输入要修改的联系人的名字);scanf(%s, name);//查找int pos Findcontact(pc, name);//删除if (pos -1) {printf(没有该联系人\n);return;}else {printf(修改后联系人名字);scanf(%s, pc-data[pos].name);printf(修改后联系人年龄);scanf(%d, (pc-data[pos].age));printf(修改后联系人性别);scanf(%s, pc-data[pos].sex);printf(修改后联系人电话);scanf(%s, pc-data[pos].tele);printf(修改后联系人地址);scanf(%s, pc-data[pos].addr);printf(\n);printf(修改成功\n);}
}//按姓名排序函数
int Sort_by_name(const void* e1, const void* e2) {return strcmp(((PenInfo*)e1)-name, ((PenInfo*)e2)-name);
}
//按年龄排序
int Sort_by_age(const void* e1, const void* e2) {if (((PenInfo*)e1)-age ((PenInfo*)e2)-age){return -1;}if (((PenInfo*)e1)-age ((PenInfo*)e2)-age) {return 1;}if (((PenInfo*)e1)-age ((PenInfo*)e2)-age) {return 0;}
}
void Sortcontact(Contact* pc) {assert(pc);int chiose;printf((1.按姓名排序 2.按年龄排序));scanf(%d, chiose);if (chiose 1) {qsort(pc-data,pc-count,sizeof(PenInfo), Sort_by_name);printf(排序成功\n);}else if (chiose 2) {qsort(pc-data, pc-count, sizeof(PenInfo), Sort_by_age);printf(排序成功\n);}else {printf(无效输入\n);return;}
}
test.c:
#define _CRT_SECURE_NO_WARNINGS#include contact.h//创建菜单
void menu() {printf(------------My ContactBook------------\n);printf(-----------1.Add linkman ------------\n);printf(-----------2.Del linkman ------------\n);printf(-----------3.Show linkman ------------\n);printf(-----------4.Search linkman ----------\n);printf(-----------5.Modify linkman ----------\n);printf(-----------6.Sort linkman -----------\n);printf(-----------0.Exit menu -------------\n);}
int main() { int input 0;//创建联系人Contact con;Initcontact(con);do {menu();printf(请选择对应功能的编号:);scanf(%d, input);switch (input) {case 1: Addcontact(con);break;case 2:Delcontact(con);break;case 3:Showcontact(con);break;case 4:Searchcontact(con);break;case 5:Modifycontact(con);break;case 6:Sortcontact(con);break;case 0:printf(退出成功\n);break;default :printf(选择错误\n);break;}} while (input);return 0;
}
这是一个静态版本还有许多功能尚未完善等待后续开发。