您的位置:首页 > 新闻 > 热点要闻 > 设计高端网站哪家好_外贸拓客软件有用吗_seo网络推广怎么做_网站首页制作

设计高端网站哪家好_外贸拓客软件有用吗_seo网络推广怎么做_网站首页制作

2025/1/10 23:43:30 来源:https://blog.csdn.net/cloud_disspated/article/details/142886368  浏览:    关键词:设计高端网站哪家好_外贸拓客软件有用吗_seo网络推广怎么做_网站首页制作
设计高端网站哪家好_外贸拓客软件有用吗_seo网络推广怎么做_网站首页制作

功能要求

 能够保存联系人信息:名字、性别、年龄、电话、地址等

增加联系人信息

删除指定联系人

查找制定联系人

修改指定联系人

显示联系人信息

代码实现

头文件

seqlist.h

要包含上“contact.h”,否则不能使用contact.h里定义的好的结构

#include"contact.h"

修改数据类型

//typedef int SLDataType;
typedef peoInfo SLDataType;
//方便后续类型的替换
//给int取别名,方便修改数组存储的数据类型
//例如将int类型修改为char类型,在.c文件中的int都要一一替换成chartypedef struct SeqList
{SLDataType* arr;int size;//有效数据个数int capacity;//空间大小   
}SL;

contact.h
定义联系人结构体
#define NAME_MAX 20
#define GENDER_MAX 10
#define TEL_MAX 20
#define ADDR_MAX 100
//定义联系人数据
// 姓名 性别 年龄 电话 地址
typedef struct personInfo 
{char name[NAME_MAX];char gender[GENDER_MAX];int age;char tel[TEL_MAX];char addr[ADDR_MAX];
}peoInfo;
前置声明

contact.h文件中需要用到seqlist中定义的结构体,但头文件不能互相包含,所以需要前置声明

struct SeqList;
//前置声明,不能用SL,要用最开始的名字
//SL是在seqlist.h文件定义好结构体之后取的别名,在这里只是前置声明不能直接使用
typedef struct SeqList  Contact;
//给顺序表改个名,方便区分
通讯录的相关方法
//通讯录的相关方法
//通讯录的初始化
void ContactInit(Contact* con);
//通讯录的销毁
void ContactDesTroy(Contact* con);
//通讯录添加数据
void ContactAdd(Contact* con);
//通讯录删除数据
void ContactDel(Contact* con);
//通讯录的修改
void ContactModify(Contact* con);
//通讯录的查找
void ContactFind(Contact* con);
//展示通讯录数据
void ContactShow(Contact* con);

源文件

seqlist.c

顺序表的查找要注释掉

结构体和结构体的判断不能直接 ==

//查找
//int SLFind(SL* ps, SLDataType x)
//{
//	assert(ps);
//	for (int i = 0; i < ps->size; i++)
//	{
//		if (  ps->arr[i] == x)
//		{
//			return i;
//		}
//	}
//	return -1;
//}

contact.c
#include "Contact.h"
#include "SeqList.h"
//通讯录的初始化
void ContactInit(Contact* con)
{//实际上是顺序表的初始化SLInit(con);
}
//通讯录的销毁
void ContactDesTroy(Contact* con)
{SLDestroy(con);
}
//通讯录添加数据
void ContactAdd(Contact* con)
{//peoInfo info;printf("请输入要添加的联系人姓名:\n");scanf("%s", info.name);printf("请输入要添加的联系人性别:\n");scanf("%s", info.gender);printf("请输入要添加的联系人年龄:\n");scanf("%d", &info.age);printf("请输入要添加的联系人电话:\n");scanf("%s", info.tel);printf("请输入要添加的联系人住址:\n");scanf("%s", info.addr);//往通讯录里插入数据SLPushBack(con, info);
}int FindByName(Contact* con, char name[])
{for (int i = 0; i < con->size; i++){if (0 == strcmp(con->arr[i].name, name)){//找到了return i;}}//没找到return -1;
}
//通讯录删除数据
void ContactDel(Contact* con)
{//要删除的数据必须要存在//查找char name[NAME_MAX];printf("请输入要删除的联系人姓名:\n");scanf("%s", name);int find = FindByName(con, name);if (find < 0){printf("要删除的联系人不存在!\n");return;}//要知道要删除的联系人对应的下标SLErase(con, find);printf("删除成功!\n");
}
//通讯录的修改
void ContactModify(Contact* con)
{//要修改的联系人数据存在char name[NAME_MAX];printf("请输入你要修改的联系人姓名\n");scanf("%s", name);int find = FindByName(con, name);if (find < 0){printf("要修改的联系人数据不存在!\n");return;}//直接修改peoInfo info;printf("请输入新的姓名:\n");scanf("%s", con->arr[find].name);printf("请输入新的性别:\n");scanf("%s", con->arr[find].gender);printf("请输入新的年龄:\n");scanf("%d", &con->arr[find].age);printf("请输入新的电话:\n");scanf("%s", con->arr[find].tel);printf("请输入新的住址:\n");scanf("%s", con->arr[find].addr);printf("修改成功!\n");
}
//通讯录的查找
void ContactFind(Contact* con)
{char name[NAME_MAX];printf("请输入要查找的联系人姓名\n");scanf("%s", name);int find = FindByName(con, name);if (find < 0){printf("要查找的联系人数据不存在!\n");return;}printf("查找成功!\n");printf("%s %s %s %s %s\n", "姓名" ,"性别", "年龄", "电话", "地址");printf("%3s %3s %3d %3s %3s\n",con->arr[find].name,con->arr[find].gender,con->arr[find].age,con->arr[find].tel,con->arr[find].addr);
}//展示通讯录数据
void ContactShow(Contact* con)
{//表头:姓名 性别 年龄 电话 地址printf("%s %s %s %s %s\n", "姓名" ,"性别", "年龄" ,"电话" ,"地址");//遍历通讯录,按照格式打印每个联系人数据for (int i = 0; i < con->size; i++){printf("%3s %3s %3d %3s %3s\n",//手动调整格式con->arr[i].name,con->arr[i].gender,con->arr[i].age,con->arr[i].tel,con->arr[i].addr);}
}
test.c
#include"SeqList.h"
void menu()
{printf("*****************通讯录*****************\n");printf("******1.增加联系人  2.删除联系人********\n");printf("******3.修改联系人  4.查找联系人********\n");printf("******5.展示联系人  0.退出通讯录********\n");printf("****************************************\n");
}
int main()
{int op = -1;Contact con;ContactInit(&con);do {menu();printf("请选择你的操作:\n");scanf("%d", &op);//根据不同的op执行不同的操作switch (op){case 1:ContactAdd(&con);break;case 2:ContactDel(&con);break;case 3:ContactModify(&con);break;case 4:ContactFind(&con);break;case 5:ContactShow(&con);break;case 0:printf("退出通讯录...\n");break;default:printf("输入错误,请重新输入\n");break;}} while (op != 0);ContactDesTroy(&con);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com