c语言结构体实现存储信息,用C语言结构体实现通讯录

实现一个通讯录;

通讯录可以用来存储1000个人的信息,每个人的信息包括:

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

提供方法:

1.    添加联系人信息

2.    删除指定联系人信息

3.    查找指定联系人信息

4.    修改指定联系人信息

5.    显示所有联系人信息

6.    清空所有联系人

#include"stdio.h"

#include

#include

struct People//联系人结构体

{

char name[10];

char sex[5];

int age;

char tel[20];

char addr[20];

};

struct Contacts//通讯录结构体

{

struct People person[1000];

int user_count;

};

typedef struct Contacts *pContacts;//自定义指向通讯里结构体的指针变量

int find_entry(pContacts pcon)//查找入口

{

int i = 0 ;

char name[20];

printf("Please input name:");

scanf("%s",name);

for(i = 0;i < pcon->user_count;i++)

{

if(strcmp(pcon->person[i].name ,name) == 0)

{

return i;

}

}

return -1;

}

int add(pContacts pcon)//增加联系人

{

if(pcon->user_count == 1000)

{

printf("Telephone book is full!\n");

return -1;

}

printf("Please input name:");

scanf("%s",pcon->person[pcon->user_count].name);

printf("Please input sex:");

scanf("%s",pcon->person[pcon->user_count].sex);

printf("Please input age:");

scanf("%d",&(pcon->person[pcon->user_count].age));

printf("Please input tele:");

scanf("%s",pcon->person[pcon->user_count].tel);

printf("Please input addr:");

scanf("%s",pcon->person[pcon->user_count].addr);

pcon->user_count++;

return 1;

}

int del(pContacts pcon)//删除联系人

{

int i = 0;

int ret = find(pcon);

if(ret != -1)

{

for(i = ret;i < pcon->user_count-1;i++)

{

pcon->person[i] = pcon->person[i+1];

}

pcon->user_count--;

return 1;

}

else

{

printf("not exist!\n");

return -1;

}

}

int clear(pContacts pcon) //清理全部联系人

{

pcon->user_count = 0;

return 1;

}

int find(pContacts pcon) //查找联系人

{

int ret = find_entry(pcon);

if(ret != -1)

{

printf("name:%s\n",pcon->person[ret].name);

printf("sex:%s\n",pcon->person[ret].sex);

printf("age:%d\n",pcon->person[ret].age);

printf("tele:%s\n",pcon->person[ret].tel);

printf("addr:%s\n",pcon->person[ret].addr);

return 1;

}

else

{

printf("not exist!\n");

return -1;

}

}

int modify(pContacts pcon) //编辑联系人

{

int ret = find(pcon);

if(ret != -1)

{

printf("Please input name:");

scanf("%s",pcon->person[ret].name);

printf("Please input sex:");

scanf("%s",pcon->person[ret].sex);

printf("Please input age:");

scanf("%s",pcon->person[ret].age);

printf("Please input tele:");

scanf("%s",pcon->person[ret].tel);

printf("Please input addr:");

scanf("%s",pcon->person[ret].addr);

return 1;

}

else

{

printf("not exist!\n");

return -1;

}

}

void show(pContacts pcon) //显示全部联系人

{

int i = 0;

for(i = 0;i < pcon->user_count;i++)

{

printf("\n\t\tname:\t%-10s",pcon->person[i].name);

printf("\n\t\tsex:\t%-5s", pcon->person[i].sex);

printf("\n\t\tage:\t%-2d",pcon->person[i].age);

printf("\n\t\ttel:\t%-20s",pcon->person[i].tel);

printf("\n\t\taddr:\t%-20s\n",pcon->person[i].addr);

}

printf("\n");

}

int main()//主函数

{

char flag=1;

struct Contacts person;

person.user_count=0;

printf("\t\t1.增加联系人\n");

printf("\t\t2.删除联系人\n");

printf("\t\t3.修改联系人\n");

printf("\t\t4.查找联系人\n");

printf("\t\t5.显示所有联系人\n");

printf("\t\t6.清空联系人列表\n");

printf("\t\t0.退出通讯录\n");

while(flag>0&&flag<=6)//先进入系统,然后再仅进行操作!

{

printf("\n\n\t\t请键入您要执行操作的序号:");

scanf("%d",&flag);

switch(flag)

{

case 1:add(&person);break;

case 2:del(&person);break;

case 3:modify(&person);break;

case 4:find(&person);break;

case 5:show(&person);break;

case 6:clear(&person);break;

case 0:printf("\n\n\n\t\t*********************exit!********************\n\n\n\n");break;

default :printf("\n\t\tyour enter is error!\n");

}

}

return 0;

}

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

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

相关文章

Java类加载机制的理解

算上大学&#xff0c;尽管接触Java已经有4年时间并对基本的API算得上熟练应用&#xff0c;但是依旧觉得自己对于Java的特性依然是一知半解。要成为优秀的Java开发人员&#xff0c;需要深入了解Java平台的工作方式&#xff0c;其中类加载机制和JVM字节码这样的核心特性。今天我将…

java学习(171): 枚举类

定义一个枚举类 //枚举类型 public enum test122 {RED,GREEN,BLUE;}测试类 public class test123 {public static void main(String[] args){System.out.println( test122.BLUE );test122[] sigstest122.values();for(test122 e:sigs){System.out.println( "枚举名称&qu…

[剑指offer]面试题第[48]题[Leetcode][JAVA][第3题][无重复字符的最长字串][滑动窗口][HashSet/Map]

【问题描述】[第3题][无重复字符的最长字串] 给定一个字符串&#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 示例 2:输入: "bb…

c语言程序改错例题,C语言程序改错习题

