0
点赞
收藏
分享

微信扫一扫

vue+elementui实现app布局小米商城,样式美观大方

源码之路 2023-06-17 阅读 81

目录

前言

通讯录实现的思路与逻辑

通讯录具体实现步骤

完整代码展现

contact.h文件

contact.c文件

test.c文件


前言

通讯录实现的思路与逻辑

通讯录具体实现步骤

  • 菜单界面
void menu()
{   
	printf("********************************\n");
	printf("******1.Add     2.Del   ********\n");
	printf("******3.Search  4.Modify********\n");
	printf("******5.Show    0.Exit**********\n");
	printf("********************************\n");
}

void test()
{
	
	int input = 0;
	do
	{
		menu();
		printf("请输入选择:> ");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			break;
		case 2:
			break;
		case 3: 
			break;
		case 4:
			break;
		case 5:
			break;
		case Exit:
			printf("退出通讯录\n");
			break;
		default:
			printf("输入错误,请重新输入!\n");
			break;
		}
	} 
	while (input);
}
int main()
{
	test();
	return 0;
}
  • 创建通讯录
typedef struct PeoInfo
{
	char name[20];
	int age;
	char sex[5];
	char tele[12];
	char addr[30];
}PeoInfo;
typedef struct Contact
{
	PeoInfo data[1000];//可以存放1000个人的信息
	int sz;//记录通讯录中已经保存的联系人的个数
}Contact;
#define Data_Max 1000
#define Name_Max 20
#define Sex_Max 5
#define Tele_Max 12
#define Addr_Max 30
enum Option
{
	Exit,// 0
	Add,//  1
	Del,//  2
	Search,//3
	Modify,//4
	Show  //5
};

菜单界面修改如下:

void menu()
{   
	printf("********************************\n");
	printf("******1.Add     2.Del   ********\n");
	printf("******3.Search  4.Modify********\n");
	printf("******5.Show    0.Exit**********\n");
	printf("********************************\n");
}

void test()
{
    //创建通讯录
	Contact con;

	int input = 0;
	do
	{
		menu();
		printf("请输入选择:> ");
		scanf("%d", &input);
		switch (input)
		{
		case Add:
			break;
		case Del:
			break;
		case Search: 
			break;
		case Modify:
			break;
		case Show:
			break;
		case Exit:
			printf("退出通讯录\n");
			break;
		default:
			printf("输入错误,请重新输入!\n");
			break;
		}
	} 
	while (input);
}
int main()
{
	test();
	return 0;
}

结构体个人信息修改如下:

typedef struct PeoInfo
{
	char name[Name_Max];
	int age;
	char sex[Sex_Max];
	char tele[Tele_Max];
	char addr[Addr_Max];
}PeoInfo;

通讯录信息修改如下:

typedef struct Contact
{
	PeoInfo data[Data_Max];//可以存放1000个人的信息
	int sz;//记录通讯录中已经保存的联系人的个数
}Contact;
  • 初始化通讯录
//初始化通讯录
void InitContact(Contact * pc)
{
	assert(pc != NULL);
	memset(pc->data, 0, sizeof(pc->data));//pc->data相当于data数组的数组名,即data数组起始位置的地址;
	pc->sz = 0;
}
  • 增加联系人的信息

//通讯录初始化后,里面数据为0;
//当我们增加一个人的信息,置于data数组下标为sz的位置;
void AddContact(Contact * pc)
{
	assert(pc != NULL);
	//考虑异常情况 当通讯录数据存放满,直接返回
	if (pc->sz == Data_Max)
	{
		printf("通讯录已满,无法添加\n");
		return;
	}
	//1.录入信息
	printf("请输入名字: ");
	scanf("%s", (pc->data[pc->sz]).name);
	printf("请输入年龄: ");
	scanf("%d", &(pc->data[pc->sz]).age);
	printf("请输入性别: ");
	scanf("%s", (pc->data[pc->sz]).sex);
	printf("请输入电话号码: ");
	scanf("%s", (pc->data[pc->sz]).tele);
	printf("请输入地址: ");
	scanf("%s", (pc->data[pc->sz]).addr);
	//2.sz++;
	pc->sz++;
	printf("添加成功\n");
}
  • 显示通讯录中的信息
