当前位置: 首页 > news >正文

通讯录系统

 

目录

通讯录系统头文件:

 通讯录系统Test:

通讯录系统函数源代码:


通讯录系统头文件:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>#define INIT_CAPACITY 2
#define NEW_INIT_CAPACITY 3typedef struct Info
{char name[12];char sex[8];int age;char telephone[12];char address[20];
}Info;typedef struct Address_Book
{int num;int capacity;Info book[0];
}Address_Book;enum difficult_name
{Exit,Add,Del,Search,Modify,Show,Empty,Sort
};void Init(Address_Book** Book);
void Add_info(Address_Book** Book);
void Del_info(Address_Book** Book);
void Store(Address_Book** Book);
void Search_info(Address_Book** Book);
void Modify_info(Address_Book** Book);
void Show_info(Address_Book** Book);
void Empty_info(Address_Book** Book);
void Sort_info(Address_Book** Book);

 通讯录系统Test:

#include "通讯录啊.h"int main()
{Address_Book* Book = (Address_Book*)malloc(sizeof(Address_Book) + sizeof(Info) * INIT_CAPACITY);if (Book == NULL){perror("main - malloc");return;}Init(&Book);int input = 0;do{printf("操作:\n");scanf("%d", &input);switch (input){case Exit:Store(&Book);printf("程序退出!\n");free(Book);Book = NULL;break;case Add:Add_info(&Book);break;case Del:Del_info(&Book);break;case Search:Search_info(&Book);break;case Modify:Modify_info(&Book);break;case Show:Show_info(&Book);break;case Empty:Empty_info(&Book);break;case Sort:Sort_info(&Book);break;default:printf("没有该操作,请重新输入\n");break;}} while (input);return 0;
}

通讯录系统函数源代码:

