设计一个简单的通讯录

目录

导读:

一、主函数

1. 打印功能菜单

2. 用枚举常量列举功能给功能赋值(0-5)

3. main主函数

二、头文件

三、通讯录各功能的实现

1. 初始化通讯录

2. 增加联系人

3. 展示所有联系人信息

4.  删除指定联系人

5. 查询指定联系人信息

6. 修改指定联系人信息

7. 销毁通讯录

四、各模块全部代码

1. 主函数

2. 头文件

3. 功能实现

五、代码运行展示

1. 添加联系人

2. 展示联系人信息

​3. 查找联系人

4. 修改联系人并展示

5. 删除联系人并展示

6. 退出通讯录 


导读:

通讯录中所涉及到的动态内存管理相关知识在:

C语言动态内存管理(malloc, calloc,realloc)详解-CSDN博客

柔性数组:

柔性数组详解-CSDN博客

结构体等自定义类型相关知识:

结构体、枚举以及联合类型在内存中的存储与大小计算-CSDN博客

还有之前写过的一个简易的三子棋游戏:

三子棋小游戏代码实现_流浪者与猴的博客-CSDN博客

该通讯录功能为增、删、查、改以及展示目前存放的所有联系人信息,更多功能以及优化等待博主后续的努力

该代码分三个模块:主函数(test_16.c)、具体功能的实现(contact.c)、以及函数的声明(contact.h)

一、主函数

在开头引用contact.h头文件,函数内涵所用到的所有函数以及结构体声明

#include "contact.h"

1. 打印功能菜单

void menu()
{printf("***************************************\n");printf("**** 1.add          2.del    **********\n");printf("**** 3.search       4.modify **********\n");printf("**** 5.show         0.exit     **********\n");printf("***************************************\n");
}

2. 用枚举常量列举功能给功能赋值(0-5)

enum Option  //列举出通讯录功能
{EXIT,ADD,DEL,SEARCH,MODIFY,SHOW,
};

3. main主函数

使用do...while循环以及switch来实现功能的反复使用,其中的结构体和函数声明在自身创的头文件中,再开头以及引用

int main()
{int input = 0;Contact con;//结构体InitContact(&con);//初始化通讯录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:ModifyContact(&con);break;case SHOW:ShowContact(&con);break;case EXIT:DestroyContact(&con);//销毁空间printf("退出\n");break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}

二、头文件

头文件中包括库函数、各功能函数、结构体等声明,以供在其他模块更好的使用

#pragma once
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NAME_MAX 20   
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30
#define MAX 100
#define DEFAULT_SZ 3
#define DEFAULT_INC 2//类型的声明
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[MAX];//存放数据
//	int sz;//记录当前通讯录中存在的人的信息个数
//}Contact;//动态
typedef struct Contact
{PeoInfo* data;//存放数据int sz;//记录当前通讯录中存在的人的信息个数int capacity;//记录的是通讯录的当前容量
}Contact;//初始化通讯录
void InitContact(Contact* pc);//增加联系人
void AddContact(Contact* pc);//显示所有联系人
void ShowContact(Contact* pc);//删除指定联系人
void DelContact(Contact* pc);//查找指定联系人
void SearchContact(Contact* pc);//修改指定联系人
void ModifyContact(Contact* pc);//销毁通讯录
void DestroyContact(Contact* pc);

三、通讯录各功能的实现

1. 初始化通讯录

void InitContact(Contact* pc)
{assert(pc);pc->sz = 0;  //初始通讯录个人信息为0pc->capacity = DEFAULT_SZ; // 通讯录初始容量为3pc->data = calloc(pc->capacity, sizeof(PeoInfo));//为存放数据开辟内存if (pc->data == NULL){perror("calloc");//如果没有开辟成功返回报错信息return;}memset(pc->data, 0, sizeof(pc->data));//开辟成功,把数据初始化为0
}

2. 增加联系人

在增加联系人前,需要检查通讯录的容量是否够用,这里单独分装成一个函数,来实现容量的检查以及扩展

void CheckCapacity(Contact* pc) //检查容量大小
{if (pc->sz == pc->capacity)//增加的当前人的数量与容量相等{PeoInfo* ptr = (PeoInfo*)realloc(pc->data, (pc->capacity + DEFAULT_INC) * sizeof(PeoInfo));//给data重新开辟空间if (ptr != NULL){pc->data = ptr;//开辟成功则把空间赋给datapc->capacity += DEFAULT_INC;//让容量自增2个printf("增容成功\n");}else{perror("AddContact->realloc");//开辟失败返回报错信息return;}}
}
void AddContact(Contact* pc)//增加联系人
{assert(pc);CheckCapacity(pc);//查看容量,容量不够则增加//增加信息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);pc->sz++;printf("增加成功\n");
}

3. 展示所有联系人信息

void ShowContact(Contact* pc)//展示所有联系人信息
{assert(pc);if (pc->sz == 0){printf("通讯录为空,无需打印\n");return;}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);}
}

