C语言项目实战通讯录

【C语言】实战项目——通讯录 学会创建一个通讯录,对过往知识进行加深和巩固。 阅读详情

通讯录

我们需要用C语言模拟一个通讯录可以用来存储1000个人的信息

每个人的信息包括:

姓名、电话、性别、住址、年龄

功能包括:

  1. 新增联系人
  2. 删除联系人
  3. 查找联系人
  4. 修改联系人
  5. 排序所有联系人
  6. 打印所有联系人

一.通讯录菜单

void muea()
{
	printf("************************\n");
	printf("*** 1.增加    2.删除 ***\n");
	printf("*** 3.查找    4.修改 ***\n");
	printf("*** 5.排序    6.打印 ***\n");
	printf("***      0.结束      ***\n");
	printf("************************\n");
}

二.通讯录主函数

#include"contact.h"
void muea()
{
	printf("************************\n");
	printf("*** 1.增加    2.删除 ***\n");
	printf("*** 3.查找    4.修改 ***\n");
	printf("*** 5.排序    6.打印 ***\n");
	printf("***      0.结束      ***\n");
	printf("************************\n");
}
void test()
{
	int input = 0;
	contact con;
	Initcontact(&con);
	do
	{
		muea();
		printf("请选择>:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			ADDcontact(&con);
			break;
		case 2:
			sancontact(&con);
			break;
		case 3:
			cazhaocontact(&con);
			break;
		case 4:
			xiougaicontact(&con);
			break;
		case 5:
			paixucontact(&con);
			break;
		case 6:
			printcontact(&con);
			break;
		case 0:
			destroycontact(&con);
			printf("\n");
			break;
		default:
			printf("\n");
			break;
		}
	} while (input);
}

int main()
{
	test();
	return 0;
}

三.定义联系人及通讯录

在这里我们要用到结构体

typedef struct peinof
{
	char name[20];
	char set[10];
	int age;
	char tele[12];
	char addr[15];
}peinof;

typedef struct contact
{
	peinof data[MAX];
	int sz;
}contact;

在这利用两个结构体第一个是定义了一个人的信息,第二个是为了记录现在通讯录有多少个人

四.初始化通讯录

void Initcontact(contact* pc)
{
	pc->sz = 0;
	memset(pc->data, 0, sizeof(pc->data));
}

五.实现通讯录的各个功能

1.增加

void ADDcontact(contact* pc)
{
	if (pc->sz == MAX)
	{
		printf("通讯录已满\n");
		return;
	}

	printf("请输入名字\n");
	scanf("%s", pc->data[pc->sz].name);
	printf("请输入性别\n");
	scanf("%s", pc->data[pc->sz].set);
	printf("请输入年龄\n");
	scanf("%d", &pc->data[pc->sz].age);
	printf("请输入号码\n");
	scanf("%s", pc->data[pc->sz].tele);
	printf("请输入地址\n");
	scanf("%s", pc->data[pc->sz].addr);
	pc->sz++;
	printf("储存成功\n");
	return;
}

2.删除

int findbyname(contact* pc, char name[])
{
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		if (strcmp(pc->data[i].name, name) == 0)
		{
			return i;
		}
	}
	return -1;
}
void sancontact(contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通讯录为空\n");
		return;
	}
	char name[20];
	printf("请输入要查找的名字\n");
	scanf("%s", name);
	int pos = findbyname(pc, name);
	if (pos == -1)
	{
		printf("此人不存在\n");
		return;
	}
	int i = 0;
	for (i = pos; i < pc->sz - 1; i++)
	{
		pc->data[i] = pc->data[i + 1];
	}
	pc->sz--;
	printf("删除成功\n");
	return;
}

3.查找

void cazhaocontact(contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通讯录为空\n");
		return;
	}
	char name[20];
	printf("请输入要查找的名字\n");
	scanf("%s", name);
	int i = findbyname(pc, name);
	if (i == -1)
	{
		printf("此人不存在\n");
		return;
	}
	printf("%-20s %-10s %-5s %-12s %-15s\n", "名字", "性别", "年龄", "号码", "地址");
	printf("%-20s %-10s %-5d %-12s %-15s\n", pc->data[i].name, pc->data[i].set, pc->data[i].age, pc->data[i].tele, pc->data[i].addr);
	return;
}

4.修改

