购物网站怎么做代码,网站制作案例 立邦,第一ppt网,wordpress拼音点击蓝字关注我们一、通讯录简介实现一个通讯录#xff1b;通讯录可以用来存储1000个人的信息#xff0c;每个人的信息包括#xff1a;姓名、性别、年龄、电话、住址提供方法#xff1a;添加联系人信息删除指定联系人信息查找指定联系人信息修改指定联系人信息显示所有联系…点击蓝字关注我们一、通讯录简介实现一个通讯录通讯录可以用来存储1000个人的信息每个人的信息包括姓名、性别、年龄、电话、住址提供方法添加联系人信息删除指定联系人信息查找指定联系人信息修改指定联系人信息显示所有联系人信息清空所有联系人以名字排序所有联系人二、分模块实现1、添加联系人信息静态版本//添加联系人
void Addcontact(Contact* pc)
{assert(pc);if (pc-sz Max){printf(通讯录已满,无法添加\n);return;}printf(请输入名字:);scanf(%s, pc-data[pc-sz].name);printf(请输入性别:);scanf(%s, pc-data[pc-sz].sex);printf(请输入年龄:);scanf(%d, pc-data[pc-sz].age);printf(请输入号码:);scanf(%s, pc-data[pc-sz].tele);printf(请输入住址:);scanf(%s, pc-data[pc-sz].addr);pc-sz;printf(添加成功\n);
}动态版本void Addcontact(Contact* pc)
{// 动态版本assert(pc);if (pc-sz pc-Capacity){PeoInfo* tmp realloc(pc-data, (pc-Capacity 2) * sizeof(PeoInfo));if (tmp ! NULL){pc-data tmp;}else{perror(realloc:pc-data);return;}pc-Capacity 2;printf(增容成功\n);printf(请输入名字:);scanf(%s, pc-data[pc-sz].name);printf(请输入性别:);scanf(%s, pc-data[pc-sz].sex);printf(请输入年龄:);scanf(%d, pc-data[pc-sz].age);printf(请输入号码:);scanf(%s, pc-data[pc-sz].tele);printf(请输入住址:);scanf(%s, pc-data[pc-sz].addr);pc-sz;printf(添加成功\n);}
}2、删除指定联系人信息//删除联系人
void Deletecontact(Contact* pc)
{assert(pc);char name[Name_Max];if (pc-sz 0){printf(通讯录已空无法删除\n);}printf(请输入要删除联系人的名字:);scanf(%s, name);int pos FindByname(pc, name);if (pos -1){printf(未找到指定联系人\n);return;}else{int i pos;for (i pos; i pc-sz - 1; i){pc-data[i] pc-data[i 1];}pc-sz--;printf(删除成功\n);}
}3、查找指定联系人信息//查找联系人
void Searchcontact(Contact* pc)
{assert(pc);char name[Name_Max];printf(请输入要查找的联系人名字:);scanf(%s, name);int pos FindByname(pc, name);if (pos -1){printf(未找到指定联系人\n);return;}printf(%-20s %-5s %-5s %-12s %-30s\n, 姓名, 性别, 年龄, 号码, 住址);printf(%-20s %-5s %-5d %-12s %-30s\n, pc-data[pos].name, pc-data[pos].sex, pc-data[pos].age, pc-data[pos].tele, pc-data[pos].addr);
}4、修改指定联系人信息//修改菜单
void menu1()
{printf(***********************\n);printf(****1.姓名 2.性别 ****\n);printf(****3.年龄 4.号码 ****\n);printf(****5.住址 0.返回 ****\n);printf(***********************\n);
}//修改联系人
void Modifycontact(Contact* pc)
{assert(pc);char name[Name_Max];int input 0;printf(请输入修改联系人的名字:);scanf(%s, name);int pos FindByname(pc, name);if (pos -1){printf(未找到指定联系人\n);return;}printf(%-20s %-5s %-5s %-12s %-30s\n, 姓名, 性别, 年龄, 号码, 住址);printf(%-20s %-5s %-5d %-12s %-30s\n, pc-data[pos].name, pc-data[pos].sex, pc-data[pos].age, pc-data[pos].tele, pc-data[pos].addr);do{menu1();printf(请选择要修改的内容:);scanf(%d, input);switch (input){case 1:printf(请输入名字:);scanf(%s, pc-data[pos].name);printf(修改成功\n);break;case 2:printf(请输入性别:);scanf(%s, pc-data[pos].sex);printf(修改成功\n);break;case 3:printf(请输入年龄:);scanf(%d, pc-data[pos].age);printf(修改成功\n);break;case 4:printf(请输入号码:);scanf(%s, pc-data[pos].tele);printf(修改成功\n);break;case 5:printf(请输入住址:);scanf(%s, pc-data[pos].addr);printf(修改成功\n);break;case 0:printf(退出修改\n);break;default:printf(选择错误\n);break;}} while (input);
}5、显示所有联系人信息//打印通讯录
void Printcontact(Contact* pc)
{assert(pc);if (pc-sz 0){printf(通讯录为空\n);return;}int i 0;printf(%-20s %-5s %-5s %-12s %-30s\n, 姓名, 性别, 年龄, 号码, 住址);for (i 0; i pc-sz; i){printf(%-20s %-5s %-5d %-12s %-30s\n, pc-data[i].name, pc-data[i].sex, pc-data[i].age, pc-data[i].tele, pc-data[i].addr);}
}6、清空所有联系人静态版本//通讯录初始化
void InitContact(Contact* pc)
{assert(pc);memset(pc-data, 0, sizeof(pc-data));pc-sz 0;
}//清空联系人
void Emptycontact(Contact* pc, void(*p)(Contact*))
{InitContact(pc);printf(清空成功\n);
}动态版本void InitContact(Contact* pc)
{assert(pc);PeoInfo* tmp (PeoInfo*)malloc(Default_Max * sizeof(PeoInfo));if (tmp ! NULL){pc-data tmp;}else{perror(PeoInfo*)malloc:);return;}memset(pc-data, 0, Default_Max * sizeof(PeoInfo));pc-sz 0;pc-Capacity Default_Max;
}
//清空联系人
void Emptycontact(Contact* pc, void(*p)(Contact*))
{InitContact(pc);printf(清空成功\n);
}7、以名字排序所有联系人//排序联系人int cmp_name(const void* e1, const void* e2)
{return strcmp(((PeoInfo*)e1)-name, ((PeoInfo*)e2)-name);
}
void Sortcontact(Contact* pc)
{int sz pc-sz;qsort(pc-data, sz, sizeof(pc-data[0]), cmp_name);printf(排序成功\n);
}8、销毁通讯录释放void Freecontact(Contact* pc)
{free(pc-data);pc-Capacity 0;pc-sz 0;printf(销毁成功\n);
}三、菜单界面#define _CRT_SECURE_NO_WARNINGS 1
#includecontact.hvoid menu()
{printf(*****************************\n);printf(**** 1.add 2.delete ****\n);printf(**** 3.search 4.modify ****\n);printf(**** 5.print 6.empty ****\n);printf(**** 7.sort 0.exit ****\n);printf(*****************************\n);
}
void test()
{Contact Con;//通讯录InitContact(Con); //初始化通讯录int input 0;do {input 0;menu();printf(请选择:);scanf(%d, input);switch (input){case add:Addcontact(Con);break;case delete:Deletecontact(Con);break;case search:Searchcontact(Con);break;case modify:Modifycontact(Con);break;case print:Printcontact(Con);break;case empty:Emptycontact(Con, InitContact);break;case sort:Sortcontact(Con);break;case 0:Freecontact(Con);printf(退出通讯录\n);break;default:printf(选择错误\n);break;}} while (input);
}
int main()
{test();return 0;
}四、头文件声明#define _CRT_SECURE_NO_WARNINGS 1
#includestdio.h
#includestring.h
#includeassert.h
#includestdlib.h
//常量定义
enum Option
{//exit,add1,delete,search,modify,print,empty,sort
};#define Max 1000
#define Name_Max 20
#define Sex_Max 5
#define Tele_Max 12
#define Addr_Max 30
#define Default_Max 3//类型声明//联系人结构体
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;int sz;int Capacity;
}Contact;//静态版本
//1000个联系人 与已存个数结构体
//typedef struct Contact
//{
// PeoInfo data[Max];
// int sz;
//}Contact;//函数声明//初始化通讯录
void InitContact(Contact* pc);//添加联系人
void Addcontact(Contact* pc);//打印通讯录
void Printcontact(Contact* pc);//删除联系人
void Deletecontact(Contact* pc);//查找联系人
void Searchcontact(Contact* pc);//修改联系人
void Modifycontact(Contact* pc);//清空联系人
void Emptycontact(Contact* pc,void(*p)(Contact*));//排序联系人
void Sortcontact(Contact* pc);//销毁通讯录
void Freecontact(Contact* pc);如果你年满18周岁以上又觉得学【C语言】太难想尝试其他编程语言那么我推荐你学Python现有价值499元Python零基础课程限时免费领取限10个名额▲扫描二维码-免费领取戳“阅读原文”我们一起进步