4.  删除指定联系人

删除联系人需要对通讯录进行查找,所有这里我们也时再次分装一个函数用来查找联系人,后续联系人信息的修改以及查询某个联系人同样需要此函数

int FindByName(Contact* pc, char name[])
{assert(pc);int i = 0;for (i = 0; i < pc->sz; i++)//进入循环逐个查找{if (strcmp(pc->data[i].name, name) == 0){return i;}}return -1;//找不到
}

开始删除

void DelContact(Contact* pc)//删除指定联系人
{char name[NAME_MAX];assert(pc);if (pc->sz == 0)//如果当前通讯录并没有增加任何联系人,则返回{printf("通讯录为空,无法删除\n");return;}//找到联系人printf("输入删除人的名字:");scanf("%s", name);//找到名字为name的人int ret = FindByName(pc, name);if (ret == -1){printf("要删除得到人不存在\n");return;}//删除这个人int i = 0;for (i = ret; i < pc->sz-1; i++){pc->data[i] = pc->data[i + 1];}pc->sz--;printf("删除成功\n");
}

5. 查询指定联系人信息

这里也用了查找函数

void SearchContact(Contact* pc)//查询联系人
{assert(pc);char name[NAME_MAX];printf("输入查找人的名字:");scanf("%s", name);//找到名字为name的人int ret = FindByName(pc, name);if (ret == -1){printf("要查找的人不存在\n");return;}//显示出来printf("%-20s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址");printf("%-20s%-5d%-5s%-12s%-30s\n",pc->data[ret].name, pc->data[ret].age, pc->data[ret].sex, pc->data[ret].tele, pc->data[ret].addr);
}

6. 修改指定联系人信息

void ModifyContact(Contact* pc)修改指定联系人
{assert(pc);char name[NAME_MAX];printf("输入要修改人的名字:");scanf("%s", name);//找到名字为name的人int ret = FindByName(pc, name);if (ret == -1){printf("要修改的人不存在\n");return;}//修改printf("请输入名字:");scanf("%s", pc->data[ret].name);printf("请输入年龄:");scanf("%d", &pc->data[ret].age);printf("请输入性别:");scanf("%s", pc->data[ret].sex);printf("请输入电话:");scanf("%s", pc->data[ret].tele);printf("请输入地址:");scanf("%s", pc->data[ret].addr);
}

7. 销毁通讯录

开辟的内存使用后需要进行释放

void DestroyContact(Contact* pc)//开辟的内存使用后需要进行释放
{free(pc->data);pc->data = NULL;pc->capacity = 0;pc->sz = 0;
}

四、各模块全部代码

1. 主函数