void mu()
{
	printf("************************\n");
	printf("*** 1.名字    2.性别 ***\n");
	printf("*** 3.年龄    4.号码 ***\n");
	printf("*** 5.地址    0.结束 ***\n");
	printf("************************\n");
}
void xiougaicontact(contact* pc)
{
	char name[20];
	printf("请输入要修改人的名字\n");
	scanf("%s", name);
	int i = findbyname(pc, name);
	if (i == -1)
	{
		printf("此人不存在\n");
		return;
	}
	int a = 0;
	do
	{
		mu();
		printf("请输入要修改的地方\n");
		scanf("%d", &a);
		switch (a)
		{
		case 1:
			printf("请输入名字\n");
			scanf("%s", pc->data[i].name);
			printf("修改成功\n");
			break;
		case 2:
			printf("请输入性别\n");
			scanf("%s", pc->data[i].set);
			printf("修改成功\n");
			break;
		case 3:
			printf("请输入年龄\n");
			scanf("%d", &pc->data[i].age);
			printf("修改成功\n");
			break;
		case 4:
			printf("请输入号码\n");
			scanf("%s", pc->data[i].tele);
			printf("修改成功\n");
			break;
		case 5:
			printf("请输入地址\n");
			scanf("%s", pc->data[i].addr);
			printf("修改成功\n");
			break;
		case 0:
			printf("修改结束\n");
			break;
		default:
			printf("输入错误请重新输入\n");
			break;
		}
	} while (a);
	return;
}

5.排序

void mu()
{
	printf("************************\n");
	printf("*** 1.名字    2.性别 ***\n");
	printf("*** 3.年龄    4.号码 ***\n");
	printf("*** 5.地址    0.结束 ***\n");
	printf("************************\n");
}
bool cmp(peinof x, peinof y)
{
	return x.age > y.age;
}
bool cnp(peinof x, peinof y)
{
	return strcmp(x.name, y.name) < 0;
}
bool xin(peinof x, peinof y)
{
	return strcmp(x.set, y.set) < 0;
}
bool hao(peinof x, peinof y)
{
	return strcmp(x.tele, y.tele) < 0;
}
bool addr(peinof x, peinof y)
{
	return strcmp(x.addr, y.addr) < 0;
}
void paixucontact(contact* pc)
{
	int a = 0;
	do
	{
		mu();
		printf("请输入要按什么排序\n");
		scanf("%d", &a);
		switch (a)
		{
		case 1:
			sort(pc->data, pc->data + pc->sz, cnp);
			printf("排序成功\n");
			break;
		case 2:
			sort(pc->data, pc->data + pc->sz, xin);
			printf("排序成功\n");
			break;
		case 3:
			sort(pc->data, pc->data + pc->sz, cmp);
			printf("排序成功\n");
			break;
		case 4:
			sort(pc->data, pc->data + pc->sz, hao);
			printf("排序成功\n");
			break;
		case 5:
			sort(pc->data, pc->data + pc->sz, addr);
			printf("排序成功\n");
			break;
		case 0:
			printf("排序结束\n");
			break;
		default:
			printf("输入错误请重新输入\n");
			break;
		}
	} while (a);
	return;
}

6.打印

void printcontact(const contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通讯录为空\n");
		return;
	}
	int i = 0;
	printf("%-20s %-10s %-5s %-12s %-15s\n", "名字", "性别", "年龄", "号码", "地址");
	for (i = 0; i < pc->sz; i++)
	{
		printf("%-20s %-10s %-5d %-12s %-15s\n", pc->data[i].name, pc->data[i].set, pc->data[i].age, pc->data[i].tele, pc->data[i].addr);
	}
}

具体效果大家可以自己去试

6.完整代码

首先在这里我把代码分成了三部分

主函数部分

​
#include"contact.h"
void muea()
{
	printf("************************\n");
	printf("*** 1.增加    2.删除 ***\n");
	printf("*** 3.查找    4.修改 ***\n");
	printf("*** 5.排序    6.打印 ***\n");
	printf("***      0.结束      ***\n");
	printf("************************\n");
}
void test()
{
	int input = 0;
	contact con;
	Initcontact(&con);
	do
	{
		muea();
		printf("请选择>:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			ADDcontact(&con);
			break;
		case 2:
			sancontact(&con);
			break;
		case 3:
			cazhaocontact(&con);
			break;
		case 4:
			xiougaicontact(&con);
			break;
		case 5:
			paixucontact(&con);
			break;
		case 6:
			printcontact(&con);
			break;
		case 0:
			destroycontact(&con);
			printf("\n");
			break;
		default:
			printf("\n");
			break;
		}
	} while (input);
}