void ShowContact(const Contact * pc)
{
	assert(pc != NULL);

	int i = 0;
	printf("%-20s %-5s %-5s %-12s %-30s\n", "姓名", "年龄", "性别", "电话", "地址");
	for (i = 0; i < pc->sz; i++)
	{
		printf("%-20s %-5d %-5s %-12s %-30s\n", pc->data[i].name, pc->data[i].age,
			pc->data[i].sex,pc->data[i].tele, pc->data[i].addr);
	}

}
  • 删除指定联系人的信息
int FindByName(const Contact* pc,char name[])
{
	assert(pc != NULL);
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		//比较姓名—实际比较字符串—strcmp()函数
		if (strcmp(pc->data[i].name, name) == 0)
		{
			return i;
		}
	}
	//遍历完整个数组,仍然没有返回,说明找不到;
	return -1;
}

//删除指定联系人的信息
void DelContact(Contact *pc)
{
	assert(pc != NULL);
	//如果通讯录里面元素为0,直接返回;
	if (pc->sz == 0)
	{
		printf("通讯录已空,无法删除\n");
		return;
	}
	//根据姓名查找
	char name[Name_Max] = { 0 };
	printf("请输入姓名:");
	scanf("%s", name);
	//根据名字找到所对应的元素,找到了返回data数组的下标,找不到返回-1;
	int pos=FindByName(pc,name);
	if (pos == -1)
	{
		printf("联系人不存在,无法删除\n");
		return;
	}
	//删除  
	int j = 0;

	for (j = pos; j <pc->sz-1; j++)
	{
		pc->data[j] = pc->data[j + 1];
	}
	pc->sz--;
	printf("删除成功\n");
}
  • 查找指定联系人的信息;
void SearchContact(const Contact* pc)
{
	assert(pc != NULL);
	char name[Name_Max] = { 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 %-5d %-5s %-12s %-30s\n", pc->data[pos].name, pc->data[pos].age,
			pc->data[pos].sex, pc->data[pos].tele, pc->data[pos].addr);

}
  • 修改联系人的相关信息
void ModContact(Contact* pc)
{
	assert(pc != NULL);
	//先根据姓名查找要修改的元素
	char name[Name_Max] = { 0 };
	printf("请输入修改人的姓名:");
	scanf("%s", name);
	int pos = FindByName(pc, name);
	if (pos == -1)
	{
		printf("联系人不存在\n");
		return;
	}
	//重新输入该位置的信息;
	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");
}

完整代码展现

contact.h文件

# include <stdio.h>
# include <string.h>
# include <assert.h>

#define Data_Max 1000
#define Name_Max 20
#define Sex_Max 5
#define Tele_Max 12
#define Addr_Max 30

typedef struct PeoInfo
{
	char name[Name_Max];
	int age;
	char sex[Sex_Max];
	char tele[Tele_Max];
	char addr[Addr_Max];
}PeoInfo;
//通讯录实现得有空间保存联系人的信息并且记录当前联系人的个数;
//为了方便传参,封装成一个结构体;
typedef struct Contact
{
	PeoInfo data[Data_Max];//可以存放1000个人的信息
	int sz;//记录通讯录中已经保存的联系人的个数
}Contact;

//建立菜单功能和选项的关联使用枚举;
enum Option
{
	Exit,// 0
	Add,//  1
	Del,//  2
	Search,//3
	Modify,//4
	Show  //5
};

//函数的声明

//初始化通讯录
void InitContact(Contact * pc);

//增加联系人的信息
void AddContact(Contact * pc);

//显示通讯录中的信息
void ShowContact(const Contact * pc);

//删除指定联系人的信息
void DelContact(Contact *pc);

//查找指定联系人的信息
void SearchContact(const Contact* pc);

//修改联系人的相关信息
void ModContact(Contact* pc);

contact.c文件

