进阶C语言-通讯录的实现

news2024/11/15 10:52:12

在这里插入图片描述

通讯录

  • 🎈1.设计要求
  • 🎈2.程序实现
    • 🔭2.1打印菜单及初始化通讯录
    • 🔭2.2显示所有联系人
    • 🔭2.3查找指定的联系人
    • 🔭2.4删除指定的联系人
    • 🔭2.5查找指定的联系人
    • 🔭2.6修改指定联系人
    • 🔭2.7按照年龄排序(以此为例)
  • 🎈3.全部源码以及实现

🎈1.设计要求

🌞通过前面关于结构体及相关自定义类型的学习,我们就可以写上一个通讯录这样的程序,该程序有如下要求

  1. 可以保存100个人的信息。
  2. 增加人的信息。
  3. 删除指定联系人的信息。
  4. 查找指定联系人的信息。
  5. 修改指定联系人的信息。
  6. 排序通讯录的信息。
  7. 显示所有联系人的信息。

🎈人的信息:

  • 姓名
  • 年龄
  • 性别
  • 电话
  • 地址

✅为了使咱们的程序更加的清晰易懂,我们可以将该工程分为三个文件:

  • test.c-测试代码
  • contact.h-声明
  • contact.c-实现

🎈2.程序实现

🔭2.1打印菜单及初始化通讯录

contact.h

#pragma once
//类型的声明
#include <stdio.h>
#include <assert.h>
#include <string.h>
#define Max 100
#define NAME_MAX 10
typedef struct PepInfo
{
   
	char name[NAME_MAX];
	int age;
	char sex[5];
	char tele[12];
	char addr[20];
}PInfo;

typedef struct Contact
{
   
	PInfo data[Max];
	int sz;//用于记录当前通讯录中存放了多少个人的信息
}Contact;

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

contact.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
void InitContact(Contact *c)
{
   
	assert(c);
	c->sz = 0;
	memset(c->data, 0, sizeof(c->data));
}

test.c

//文件用于测试通讯录的基本功能。
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"//自己定义的头文件用""
void menu()
{
   
	printf("***********************************\n");
	printf("********1.增加联系人***************\n");
	printf("                                   \n");
	printf("********2.删除指定联系人的信息*****\n");
	printf("                                   \n");
	printf("********3.查找指定联系人的信息*****\n");
	printf("                                   \n");
	printf("********4.修改指定联系人的信息*****\n");
	printf("                                   \n");
	printf("********5.排序通讯录的信息*********\n");
	printf("                                   \n");
	printf("********6.显示所有联系人的信息*****\n");
	printf("                                   \n");
	printf("********0.退出程序*****************\n");
	printf("***********************************\n");
}
enum Option
{
   
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW,
	SORT
};
int main()
{
   
	int input = 0;
	Contact con;
	//初始化函数
	InitContact(&con);
	do
	{
   
		menu();
		printf("请输入你的选择:>");
		scanf("%d", &input);
		switch (input)
		{
   
		case ADD:
			break;
		case DEL:
			break;
		case SEARCH:
			break;
		case MODIFY:
			break;
		case SHOW:
			break;
		case SORT:
			break;
		case EXIT:
			printf("退出通讯录\n");
			break;
		default:
			break;
		}
	} while (input);
	return 0;
}

🔭2.2显示所有联系人

contact.h

//显示所有联系人
void ShowContact(const Contact* c);

contact.c