int main()
{
	test();
	return 0;
}

​

实现各个自定义函数部分

#include"contact.h"
void Initcontact(contact* pc)
{
	pc->sz = 0;
	memset(pc->data, 0, sizeof(pc->data));
}
void ADDcontact(contact* pc)
{
	/*if (pc->sz == MAX)
	{
		printf("通讯录已满\n");
		return;
	}*/
	cheak_capacity(pc);

	printf("请输入名字\n");
	scanf("%s", pc->data[pc->sz].name);
	printf("请输入性别\n");
	scanf("%s", pc->data[pc->sz].set);
	printf("请输入年龄\n");
	scanf("%d", &pc->data[pc->sz].age);
	printf("请输入号码\n");
	scanf("%s", pc->data[pc->sz].tele);
	printf("请输入地址\n");
	scanf("%s", pc->data[pc->sz].addr);
	pc->sz++;
	printf("储存成功\n");
	return;
}
void printcontact(const contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通讯录为空\n");
		return;
	}
	int i = 0;
	printf("%-20s %-10s %-5s %-12s %-15s\n", "名字", "性别", "年龄", "号码", "地址");
	for (i = 0; i < pc->sz; i++)
	{
		printf("%-20s %-10s %-5d %-12s %-15s\n", pc->data[i].name, pc->data[i].set, pc->data[i].age, pc->data[i].tele, pc->data[i].addr);
	}
}
int findbyname(contact* pc, char name[])
{
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		if (strcmp(pc->data[i].name, name) == 0)
		{
			return i;
		}
	}
	return -1;
}
void sancontact(contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通讯录为空\n");
		return;
	}
	char name[20];
	printf("请输入要查找的名字\n");
	scanf("%s", name);
	int pos = findbyname(pc, name);
	if (pos == -1)
	{
		printf("此人不存在\n");
		return;
	}
	int i = 0;
	for (i = pos; i < pc->sz - 1; i++)
	{
		pc->data[i] = pc->data[i + 1];
	}
	pc->sz--;
	printf("删除成功\n");
	return;
}
void cazhaocontact(contact* pc)
{
	if (pc->sz == 0)
	{
		printf("通讯录为空\n");
		return;
	}
	char name[20];
	printf("请输入要查找的名字\n");
	scanf("%s", name);
	int i = findbyname(pc, name);
	if (i == -1)
	{
		printf("此人不存在\n");
		return;
	}
	printf("%-20s %-10s %-5s %-12s %-15s\n", "名字", "性别", "年龄", "号码", "地址");
	printf("%-20s %-10s %-5d %-12s %-15s\n", pc->data[i].name, pc->data[i].set, pc->data[i].age, pc->data[i].tele, pc->data[i].addr);
	return;
}
void mu()
{
	printf("************************\n");
	printf("*** 1.名字    2.性别 ***\n");
	printf("*** 3.年龄    4.号码 ***\n");
	printf("*** 5.地址    0.结束 ***\n");
	printf("************************\n");
}
void xiougaicontact(contact* pc)
{
	char name[20];
	printf("请输入要修改人的名字\n");
	scanf("%s", name);
	int i = findbyname(pc, name);
	if (i == -1)
	{
		printf("此人不存在\n");
		return;
	}
	int a = 0;
	do
	{
		mu();
		printf("请输入要修改的地方\n");
		scanf("%d", &a);
		switch (a)
		{
		case 1:
			printf("请输入名字\n");
			scanf("%s", pc->data[i].name);
			printf("修改成功\n");
			break;
		case 2:
			printf("请输入性别\n");
			scanf("%s", pc->data[i].set);
			printf("修改成功\n");
			break;
		case 3:
			printf("请输入年龄\n");
			scanf("%d", &pc->data[i].age);
			printf("修改成功\n");
			break;
		case 4:
			printf("请输入号码\n");
			scanf("%s", pc->data[i].tele);
			printf("修改成功\n");
			break;
		case 5:
			printf("请输入地址\n");
			scanf("%s", pc->data[i].addr);
			printf("修改成功\n");
			break;
		case 0:
			printf("修改结束\n");
			break;
		default:
			printf("输入错误请重新输入\n");
			break;
		}
	} while (a);
	return;
}
bool cmp(peinof x, peinof y)
{
	return x.age > y.age;
}
bool cnp(peinof x, peinof y)
{
	return strcmp(x.name, y.name) < 0;
}
bool xin(peinof x, peinof y)
{
	return strcmp(x.set, y.set) < 0;
}
bool hao(peinof x, peinof y)
{
	return strcmp(x.tele, y.tele) < 0;
}
bool addr(peinof x, peinof y)
{
	return strcmp(x.addr, y.addr) < 0;
}
void paixucontact(contact* pc)
{
	int a = 0;
	do
	{
		mu();
		printf("请输入要按什么排序\n");
		scanf("%d", &a);
		switch (a)
		{
		case 1:
			sort(pc->data, pc->data + pc->sz, cnp);
			printf("排序成功\n");
			break;
		case 2:
			sort(pc->data, pc->data + pc->sz, xin);
			printf("排序成功\n");
			break;
		case 3:
			sort(pc->data, pc->data + pc->sz, cmp);
			printf("排序成功\n");
			break;
		case 4:
			sort(pc->data, pc->data + pc->sz, hao);
			printf("排序成功\n");
			break;
		case 5:
			sort(pc->data, pc->data + pc->sz, addr);
			printf("排序成功\n");
			break;
		case 0:
			printf("排序结束\n");
			break;
		default:
			printf("输入错误请重新输入\n");
			break;
		}
	} while (a);
	return;
}