# include "contact.h"
//初始化通讯录
void InitContact(Contact * pc)
{
	assert(pc != NULL);
	memset(pc->data, 0, sizeof(pc->data));//pc->data相当于data数组的数组名,即data数组起始位置的地址;
	pc->sz = 0;
}
//增加联系人的信息
//通讯录初始化后,里面数据为0;
//当我们增加一个人的信息,置于data数组下标为sz的位置;
void AddContact(Contact * pc)
{
	assert(pc != NULL);
	//考虑异常情况 当通讯录数据存放满,直接返回
	if (pc->sz == Data_Max)
	{
		printf("通讯录已满,无法添加\n");
		return;
	}
	//1.录入信息
	printf("请输入名字: ");
	scanf("%s", (pc->data[pc->sz]).name);
	printf("请输入年龄: ");
	scanf("%d", &(pc->data[pc->sz]).age);
	printf("请输入性别: ");
	scanf("%s", (pc->data[pc->sz]).sex);
	printf("请输入电话号码: ");
	scanf("%s", (pc->data[pc->sz]).tele);
	printf("请输入地址: ");
	scanf("%s", (pc->data[pc->sz]).addr);
	//2.sz++;
	pc->sz++;
	printf("添加成功\n");
}
//显示通讯录中的信息
void ShowContact(const Contact * pc)
{
	assert(pc != NULL);

	int i = 0;
	printf("%-20s %-5s %-5s %-12s %-30s\n", "姓名", "年龄", "性别", "电话", "地址");
	for (i = 0; i < pc->sz; i++)
	{
		printf("%-20s %-5d %-5s %-12s %-30s\n", pc->data[i].name, pc->data[i].age,
			pc->data[i].sex,pc->data[i].tele, pc->data[i].addr);
	}
}

int FindByName(const Contact* pc,char name[])
{
	assert(pc != NULL);
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		//比较姓名—实际比较字符串—strcmp()函数
		if (strcmp(pc->data[i].name, name) == 0)
		{
			return i;
		}
	}
	//遍历完整个数组,仍然没有返回,说明找不到;
	return -1;
}

//删除指定联系人的信息
void DelContact(Contact *pc)
{
	assert(pc != NULL);
	//如果通讯录里面元素为0,直接返回;
	if (pc->sz == 0)
	{
		printf("通讯录已空,无法删除\n");
		return;
	}
	//先根据姓名找到要删除的元素(不考虑重名)
	char name[Name_Max] = { 0 };
	printf("请输入姓名:");
	scanf("%s", name);
	//根据名字找到所对应的元素,找到了返回data数组的下标,找不到返回-1;
	int pos=FindByName(pc,name);
	if (pos == -1)
	{
		printf("联系人不存在,无法删除\n");
		return;
	}
	//删除  
	//删除方法-要删除指定位置的元素,只需从指定位置开始,后一个元素覆盖掉前一个元素即可,依次进行;
	int j = 0;

	for (j = pos; j <pc->sz-1; j++)
	{
		pc->data[j] = pc->data[j + 1];
	}
	pc->sz--;
	printf("删除成功\n");
}

//查找指定联系人的信息
void SearchContact(const Contact* pc)
{
	assert(pc != NULL);
	char name[Name_Max] = { 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 %-5d %-5s %-12s %-30s\n", pc->data[pos].name, pc->data[pos].age,
			pc->data[pos].sex, pc->data[pos].tele, pc->data[pos].addr);

}

//修改联系人的信息
void ModContact(Contact* pc)
{
	assert(pc != NULL);
	//先根据姓名查找要修改的元素
	char name[Name_Max] = { 0 };
	printf("请输入修改人的姓名:");
	scanf("%s", name);
	int pos = FindByName(pc, name);
	if (pos == -1)
	{
		printf("联系人不存在\n");
		return;
	}
	//重新输入该位置的信息;
	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");
}

test.c文件

# include "contact.h"
void menu()
{   
	printf("********************************\n");
	printf("******1.Add     2.Del   ********\n");
	printf("******3.Search  4.Modify********\n");
	printf("******5.Show    0.Exit**********\n");
	printf("********************************\n");
}

void test()
{
	//创建通讯录
	Contact con;
	
	//初始化通讯录
	InitContact(&con);
	int input = 0;
	do
	{
		menu();
		printf("请输入选择:> ");
		scanf("%d", &input);
		switch (input)
		{
		case Add:
			AddContact(&con);
			break;
		case Del:
			DelContact(&con);
			break;
		case Search: 
			SearchContact(&con);
			break;
		case Modify:
			ModContact(&con);
			break;
		case Show:
			ShowContact(&con);
			break;
		case Exit:
			printf("退出通讯录\n");
			break;
		default:
			printf("输入错误,请重新输入!\n");
			break;
		}
	} 
	while (input);
}
int main()
{
	test();
	return 0;
}
举报

相关推荐

0 条评论