#define _CRT_SECURE_NO_WARNINGS 
#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");
}
enum Option  //列举出通讯录功能
{EXIT,ADD,DEL,SEARCH,MODIFY,SHOW,
};
int main()
{int input = 0;Contact con;//结构体InitContact(&con);//初始化通讯录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:ModifyContact(&con);break;case SHOW:ShowContact(&con);break;case EXIT:DestroyContact(&con);//销毁空间printf("退出\n");break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}

2. 头文件

#pragma once
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NAME_MAX 20   
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30
#define MAX 100
#define DEFAULT_SZ 3
#define DEFAULT_INC 2//类型的声明
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[MAX];//存放数据
//	int sz;//记录当前通讯录中存在的人的信息个数
//}Contact;//动态
typedef struct Contact
{PeoInfo* data;//存放数据int sz;//记录当前通讯录中存在的人的信息个数int capacity;//记录的是通讯录的当前容量
}Contact;//初始化通讯录
void InitContact(Contact* pc);//增加联系人
void AddContact(Contact* pc);//显示所有联系人
void ShowContact(Contact* pc);//删除指定联系人
void DelContact(Contact* pc);//查找指定联系人
void SearchContact(Contact* pc);//修改指定联系人
void ModifyContact(Contact* pc);//销毁通讯录
void DestroyContact(Contact* pc);

3. 功能实现

#define _CRT_SECURE_NO_WARNINGS 
#include "contact.h"
//静态
//void InitContact(Contact* pc)
//{
//	assert(pc);
//	pc->sz = 0;
//	memset(pc->data, 0, sizeof(pc->data));
//}//动态
void InitContact(Contact* pc)
{assert(pc);pc->sz = 0;  //初始通讯录个人信息为0pc->capacity = DEFAULT_SZ; // 通讯录初始容量为3pc->data = calloc(pc->capacity, sizeof(PeoInfo));//为存放数据开辟内存if (pc->data == NULL){perror("calloc");//如果没有开辟成功返回报错信息return;}memset(pc->data, 0, sizeof(pc->data));//开辟成功,把数据初始化为0
}//静态版本
//void AddContact(Contact* pc)
//{
//	assert(pc);
//	if (pc->sz == MAX)
//	{
//		printf("通讯录已满,无法增加\n");
//		return;
//	}
//	//增加信息
//	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);
//	
//	pc->sz++;
//	printf("增加成功\n");
//}void CheckCapacity(Contact* pc) //检查容量大小
{if (pc->sz == pc->capacity)//增加的当前人的数量与容量相等{PeoInfo* ptr = (PeoInfo*)realloc(pc->data, (pc->capacity + DEFAULT_INC) * sizeof(PeoInfo));//给data重新开辟空间if (ptr != NULL){pc->data = ptr;//开辟成功则把空间赋给datapc->capacity += DEFAULT_INC;//让容量自增2个printf("增容成功\n");}else{perror("AddContact->realloc");//开辟失败返回报错信息return;}}
}
void DestroyContact(Contact* pc)//开辟的内存使用后需要进行释放
{free(pc->data);pc->data = NULL;pc->capacity = 0;pc->sz = 0;
}
void AddContact(Contact* pc)//增加联系人
{assert(pc);CheckCapacity(pc);//查看容量,容量不够则增加//增加信息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);pc->sz++;printf("增加成功\n");
}void ShowContact(Contact* pc)//展示所有联系人信息
{assert(pc);if (pc->sz == 0){printf("通讯录为空,无需打印\n");return;}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(Contact* pc, char name[])
{assert(pc);int i = 0;for (i = 0; i < pc->sz; i++)//进入循环逐个查找{if (strcmp(pc->data[i].name, name) == 0){return i;}}return -1;//找不到
}
void DelContact(Contact* pc)//删除指定联系人
{char name[NAME_MAX];assert(pc);if (pc->sz == 0)//如果当前通讯录并没有增加任何联系人,则返回{printf("通讯录为空,无法删除\n");return;}//找到联系人printf("输入删除人的名字:");scanf("%s", name);//找到名字为name的人int ret = FindByName(pc, name);if (ret == -1){printf("要删除得到人不存在\n");return;}//删除这个人int i = 0;for (i = ret; i < pc->sz-1; i++){pc->data[i] = pc->data[i + 1];}pc->sz--;printf("删除成功\n");
}void SearchContact(Contact* pc)//查询指定联系人
{assert(pc);char name[NAME_MAX];printf("输入查找人的名字:");scanf("%s", name);//找到名字为name的人int ret = FindByName(pc, name);if (ret == -1){printf("要查找的人不存在\n");return;}//显示出来printf("%-20s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址");printf("%-20s%-5d%-5s%-12s%-30s\n",pc->data[ret].name, pc->data[ret].age, pc->data[ret].sex, pc->data[ret].tele, pc->data[ret].addr);
}void ModifyContact(Contact* pc)修改指定联系人
{assert(pc);char name[NAME_MAX];printf("输入要修改人的名字:");scanf("%s", name);//找到名字为name的人int ret = FindByName(pc, name);if (ret == -1){printf("要修改的人不存在\n");return;}//修改printf("请输入名字:");scanf("%s", pc->data[ret].name);printf("请输入年龄:");scanf("%d", &pc->data[ret].age);printf("请输入性别:");scanf("%s", pc->data[ret].sex);printf("请输入电话:");scanf("%s", pc->data[ret].tele);printf("请输入地址:");scanf("%s", pc->data[ret].addr);
}

五、代码运行展示

1. 添加联系人

2. 展示联系人信息

3. 查找联系人

 4. 修改联系人并展示

5. 删除联系人并展示

6. 退出通讯录 

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

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

相关文章

Redis入门到精通——00数据类型

1、String 1.1、介绍 String 是最基本的 key-value 结构&#xff0c;key 是唯一标识&#xff0c;value 是具体的值&#xff0c;value其实不仅是字符串&#xff0c; 也可以是数字&#xff08;整数或浮点数&#xff09;&#xff0c;value 最多可以容纳的数据长度是 512M 1.2、…

【Django】4 Django模型

每个模型是一个Python 类&#xff0c;集成django.db.models.Modle类 该模型的每个属性表示一个数据库表字段 通过API 自动生成数据库访问 .../sign/modles.py 文件&#xff0c;通过模型完成表创建。 TypeError: ForeignKey.__init__() missing 1 required positional argumen…

【算法训练-贪心算法】一 买卖股票的最佳时机II

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【贪心算法】&#xff0c;使用【数组】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&…

【小沐学前端】Node.js实现基于Protobuf协议的UDP通信(UDP/TCP)

文章目录 1、简介1.1 node1.2 Protobuf 2、下载和安装2.1 node2.2 Protobuf2.2.1 安装2.2.2 工具 3、node 代码示例3.1 HTTP3.2 UDP单播3.4 UDP广播 4、Protobuf 代码示例4.1 例子: awesome.proto4.1.1 加载.proto文件方式4.1.2 加载.json文件方式4.1.3 加载.js文件方式 4.2 例…

idea Springboot在线商城系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 在线商城系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有 完整的源代码和数据库&…

多目标平衡优化器黏菌算法(MOEOSMA)求解CEC2020多模式多目标优化

多目标平衡优化器黏菌算法&#xff08;MOEOSMA&#xff09;比现有的多目标黏菌算法具有更好的优化性能。在MOEOSMA中&#xff0c;动态系数用于调整勘探和开采趋势。采用精英存档机制来促进算法的收敛性。使用拥挤距离法来保持Pareto前沿的分布。采用平衡池策略模拟黏菌的协同觅…

Redis持久化、主从与哨兵架构详解

文章目录 一、RDB、AOF及混合持久化详解RDB快照&#xff08;snapshot&#xff09;bgsave的写时复制(COW)机制save与bgsave对比&#xff1a; AOF&#xff08;append-only file&#xff09;AOF重写 RDB 和 AOF &#xff0c;我应该用哪一个&#xff1f;Redis 4.0 混合持久化 二、R…

IDEA的使用

文章目录 1.IDEA配置1.1 idea界面说明1.2 git1.3 JDK1.4 maven1.5 Tomcat1.6 idea设置编码格式1.7 vscodenodejs1.8 windows下安装redis 2. IDEA问题2.1 setAttribute方法爆红2.2 idea cannot download sources解决办法2.3 springboot项目跑起来不停run 3. vscode3.1 vscode显示…

springcloud:四、nacos介绍+启动+服务分级存储模型/集群+NacosRule负载均衡

nacos介绍 nacos是阿里巴巴提供的SpringCloud的一个组件&#xff0c;算是eureka的替代品。 nacos启动 安装过程这里不再赘述&#xff0c;相关安装或启动的问题可以见我的另一篇博客&#xff1a; http://t.csdn.cn/tcQ76 单价模式启动命令&#xff1a;进入bin目录&#xff0…

Ant-Design-Vue:a-range-picker组件国际化配置

在使用Ant-Design-Vue中的时间范围选择器开发个人项目时&#xff0c;发现默认显示为英文。如何解决呢&#xff1f; date-picker分类 Antd-Vue提供了DatePicker、MonthPicker、RangePicker、WeekPicker 几种类型的时间选择器&#xff0c;分别用于选择日期、月份、日期范围、周范…

win10系统任务栏图标变成白色的解决办法

我平时都是用滴答清单进行管理这个自己的日程代办的&#xff0c;但是今天打开的时候发现这个快捷方式突然变成纯白色的了&#xff0c;重启电脑之后&#xff0c;这个图标的样式仍然没有变化。上网查找解决办法之后&#xff0c;终于搞好了&#xff0c;于是就有了下面的教程。 为什…

Android studio “Layout Inspector“工具在Android14 userdebug设备无法正常使用

背景描述 做rom开发的都知道&#xff0c;“Layout Inspector”和“Attach Debugger to Android Process”是studio里很好用的工具&#xff0c;可以用来查看布局、调试系统进程&#xff08;比如setting、launcher、systemui&#xff09;。 问题描述 最进刚开始一个Android 14…

(Note)机器学习面试题

机器学习 1.两位同事从上海出发前往深圳出差&#xff0c;他们在不同时间出发&#xff0c;搭乘的交通工具也不同&#xff0c;能准确描述两者“上海到深圳”距离差别的是&#xff1a; A.欧式距离 B.余弦距离 C.曼哈顿距离 D.切比雪夫距离 S:D 1. 欧几里得距离 计算公式&#x…

机器学习之SGD, Batch, and Mini Batch的简单介绍

文章目录 总述SGD(Stochastic Gradient Descent)(随机梯度下降&#xff09;Batch &#xff08;批量&#xff09;mini Batch (迷你批量&#xff09; 总述 SGD, Batch, and Mini Batch是可用于神经网络的监督学习计算权重更新的方案&#xff0c;即∆wij。 SGD(Stochastic Gradi…

【STM32】IAP升级03关闭总中断,检测栈顶指针

IAP升级方法 IAP升级时需要关闭总中断 TM32在使用时有时需要禁用全局中断&#xff0c;比如MCU在升级过程中需禁用外部中断&#xff0c;防止升级过程中外部中断触发导致升级失败。 ARM MDK中提供了如下两个接口来禁用和开启总中断&#xff1a; __disable_irq(); // 关闭总中…

emacs怎么安装插件

2023年9月26日&#xff0c;周二下午 不得不说&#xff0c;emacs安装插件确实要比vim要方便 虽然我曾经说过要只用vim&#xff0c;但vim安装插件起来太麻烦了 目录 Linux下Emacs的配置文件位置包管理器elpa怎么给elpa换源罗列可安装的插件怎么搜索插件怎么安装插件配置插件 L…

什么是FOSS

FOSS 是指 自由和开放源码软件(Free and Open Source Software)。这并不意味着软件是免费的。它意味着软件的源代码是开放的&#xff0c;任何人都可以自由使用、研究和修改代码。这个原则允许人们像一个社区一样为软件的开发和改进做出贡献。

CentOS密码重置

背景&#xff1a; 我有一个CentOS虚拟机&#xff0c;但是密码忘记了&#xff0c;偶尔记起可以重置密码&#xff0c;于是今天尝试记录一下&#xff0c;又因为我最近记性比较差&#xff0c;所以必须要记录一下。 过程&#xff1a; 1、在引导菜单界面&#xff08;grub&#xff…

如何实现电脑语音输入功能?

现在的手机都具备语音输入功能&#xff0c;并且识别率非常高&#xff0c;语音输入是目前最快速的文字输入方式&#xff0c;但是电脑上却无语音输入的功能&#xff0c;那么如何实现在电脑端也可进行语音输入的梦想呢&#xff1f;现在介绍一款小工具“书剑电脑语音输入法”&#…

java并发编程 守护线程 用户线程 main

经常使用线程&#xff0c;没有对守护线程和用户线程的区别做彻底了解 下面写4个例子来验证一下 源码如下 /* Whether or not the thread is a daemon thread. */ private boolean daemon false;/*** Marks this thread as either a {linkplain #isDaemon daemon} thread*…