void ShowContact(const Contact* c)
{
   
	assert(c);
	if (c->sz == 0)
	{
   
		printf("通讯录为空,无需打印!\n");
	}
	int i = 0;
	printf("%-20s%-5s%-5s%-12s%-30s\n", "姓名", "年龄", "性别", "电话", "地址");
	for (int i = 0; i < c->sz; i++)
	{
   
		printf("%-20s%-5s%-5s%-12s%-30s\n",
			c->data[i].name, c->data[i].age, c

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1436556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.4-学成在线内容管理之项目实战

内容管理模块 文章目录 内容管理模块9 项目实战9.1 实战环境9.1.1 实战流程 9.2 删除课程计划9.2.1 需求分析9.2.2 接口定义9.2.3 接口开发9.2.4 接口测试 9.3 课程计划排序9.3.1 需求分析9.3.2 接口定义9.3.3 接口开发9.3.4 接口测试 9.4 师资管理9.4.1 需求分析9.4.2 接口定义…

第2节、让电机转起来【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍用简单的方式&#xff0c;让步进电机转起来。其目的之一是对电机转动有直观的感受&#xff0c;二是熟悉整个开发流程。本系列教程必要的51单片机基础包括IO口操作、中断、定时器三个部分&#…

2020年通信工程师初级 综合能力 真题

文章目录 第1章 通信职业道德&#xff0c;1-4第2章 法律法规&#xff0c;5-16第3章 计算机应用基础&#xff0c;第5章 现代通信网&#xff0c;38英语题&#xff0c;91 第1章 通信职业道德&#xff0c;1-4 1、职业道德在形式上具有()特点。 A.一致性 B.统一性 C.多样性 D.一般性…

基于SpringBoot+Vue的外卖点餐管理系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

人生,总要读几本好书!

以前&#xff0c;没有重视过读书的重要性 但是自从进入老马的陪伴群之后&#xff0c;听了老马的一路成长经历&#xff0c;才发现&#xff0c;所谓的一鸣惊人&#xff0c;都是厚积薄发的表现 大佬们在出人头地之前&#xff0c;都是有过很长一段时间的自我提升的 这个提升的方…

如何利用边缘计算网关进行机床数据采集,以提高数据采集的效率和准确性-天拓四方

边缘计算网关集成了数据采集、处理和传输功能的嵌入式设备。它位于传感器和执行器组成的设备层与云计算平台之间&#xff0c;能够实时处理和响应本地设备的数据请求&#xff0c;减轻云平台的压力&#xff0c;提高数据处理的速度和效率。同时&#xff0c;边缘计算网关还可以将处…

Qt 的安装以及项目的创建

目录 Qt简介Qt 开发环境安装的过程环境变量的配置Qt SDK 中的重要的工具创建一个 Qt 项目 Qt简介 开始安装教程前&#xff0c;首先来了解一下什么是QT。 QT&#xff08;Quick Thought&#xff09;是一个基于Qt库的快速应用程序开发框架。它提供了一套完整的开发工具和库&…

DataX详解和架构介绍

系列文章目录 一、 DataX详解和架构介绍 二、 DataX源码分析 JobContainer 三、DataX源码分析 TaskGroupContainer 四、DataX源码分析 TaskExecutor 五、DataX源码分析 reader 六、DataX源码分析 writer 七、DataX源码分析 Channel 文章目录 系列文章目录DataX是什么&#xff…

spring boot(2.4.x之前版本)和spring cloud项目中配置文件的作用

为了防止理解问题&#xff0c;pom.xml 版本依赖如下 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!--…

【开源】SpringBoot框架开发城市桥梁道路管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询城市桥梁4.2 新增城市桥梁4.3 编辑城市桥梁4.4 删除城市桥梁4.5 查询单个城市桥梁 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的城市桥梁道路管理系统&#xff0c;支持…

结构体的特殊声明和自引用

结构体的特殊声明 结构体我们通常是这么声明的&#xff1a; struct Student { char name[20]; int age; int num; }; 或者 struct Student { char name[20]; int age; int num; }s1, s2; 这是我们正常的声明方式&#xff0c; 也是正规的声明方式&#xff0c; 第二…

第三百一十一回

文章目录 1. 概念介绍2. 使用方法3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何在输入框中提示错误"相关的内容&#xff0c;本章回中将介绍如何在输入框中处理光标.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在使用TextField组件作为…

【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的高可靠消息服务设计实现

盘点本年度探索对外服务的百万请求量的高可靠消息服务设计实现 前提回顾消息服务逻辑架构运作流程消息路由系统数据存储系统BitCask结构异地存储容灾 推送系统数据消费模式推、拉模式的切换 实现低延时推送快速确认消息三层存储结构HeapMemoryDirectMemory 总结和展望 前提回顾…

【Mybatis】从0学习Mybatis(2)

前言 本篇文章是从0学习Mybatis的第一篇文章&#xff0c;由于篇幅太长CSDN会限流&#xff0c;因此我打算分开两期来写&#xff0c;这是第二期&#xff01;第一期在这儿&#xff1a;【Mybatis】从0学习Mybatis&#xff08;1&#xff09;-CSDN博客 1.什么是ResultMap结果映射&am…

力扣热门100题 - 5.最长回文子串

力扣热门100题 - 5.最长回文子串 题目描述&#xff1a;示例&#xff1a;提示&#xff1a;解题思路&#xff1a;&#xff08;动态规划&#xff09;代码&#xff1a; 题目链接&#xff1a;5. 最长回文子串 题目描述&#xff1a; 给你一个字符串 s&#xff0c;找到 s 中最长的回…

Python爬虫requests库详解

使用 requests 上一节中&#xff0c;我们了解了 urllib 的基本用法&#xff0c;但是其中确实有不方便的地方&#xff0c;比如处理网页验证和 Cookies 时&#xff0c;需要写 Opener 和 Handler 来处理。为了更加方便地实现这些操作&#xff0c;就有了更为强大的库 requests&…

「HarmonyOS」CustomDialogController自定义弹窗使用方法

需求背景&#xff1a; 在开发的过程中&#xff0c;总会遇到一些功能需要使用到弹窗进行信息的输入和修改&#xff0c;如用户个人信息的修改&#xff1b;在UI设计上每个App通常都会有各自的样式&#xff0c;而不是使用系统的标准样式&#xff0c;所以通常我们需要进行自定义弹窗…

TryHackMe-Net Sec Challenge练习

本文相关的TryHackMe实验房间链接&#xff1a;TryHackMe | Why Subscribe nmap nmap -T5 -p- 10.10.90.32 -T5 扫描速度 -p- 全端口扫描 答题&#xff1a; 这题叫我们找藏在http服务下的flag&#xff0c;根据上面扫出来的端口&#xff0c;所以我们开始搞80 这里简单介绍一下…

2.6 假期作业

分布编译 -ESc iso 1.预处理:头文件展开&#xff0c;宏替换&#xff0c;删除注释&#xff0c;不会查找语法错误 例&#xff1a;gcc -E 1.c -o 1.i 2.编译&#xff1a;生成汇编文件&#xff0c;会查找语法错误 例&#xff1a;gcc -S 1.i -o 1.s 3.汇编&#xff1a;生成二…

亚马逊认证考试系列 - 知识点 - LightSail介绍

一、引言 在当今云计算的时代&#xff0c;亚马逊网络服务&#xff08;AWS&#xff09;已成为业界领先的云服务提供商。其中&#xff0c;LightSail服务是AWS为简化云计算的入门和使用而推出的一项服务。它特别适合那些想要快速搭建网站、开发环境或小型应用的用户。通过LightSa…