#include "通讯录啊.h"int CheckCapacity(Address_Book** Book);void Init(Address_Book** Book)
{assert(Book);(*Book)->capacity = INIT_CAPACITY;(*Book)->num = 0;memset((*Book)->book, 0, sizeof(Info) * (*Book)->capacity);FILE* pf = fopen("Book.txt", "rb");if (pf == NULL){perror("Init");printf(__LINE__);return;}Info temp = { 0 };while (fread(&temp, sizeof(Info), 1, pf)){if (0 == CheckCapacity(Book)){return;}(*Book)->book[(*Book)->num] = temp;(*Book)->num++;}fclose(pf);pf = NULL;
}int CheckCapacity(Address_Book** Book)
{assert(*Book);if ((*Book)->num == (*Book)->capacity){Address_Book* str = (Address_Book*)realloc(*Book, sizeof(Address_Book) + sizeof(Info) * ((*Book)->capacity + NEW_INIT_CAPACITY));if (str == NULL){printf("增容失败!\n");return 0;}*Book = str;(*Book)->capacity += NEW_INIT_CAPACITY;printf("增容成功!!!\n");return 1;}}void Add_info(Address_Book** Book)
{if (0 == CheckCapacity(Book)){return;}printf("请输入联系人姓名:\n");scanf("%s", (*Book)->book[(*Book)->num].name);printf("请输入联系人性别:\n");scanf("%s", (*Book)->book[(*Book)->num].sex);printf("请输入联系人年龄:\n");scanf("%d", &(*Book)->book[(*Book)->num].age);printf("请输入联系人电话:\n");scanf("%s", (*Book)->book[(*Book)->num].telephone);printf("请输入联系人地址:\n");scanf("%s", (*Book)->book[(*Book)->num].address);(*Book)->num++;printf("添加成功!\n");
}int True_False(Address_Book* Book, int* u_flag)
{char name[20];printf("输入联系人名字:\n");scanf("%s", name);for (int i = 0; i < Book->num; i++){if (strcmp(name, Book->book[i].name) == 0){*u_flag = i;return 1;}}return 0;
}void Del_info(Address_Book** Book)
{assert(*Book);int u_flag = 0;int ret = True_False(*Book, &u_flag);if (ret == 1){for (int i = u_flag; i < (*Book)->num; i++){(*Book)->book[i] = (*Book)->book[i + 1];}printf("删除成功!\n");}else{printf("未查询到该联系人,删除失败!\n");}}void Store(Address_Book** Book)
{assert(*Book);FILE* pf = fopen("Book.txt", "wb");if (pf == NULL){perror("Store");return;}for (int i = 0; i < (*Book)->num; i++){fwrite((*Book)->book + i, sizeof(Info), 1, pf);}fclose(pf);pf = NULL;
}void Search_info(Address_Book** Book)
{assert(*Book);int u_flag = 0;int ret = True_False(*Book, &u_flag);if (ret == 1){printf("找到了:\n");//打印信息return;}printf("没找到!\n");}void Modify_info(Address_Book** Book)
{assert(*Book);int u_flag = 0;int ret = True_False(*Book, &u_flag);if (ret == 1){printf("找到了:\n");//修改信息return;}printf("没找到!\n");}void Show_info(Address_Book** Book)
{assert(*Book);for (int i = 0; i < (*Book)->num; i++){//打印信息}}void Empty_info(Address_Book** Book)
{assert(*Book);memset((*Book)->book, 0, sizeof(Info) * (*Book)->num);(*Book)->capacity = 0;(*Book)->num = 0;}int cmp(void* p1, void* p2)
{return strcmp(((Info*)p1)->name, ((Info*)p2)->name);
}void Sort_info(Address_Book** Book)
{assert(*Book);//排序方式多种,可以Switch选择排序方式,这里名字排序qsort((*Book)->book, (*Book)->num, sizeof(Info), cmp);printf("排序完成!\n");
}

相关文章:

通讯录系统

目录 通讯录系统头文件&#xff1a; 通讯录系统Test&#xff1a; 通讯录系统函数源代码&#xff1a; 通讯录系统头文件&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert…...

14:00面试,14:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到5月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%,…...

F5 LTM 知识点和实验 3-负载均衡中的负载算法

第三章&#xff1a;负载均衡中的负载算法 负载算法分为静态的和动态的。静态的连接分布模式是预先设置的&#xff0c;流量处理中是不会变化的&#xff0c;动态的连接分布模式也是预先设置的&#xff0c;但是连接分布会根据某些因素的改变而调整。 轮询&#xff08;round robi…...

多线程(JavaEE初阶系列2)

目录 前言&#xff1a; 1.什么是线程 2.为什么要有线程 3.进程与线程的区别与联系 4.Java的线程和操作系统线程的关系 5.多线程编程示例 6.创建线程 6.1继承Thread类 6.2实现Runnable接口 6.3继承Thread&#xff0c;使用匿名内部类 6.4实现Runnable接口&#xff0c;使…...

Ubuntu20.04点Ubuntu software没反应,打不开的解决方案(Ubuntu笔记)

首先检查Ubuntu Software的状态&#xff0c;在终端输入&#xff1a;systemctl status snap.ubuntu-software.ubuntu-software.service 如果状态显示为inactive&#xff0c;则需要启动snap.ubuntu-software.ubuntu-software.service&#xff0c;在终端输入&#xff1a;sudo sys…...

力扣1114.按序打印-----题目解析

题目描述 解析&#xff1a; class Foo {public int a 0;public Foo() {}public void first(Runnable printFirst) throws InterruptedException {// printFirst.run() outputs "first". Do not change or remove this line.printFirst.run();a;}public void second…...

Centos7.9安全部署_防火墙配置_端口配置_协议配置_IP配置_全部亲测---记录022_大数据工作笔记0182

在我们平时搭建大数据平台的时候,由于防火墙的限制,会让搭建集群的时候,报各种错误,但是,有些网络环境要求比较严格的地方,防火墙又要求必须要放开,尤其是.. 有些网络环境会安全组进行定时扫描,说实话,我们用的很多开源软件,一般都是低版本的话都有漏洞,但是升级的话又会很容易…...

Tik Tok海外公会是什么?

在数字社交媒体领域&#xff0c;TikTok已成为全球性的热门应用之一&#xff0c;印尼市场也不例外。作为全球第四人口最多的国家&#xff0c;印尼的年轻人口众多&#xff0c;是一个极具潜力的市场。对于希望在印尼市场进行TikTok公会申请的机构来说&#xff0c;了解市场发展趋势…...

elasticsearch批量导入问题

Testvoid bulkIndex() throws IOException{List<Product> products new ArrayList<Product>();products.add(new Product("香烟",135,1)); // products.add(new Product("瓜子",154,2)); // products.add(new Product("矿…...

SAP安装笔记

1、准备安装介质&#xff0c;SWPM10SP25&#xff0c;51050829_NW750_JavaExport、SAP_HANA_CLIENT、kernel放到/sapcd/NetWeaver目录下 ​​​​​​​ 进入SWPM10SP25执行./sapinst安装 2、待出现 “Open your browser and paste the following URL address to access the G…...

速速收藏!程序员副业赚钱的8种模式

程序员副业赚钱的方式有很多&#xff0c;我总结了程序员兼职赚钱&#xff0c;增加收入的八种模式&#xff0c;希望能够给在迷茫的程序员一点参考&#xff01; 投资理财 很多程序员多少都会买买基金、炒炒股作为一个小副业&#xff0c;由于程序员大多是理科生&#xff0c;有比…...

2、基于redis实现分布式锁

目录 2.1. 基本实现2.2. 防死锁2.3. 防误删2.4. redis中的lua脚本2.4.1 redis 并不能保证2.4.2 lua介绍 2.5. 使用lua保证删除原子性 2.1. 基本实现 借助于redis中的命令setnx(key, value)&#xff0c;key不存在就新增&#xff0c;存在就什么都不做。同时有多个客户端发送setn…...

【问题记录】Ubuntu 22.04 环境下,程序报:段错误(核心已转储)怎么使用 core 文件和GDB调试器 解决?

目录 环境 问题情况 解决思路 原因分析 解决方法 番外知识 环境 VMware Workstation 16 Pro &#xff08;版本&#xff1a;16.1.2 build-17966106&#xff09;ubuntu-22.04.2-desktop-amd64 问题情况 本人在运行百万并发的服务端程序时&#xff0c;程序运行报&#xff1a…...

9 Linux实操篇-实用指令

9 Linux实操篇-实用指令 文章目录 9 Linux实操篇-实用指令9.1 指定和修改运行级别-init/systemctl9.2 找回root密码9.3 Linux的指令说明9.3 帮助类-man/help9.4 文件目录类-pwd/ls/cd/mkdir/...9.5 时间日期类-date/cal9.6 搜索查找类-find/locate/which/grep9.7 压缩和解压类-…...

Hbase基础概念

HBase 一、HBase的数据模型1.HBase数据存储结构2.HBase存储概念3.HBase基本架构 二、HBase Shell1.DDL(Data Definition Language)1.namespace2.table 2.DML&#xff08;Data Manipulation Language&#xff09;1.写入数据2.读取数据3.删除数据 三、HBase组成架构1. Master架构…...

JTS-Angle角度类

目录&#xff1a; 获取AB连线与正北方向的角度求距离此点一定距离、一定夹角的点经纬度判断point点 在线段startPoint-etartPoint的左侧或者右侧米转换为弧度弧度转换为米 定义Point点 public class LatLngPoint {final static double RC 6378137;final static double RJ …...

pytest---环境切换(base-url)

前言 前面小编介绍了如何通过pytest的插件来实现自动化测试的环境的切换&#xff0c;当时使用的方法是通过钩子函数进行获取命令行参数值&#xff0c;然后通过提前配置好的参数进行切换测试环境地址&#xff0c;今天小编再次介绍一种方法&#xff0c;通过pytest的插件&#xff…...

linux跑代码,程序终止了,但资源没有释放。

linux跑代码&#xff0c;程序终止了&#xff0c;但资源没有释放。 程序终止&#xff0c;但是资源没有释放. kill -9 5062完成。 linux终止进程...

数据结构--线性表2-1

目录 一、线性结构的定义 二、线性表的表示 三、顺序表的实现&#xff08;或操作&#xff09; 1、修改&#xff1a; 2、插入&#xff1a; 四、顺序表的运算效率分析&#xff1a;时间效率分析&#xff1a; 一、线性结构的定义 若结构时非空有限集&#xff0c;则有且仅有一个…...

网访问内网机器:基于frp的内网穿透

随缘更新些我自己的博客网站里的文章吧 因为经常需要远程访问自己的机器&#xff0c;所以写一个博客记录一下 公网访问内网机器&#xff1a;基于frp的内网穿透 从公网中访问自己的私有设备向来是一件难事儿。 1. 为什么需要内网穿透&#xff1f; A. 计算机网络 如何在自己的机…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...