3.头文件部分

#pragma once
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
#define MAX 1000
#include<iostream>
using namespace std;


typedef struct peinof
{
	char name[20];
	char set[10];
	int age;
	char tele[12];
	char addr[15];
}peinof;

typedef struct contact
{
	peinof data[MAX];
	int sz;
}contact;




void Initcontact(contact* pc);
void ADDcontact(contact* pc);
void printcontact(const contact* pc);
void sancontact(contact* pc);
void cazhaocontact(contact* pc);
void xiougaicontact(contact* pc);
void paixucontact(contact* pc);
void destroycontact(contact* pc);

C语言实现个人通讯录管理系统项目实战 通讯录管理系统是C语言中一个经典且实用的综合项目,它涵盖了结构体、链表、文件操作、内存管理、函数指针等核心编程技术。本章将从整体角度出发,介绍通讯录系统的开发背景、功能需求、技术选型以及项目目标,为后续章节的深入讲解奠定基础。通过本项目,读者将理解为什么选择C语言来实现此类系统,并对项目整体结构有初步认知,掌握从数据结构设计到功能模块划分的完整开发流程。链表是一种线性数据结构,由多个节点组成。每个节点包含两个部分:数据域:用于存储数据;指针域:用于指向下一个节点。 阅读详情

相关推荐

关于DHCP Option60的认识

<br />       最近在网络建设过程中,必须面对一个实际存在的问题:当只有一根线入户时,该如何解决CATV和宽带业务的共存呢?这时就要考虑用到DHCP Option60了,那么DHCP Option60到底是如何来实现业务区分的呢?<br />首先先来看下DHCP协议,在DHCP协议中,定义了一个option字段,该字段主要是用来扩展DHCP协议的,Option 60 (Vendor class identifier)是DHCP报文中的一个选项字段,code为60,可以标识终端类型,根据不同的终

luoyingchuan的专栏 7940

超详细C语言实现——通讯录

用C语言进行通讯录的简单实现。

hffh123的博客 8419

11 CO配置-控制-成本中心会计-定义分割结构(OKES-Define Splitting Structure)

业务背景:定义分割结构 事务码: OKES SPRO路径:SPRO->控制->成本中心会计->实际过账->期末结算->作业分配->划分->定义分割结构 第1步,SPRO路径进入 第2步,选择“新的条目”创建 分割结构 第3步,选择分割结构代码 点击“分割规则”进行下一个界面,点击“新条目”创建 分割结构规则 第4步,点击“为规则选择” 为分割结构规则创建版本并保存 第5步,选择“分配”,点击“新的条目” 输入分割结构分配

4371

c语言实现通讯录(详解)

通讯录的信息有了,接下来我们就需要的告诉用户使用我们通讯录的时候是怎样操作的,我们这里给上一个menu的菜单莱提示用户怎样进行操作,然后就是根据菜单的提升输入内容,然后我们就可以根据用户输入的内容来实现我们对应的功能。接下来我们要确定通过什么方式来找到结构体中对应的这个元素,假如我们就用名字的方法来删除所对应的元素,我们可以定义一个name变量,然后通过遍历这个结构体来找,如果找到了我们就把后面的数依次往前拿,如果遍历完都没有找到这个名字,那么就说明这个联系人不存在我们的通讯录。...