C语言程序改错习题行动是通向成功的唯一途径。以下是小编为大家搜索整理的C语言程序改错习题&#xff0c;希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!在考生文件夹下&#xff0c;给定程序MODI.C的功能是&#xff1a;求一维数组a中的.最大元素及其下标。…

java学习(172): 使用class实现反射编程,创建对象

//class反射编程 //定义一个学生类 public class test124 {public String name;protected int age;double height;private double money;public test124(String name,Integer age){this.namename;this.ageage;}public test124(String name,int age,double money){this.namename…

关于mysql中GROUP_CONCAT函数的使用

偶然看到公司存储过程中有个字符串拼接的函数&#xff0c;改bug过程中使用到了&#xff0c;还挺有用的&#xff0c;于是记录下来方便记忆&#xff0c;帮助有需要的人。 这是我需要整理的串&#xff0c;他是调用了一个存储过程&#xff0c;传入组织机构的id和迭代层数&#xff0…

linux中tuned是否启动命令,tuned-adm 性能调优分析

tuned-adm 性能调优分析徐小东 (a.k.a toy)(xxdlhygmail.com)2017.04tuned-adm 简介RHEL 自带的性能调优工具&#xff0c;通过针对特定应用场景提供配置 (profile) 来改善系统性能性能调优方向CPU: governor、energy_perf_bias、min_perf_pct性能调优方向CPU: governor、energy…

java学习(173):class反射编程方法

//class反射编程 //定义一个学生类 public class test124 {public String name;protected int age;double height;private double money;public test124(String name,Integer age){this.namename;this.ageage;}public test124(String name,int age,double money){this.namename…

[剑指offer]面试题第[25]题[Leedcode][JAVA][第21题][合并两个有序链表]

【问题描述】[简单] 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a;输入&#xff1a;1->2->4, 1->3->4 输出&#xff1a;1->1->2->3->4->4【解答思路】 1. 非递归 时间复杂度&…

Windos下navcat连接虚拟机中的mysql

进入mysql命令行&#xff0c; 使用root用户&#xff0c;密码&#xff1a;youpassword&#xff08;你的root密码&#xff09;连接到mysql服务器&#xff1a;  # mysql -u root -proot   mysql>GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY youpassword WITH GRAN…

第二十三期:大规模网站架构?你是否熟悉?

大规模网站架构 •PHP –facebook,yahoo •Java –taobao,163 •Python –google •.NET –MySpace 语言不是可伸缩性的关键&#xff0c;架构才是关键 网站架构的目标 •高可用性(High Availability) •可伸缩性(Scalability) •高性能(High Performance) 事务 …

c语言子查询返回子菜单,T-SQL基础(三)之子查询与表表达式

子查询在嵌套查询中&#xff0c;最外面查询结果集返回给调用方&#xff0c;称为外部查询。嵌套在外部查询内的查询称为子查询&#xff0c;子查询的结果集供外部查询使用。根据是否依赖外部查询&#xff0c;可将子查询分为自包含子查询和相关子查询。自包含子查询不依赖外部查询…

centos踩坑指南之安装composer

composer是php的一个依赖管理器&#xff0c;那么安装composer可以快速编译php 但是在centos7以上 安装composer的有一个步骤有个小问题 对于centos6来说是 sudo mv composer.phar /usr/local/bin/composer对于centos7来说 sudo mv composer.phar /usr/bin/composer 这点要是不知…

[Leedcode][JAVA][第98题][验证二叉搜索树]

【问题描述】[第98题][验证二叉搜索树][中等] 给定一个二叉树&#xff0c;判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征&#xff1a;节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜…

图解CPU?

了解CPU 芯片组 CPU微观图 Cache层次结构 Cache-续 Xeon 5600系列CPU CPU内部各部件访问速度 False sharing问题 Cache lines Intel Sandy Bridge来了 CPU拓扑结构图 Cache相关硬件事件

c语言获取dll文件路径,C语言URLDownloadToFile获取文件下载进度

URLDownloadToFile是urlmon.dll提供的网络操作API&#xff0c;可以用于从指定的URL下载文件到本地&#xff0c;在C中通过类很容易实现下载进度的获取&#xff0c;今天需要在C语言中使用到这个函数&#xff0c;这里记录一下使用方法。该函数的定义如下所示。HRESULT URLDownload…

HOG特征人体检测

1. 引言 HOG&#xff08;Histogram of Oriented Gradient&#xff09;&#xff0c;即方向梯度直方图。它通过计算和统计局部区域的梯度方向直方图来构成特征&#xff0c;一般与SVM分类器结合用于目标的图像识别。由于人体姿势和外表的多变&#xff0c;在图像中检测人体是一项具…

[Leedcode][JAVA][第45题][跳跃游戏 II][贪心算法]

【问题描述】[Leedcode][JAVA][第45题][跳跃游戏 II] 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置&#xff0c;跳 1 步&#xff0c;然后跳 3 步到达数组的最后一个位置。【解答思路】 1. 动态规划 超时 第 1 步&…

大型动态应用系统平台系统架构?这些大家并不陌生

大型动态应用系统平台系统架构[多图] 动态应用&#xff0c;是相对于网站静态内容而言&#xff0c;是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式…

c语言round函数能四舍五入吗,怎么利用round函数实现四舍五入?

Excel强大的制表功能让很多人都对它无比依赖&#xff0c;它也早已成为日常必备的工具。我们在办公室工作时&#xff0c;经常会遇到要用 Excel处理数字的情况&#xff0c;需要对其进行四舍五入。那么实现这一操作&#xff0c;我们需要使用哪些Excel函数呢&#xff1f;今日小编就…