2、C语言实现通讯录
main函数入口:
//test.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "address.h" //显示界面
void Interface_Display()
{
printf("**********通讯录**********\n");
printf("****1.添加联系人信息******\n");
printf("****2.删除指定联系人信息**\n");
printf("****3.查找指定联系人信息**\n");
printf("****4.修改指定联系人信息**\n");
printf("****5.显示所有联系人信息**\n");
printf("****6.清空所有联系人******\n");
printf("****7.按名字排序所有联系人\n");
printf("****8.退出通讯录**********\n");
printf("\n");
printf("请输入要操作的序号:\n");
} int main()
{
Con pcon;
int choice=;
Init(&pcon);
while (choice)
{
Interface_Display(); printf("请选择操作序号:>");
scanf("%d", &choice);
switch (choice)
{
case :
Insert(&pcon); //插入
system("cls"); //清屏
break;
case :
Delete(&pcon); //删除
system("cls");
break;
case :
Search(&pcon); //查找
break;
case :
Change(&pcon); //修改
system("cls");
break;
case :
Show(&pcon); //打印
break;
case :
Clear(&pcon);
break; //清除
case :
Sort(&pcon); // 以姓名排序
break;
case :
exit(); //退出
default:
printf("输入有误请重新输入!\n"); break; }
printf("\n"); }
return ;
}
//address.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<string.h> #define MAX_SIZE 1000 typedef struct pCON
{
char name[]; //姓名
char sex[]; //性别
char age[]; //年龄
char tele[]; //电话
char address[] ; //地址
}pCon; typedef struct CONTACT
{
struct pCON data[MAX_SIZE]; //存储最大容量
int size; //当前存储容量
}Con; void Init(Con* pcon); //初始化
void Insert(Con* pcon); //插入
void Delete(Con* pcon); //删除
void Search(Con* pcon); //查找
void Change(Con* pcon); //更改
void Show(Con* pcon); //打印
void Clear(Con* pcon); //清除
void Sort(Con* pcon); //以姓名排序
//address.c
#include"address.h"
void Init(Con* pcon) //初始化
{
if (pcon == NULL)
{
printf("非法输入!\n");
return;
}
pcon->size = ;
} int find(Con *pcon, char *name) //根据姓名查找位置
{
int i = ;
for (i = ; i < pcon->size; i++)
{
if (strcmp(name, pcon->data[i].name)==)
{
return i;
}
}
return -;
} void Insert(Con *pcon) //插入
{
if (pcon->size == MAX_SIZE)
{
printf("通讯录已经满了!\n");
return;
}
printf("请输入名字:");
scanf("%s", (pcon->data[pcon->size]).name);
printf("请输入性别:");
scanf("%s", (pcon->data[pcon->size]).sex);
printf("请输入年龄:");
scanf("%s", (pcon->data[pcon->size]).age);
printf("请输入电话:");
scanf("%s", (pcon->data[pcon->size]).tele);
printf("请输入地址:");
scanf("%s", (pcon->data[pcon->size]).address);
pcon->size++;
} void Delete(Con *pcon) //删除
{
char name[];
int ret = ;
printf("请输入要删除人的名字:");
scanf("%s", name);
ret = find(pcon, name);
if (ret!=-)
{
int i = ;
for (i = ret; i < pcon->size-; i++)
{
pcon->data[ret] = pcon->data[ret + ];
}
pcon->size--;
printf("已删除该联系人\n");
}
else
{
printf("此人不存在,删除失败!\n");
}
} void Search(Con *pcon) //查找信息
{
char name[];
int ret = ;
printf("请输入联系人姓名\n");
scanf("%s", name);
ret = find(pcon, name);
if (ret!=-)
{
printf("姓名:%s 性别: %s 年龄 :%s 电话:%s 地址: %s \n",
pcon->data[ret].name, pcon->data[ret].sex,
pcon->data[ret].age, pcon->data[ret].tele,
pcon->data[ret].address );
}
else
{
printf("没有找到\n");
} } void Change(Con* pcon) //修改
{
char name[];
int ret = ;
printf("请输入联系人姓名:\n");
scanf("%s", name);
ret = find(pcon, name);
if (ret!=-)
{
printf("请输入修改后名字:");
scanf("%s", (pcon->data[ret]).name);
printf("请输入修改后性别:");
scanf("%s", (pcon->data[ret]).sex);
printf("请输入修改后年龄:");
scanf("%s", (pcon->data[ret]).age);
printf("请输入修改后电话:");
scanf("%s", (pcon->data[ret]).tele);
printf("请输入修改后地址:");
scanf("%s", (pcon->data[ret]).address);
printf("已经修改\n");
}
} void Show(Con * pcon) //显示
{
if (pcon->size == )
{
printf("通讯录为空!\n");
}
int i = ;
for (i = ; i < pcon->size; i++)
{
printf("姓名:%s 性别: %s 年龄 :%s 电话:%s 地址: %s \n",
pcon->data[i].name, pcon->data[i].sex,
pcon->data[i].age, pcon->data[i].tele,
pcon->data[i].address
);
}
} void Clear(Con *pcon) //清除
{
pcon->size = ;
} void Sort(Con *pcon) //以名字排序
{
int i = ;
int j = ;
for (i = ; i < pcon->size-; i++)
{
for (j = ; j < pcon->size - i - ; j++)
{
if (strcmp(pcon->data[j].name, pcon->data[j + ].name)>)
{
pCon tmp;
tmp = pcon->data[j];
pcon->data[j] = pcon->data[j + ];
pcon->data[j + ] = tmp;
}
}
}
}
2、C语言实现通讯录的更多相关文章
- C语言之通讯录的模拟实现
C语言之通讯录的模拟实现 在C语言学习结束之际,谨以此篇文章来对C语言的学习告一段落. 纲要: 通讯录的静态版本 通讯录的动态版本 通讯录的带文件版本 因为三种实现方法除了储存形式不同,其他都基本相同 ...
- c语言实现通讯录管理系统(c课程设计)
工具:Visual C++6.0 说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号 ...
- C语言-《通讯录》
黑白的通讯录 --1-- 需求分析 1.1 需求 1.2 原型展示 1.3 功能分析 --2-- 代码实现 2.1 外部声明.变量.宏 2.2 模块实现 ----------------------- ...
- Iphone 英语语言下通讯录排序问题
Iphone 如果把界面语言设置成English,那么通讯录默认排序是通过拼音来排的,如果联系人信息中没有设置名字的拼音,那么这些联系人都会被放到#中. 批量添加拼音的解决方案: https://gi ...
- C语言实现通讯录
<span style="font-size:18px;">#include<stdio.h> #include<string.h> #incl ...
- C语言可以开发哪些项目?
C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中--,这些迷茫也导致了我们在学习的过程 ...
- (一〇一)集成静态库RHAddressBook实现OC访问通讯录
使用官方的AddressBook框架仅能使用C语言访问通讯录,十分不便,这里介绍集成第三方框架RHAddressBook的方法,该框架可以通过OC访问和操作通讯录. 该框架是一个静态库,集成比较复杂. ...
- C语言可以开发哪些项目?(转)
原文地址:https://www.cnblogs.com/shiyanlou/p/6098661.html 知乎:https://www.zhihu.com/question/20564904 C语言 ...
- 17个C语言可以做的小案例项目
C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中……,这些迷茫也导致了我们在学习的过程 ...
随机推荐
- csapp网络编程初学笔记
csapp网络编程初学笔记 客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型,服务器管理某种资源,并且通过操作来为它的客户提供某种服务 客户端-服务器模型中的基本操作是transacti ...
- Qualcomm Audio HAL 音频通路设置【转】
本文转载自:https://blog.csdn.net/azloong/article/details/79383323 1. 音频框图概述| Front End PCMs | SoC DSP | B ...
- JVM 字节码的结构
编译的.class文件,可以用javap进行反编译 javap Test.class javap -c Test.class javap -verbose Test.class 1.创建MyTest1 ...
- The difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data
重构:改善饿了么交易系统的设计思路 原创: 盛赫 阿里巴巴中间件 昨天
- Prometheus基于consul自动发现监控对象 https://www.iloxp.com/archive/11/
Prometheus 监控目标为什么要自动发现 频繁对Prometheus配置文件进行修改,无疑给运维人员带来很大的负担,还有可能直接变成一个“配置小王子”,即使是配置小王子也会存在人为失误的情况 ...
- Nexus3.X忘记admin密码找回
一.问题背景 nexus3 这种东西,传完一次,很少动了,很容易忘记密码,不要急有方法找回. 官方网站关于解决该问题的方法: https://support.sonatype.com/hc/en-us ...
- gpload导入常见问题汇总
gpload导入常见问题汇总 java写文件后使用gpload命令导入greenplum: 问题一: 报错信息:invalid byte sequence for encoding "UTF ...
- Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)
转自https://www.cnblogs.com/lwh-note/p/9639835.html 两种情况(场景) 情况一 代码还只在本地,未push到运程仓库,想把代码还原到上一次com ...
- 如何把VMware Workstation使用的虚拟SCSI磁盘转换成虚拟IDE硬盘
如何把VMware Workstation使用的虚拟SCSI磁盘转换成虚拟IDE硬盘 摘自:http://blog.sina.com.cn/s/blog_7525b71f0101d0u8.html ...
- 基于docker构建flink大数据处理平台
https://www.cnblogs.com/1ssqq1lxr/p/10417005.html 由于公司业务需求,需要搭建一套实时处理数据平台,基于多方面调研选择了Flink. 初始化Swarm环 ...