Trustmeican的博客 9116

STM32HAL库 基于外部Flash+FatFs模拟U盘方式进行固件拷贝升级(详解)

STM32HAL库 基于外部Flash+FatFs模拟U盘方式进行固件拷贝升级

qq_36075612的博客 1万+

绕开华为通道,获取解锁码解锁BootLoader

刷机有风险,操作需谨慎,如果因为各种因素导致手机变砖无法开机,本教程概不负责,望悉知 前言 这篇文章的大多内容是根据我自己找的一篇文章《绕开华为通道,获取解锁码解锁BootLoader》来编写的,里面的大部分内容是文章的原内容。下面的都是我参考文章中做了一些小部分的修改,增加了我华为P8手机的一些操作,下面开始讲述我的解锁过程。 因为华为官方在2018年的七八月份吧,关闭了解锁码的申请通道,这...

Martin.Mu `s Special Column 5万+

c语言实现通讯录

实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址 通讯录菜单栏包括: 添加联系人信息 删除指定联系人信息 查找指定联系人信息 修改指定联系人信息 显示所有联系人信息 清空所有联系人 以名字排序所有联系人 首先创建contact.h(宏定义、类型声明、函数声明)、contact.c(主要是通讯录菜单栏函数实现)、test.c(对通讯录进行测试)文件 首先是test.c文件,设置菜单栏,通过do...while语句进行循环,switch.

weixin_45878524的博客 1233

基于BQ25895RTWR的锂电池充电管理硬件设计

BQ25895 是一款适用于单节锂离子电池和锂聚合物电池的高度集成型 5A 开关模式电池充电管理和系统电源路径管理器件。此类器件支持高输入电压快速充电。低阻抗电源路径对开关模式运行效率进行了优化、缩短了电池充电时间并延长了放电阶段的电池使用寿命。• 移动电源、移动 Wi-Fi 热点。• 便携式互联网器件。

corlin6688的博客 1087

C语言实训通讯录(静态和动态版本)

前面我们对c语言有了系统性的学习和了解,今天小编手把手教大家如何使用c语言实现静态和动态版本的通讯录。

weixin_67900732的博客 1367

企业 IoT 产品安全渗透测试与欧盟 CRA 合规落地实战指南

欧盟 CRA(网络弹性法案)2026-09-11 漏洞报告义务生效,2027-12-11 全面强制产品安全不再是"加分项",而是市场准入的法律门槛本文面向 IoT 企业安全工程师/运维工程师,讲清楚如何从零建立渗透测试能力,并与 CRA 合规要求对齐落地。不讲空话,全是可执行的步骤。IoT 企业安全工程师、运维工程师负责产品合规的技术人员想从"被动响应"转向"主动安全"的团队[ ] 能独立完成 Web 应用渗透测试并输出报告[ ] 能对 REST/GraphQL API 进行安全评估。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 269

Qt版Dalsa线扫相机的采集Demo

Qt Dalsa

追赶时代的博客 605

c语言实训——通讯录管理系统实训书

1. 课程实训目的和任务 1.1 课程实训目的 C语言是实践性很强的一门课程,通过对《C语言程序设计》课程的学习,学生虽已初步掌握了C语言的基本概念、结构化程序设计的基本方法,但实际编程和上机调试程序的能力还远远不足。故《C语言程序设计》课程实训计旨在巩固和加深学生对C语言课程中基本知识的理解和掌握;培养学生利用C语言进行基本软件设计的能力、书写程序设计说明文档的能力以及团队协作精神;加强学生自主...

ZJC'博客 6558

基于情感分析+聚类分析+LDA主题分析对服装产品类的消费者评论分析

本研究旨在通过对服装产品类的消费者评论进行综合分析,为企业提供更全面、更深入的市场洞察和决策支持。同时,本研究的方法和结果也可以为其他领域的消费者评论分析提供借鉴和参考。

m0_64336780的博客 2万+

【C语言实战项目】通讯录

C语言实战项目之通讯录程序万字详解.

C/C++领域,数据结构,linux,MySQl学习者 4685

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C语言项目实战:通讯录管理系统

全文共计五万字,讲述了如何利用顺序表实现通讯录管理,并在实战中练习C语言指针、数组、结构体、枚举和各种库函数等

2402_83561731的博客 1461

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C语言实战小项目——通讯录2.0

动态通讯录的实现 ——接上篇1.0版本静态通讯录的优化2.0版本 C语言实战小项目——通讯录1.0—— 博客入口 一.通讯录的各项功能及主体框架 本次优化版本与上一次的1.0版本相比,改变了原有的固定内存存储通讯录联系人的方式,原来的存储联系人方式是我们规定一个1000的结构体数组大小进行存储联系人的各种信息,但是有时候我们并用不了这么多的空间,没有那么多的联系人,那样我们的 1.通讯录的要求实现功能 0.退出菜单 1.添加联系人信息 2.删除指定名字的联系人信息 3.修改联系人的信息 4.查

rain67的博客 2406

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C语言实战小项目(三)通讯录

用C语言简单实现通讯录

choice~的博客 1248

C语言实战小项目——通讯录3.0

可实现文件保存的通讯录的实现 ——接上篇2.0版本动态通讯录的优化3.0版本 C语言实战小项目——通讯录2.0—— 博客入口 文章目录可实现文件保存的通讯录的实现一、优化改进部分(1)添加文件保存功能(2)初始化加载文件信息二、整体代码展示1.test.c 通讯录主体框架测试文件2.contact.c 通讯录函数文件3.contact.h 宏定义及函数声明文件小结完! 一、优化改进部分   在上次的2.0版本中,我们已经拥有了可实现动态内存操作的通讯录版本,但是每次当我们输入数据,展示数据,退出之后

rain67的博客 3749

C语言进阶实战之通讯录项目

好了,今天的这个通讯录小项目的分享就到这里了在学习编程的道路上Humble与各位同行,加油吧各位!让我们在接下来的时间里一起成长,一起进步吧!

2301_79345909的博客 1229

【C语言项目实战】使用单链表实现通讯录

本文旨在探讨如何使用单链表来实现一个高效、灵活的通讯录项目。我们将首先介绍单链表的基本概念和基本操作,然后分析通讯录项目的需求,并设计相应的数据结构和接口。接下来,我们将详细实现通讯录类的各个功能,并进行测试和验证。最后,我们将对项目进行总结和反思,并提出改进方向。

倔强的石头的博客 2332

C语言实战项目:简易通讯录

本篇用C语言实现了一个简易的通讯录。

qq_53130059的博客 755

C语言实战小项目——通讯录1.0

文章目录静态通讯录的实现一.通讯录的各项功能及主体框架1.通讯录的要求实现功能2.页面菜单3.通讯录的主体框架实现4.通讯录初始化及个人信息的表示二、功能函数的具体实现1.增加联系人的信息2.删除联系人的信息3.修改联系人的信息4.查找联系人的信息5.展示通讯录联系人信息整体代码展示1.test.c 通讯录主体框架测试文件2.contact.c 通讯录函数文件3.contact.h 宏定义及函数声明文件小结未完待续....... 静态通讯录的实现 一.通讯录的各项功能及主体框架 1.通讯录的要求实现功

rain67的博客 3559

C语言实战项目---通讯录

项目要实现的内容:能够存放100个人的通讯录程序,能够实现联系人数据的存储,删除,修改,查找,展示联系人的信息。所需知识:结构体,指针,函数.................废话不多说,咱们直接开始。

weixin_73496371的博客 706

【C语言实战项目】通讯录(动态增容版)

上篇博客我们一起用C语言实现了一个固定大小的通讯录程序,这篇博客里我们将把他改造成可以动态增加大小的版本.

C/C++领域,数据结构,linux,MySQl学习者 809

C语言实战小项目(三)通讯录(1)

static int FindByName(Contact *pc,char name[])//static 让它成为静态函数,不让其它源文件访问void Sort_Name(Contact *pc) //以名字排序所有联系人//将菜单的功能一一列举出来,以枚举的类型呈现int main()void Sort_Name(Contact *pc) //以名字排序所有联系人//为以后维护 设置预处理命令#define MAX_TELE 12 //号码为11位,留以为作结束符\0。

2401_84411522的博客 951
上一篇: 自定义类型结构体 枚举 联合
下一篇: c语言顺序表
pythoncjavac++
博客等级 码龄5年 718粉丝 71原创
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pythoncjavac++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值