C项目开发—通讯录(三) 删除、修改、搜索功能、源码发放

一、删除功能

删除联系人的函数:

思路:

 1> 让用户输入要删除的数据的编号

 2> 判断编号是否合法

 3> 让用户再次确定删除

 4> 开始删除数组元素

   1)删除的元素正好是数组最后一个元素,只需要让联系人-1

   2)如果删除的不是数组的最后一个元素,需要移动元素,联系人-1

 5> 删除文件内容

实现:

void doDelete()
{
	printf("你选择的是删除联系人,请按提示操作 \n");

	// 显示出列表
	doList();
	int no;
	printf("请输入需要删除的联系人的编号 \n");
	scanf("%d", &no);

	// 判断是否符合 调用validateInput方法 
	// true表示validateInput返回值是1
	if (validateInput(no, 1, totalContactCount))
	{
		return ;    // 不合法的话不往下执行率
	}
	// 确定删除
	int flag;
	printf("你确定要删除联系人么(删除之后无法恢复)?1.确定 0.取消 \n");
	scanf("%d", &flag);
	if (flag)
	{
		// 判断删除的元素是不是最后一个
		if (no == totalContactCount)
		{
			totalContactCount--;
			// 不过最后一个还是占用内存
		} else
		{
			for (int i = no; i < totalContactCount; i++)
			{
				contacts[i-1] = contacts[i];
			}

			// 总人数-1
			totalContactCount--;
		}
	}
}

演示:

二、 修改联系人

修改联系人信息

思路:

 1> 让用户输入要修改的联系人的编号

 2> 判断编号是否合法

 3> 让用户输入新的姓名,电话

 4> 确定?

 5> 开始修改联系人信息

 6> 更新到文件中

实现:

void doAmend()
{
	printf("你选择的是修改联系人,请按提示操作 \n");

	// 首先显示联系人
	doList();

	int no;
	printf("请输入需要修改的联系人的编号 \n");
	scanf("%d", &no);

	// 判断编号是否合法 1 - totalContactCount
	if (validateInput(no, 1, totalContactCount))
	{
		return ;
	}

	// 编号正确的话
	// 提示用户输入新用户名, 并接收
	// 保存
	char name1[NAMELEN];
	char tel[NUMLEN];

	printf("请输入联系人姓名(*注意联系人姓名中间不能有空格) \n");
	scanf("%s", name1);

	// 提示用户输入电话号码, 并接收
	printf("请输入电话号码(*注意联系人姓名中间不能有空格)\n");
	scanf("%s", tel);

	// 确定修改
	int flag;
	printf("你确定要修改联系人么(确定后信息将修改)?1.确定 0.取消 \n");
	scanf("%d", &flag);
	if (flag)
	{
		// 确定修改,更新数组
		strcpy(contacts[no - 1].name, name1);
		strcpy(contacts[no - 1].telNum, tel);
	}

	// 写入到文件中, 同步更新到文件中
   WriteFile();
}
演示:

三、搜索联系人

搜索联系人信息

思路:

 1> 提示用户输入要查找的联系人的姓名

 2> 遍历数组,查找是否有这个人

   1)输入的姓名和contacts[i].name 比较

   2)搜索不到 遍历一遍都没有这个联系人,提示查找不到;

 3> 查找到了,显示电话号码

 4> 没查找到,提示没有这个人

实现:

void doSearchByName()
{
	printf("你选择的是搜索联系人,请按提示操作 \n");

	// 输入联系人姓名
	printf("请输入联系人姓名 \n");
	char name2[NAMELEN];   // 暂时保存输入的联系人的名称
	scanf("%s", name2);

	int i;
	for (i = 0; i < totalContactCount; i++)
	{
		// if (contacts[i].name = name2) 字符串比较不能这个
		if (strcmp(name2, contacts[i].name) == 0)
		{
			// 打印出来联系人的电话号码
			printf("你搜索的联系人 %s 的电话号码是:%s \n", name2, contacts[i].telNum);
			break; // 循环停止
		}
	}
	if (i == totalContactCount)
	{
		printf("对不起,找不到该联系人");
	}

}

演示:

源码地址:http://download.csdn.net/detail/haojie2014/9265145

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值