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语言实现通讯录的更多相关文章

  1. C语言之通讯录的模拟实现

    C语言之通讯录的模拟实现 在C语言学习结束之际,谨以此篇文章来对C语言的学习告一段落. 纲要: 通讯录的静态版本 通讯录的动态版本 通讯录的带文件版本 因为三种实现方法除了储存形式不同,其他都基本相同 ...

  2. c语言实现通讯录管理系统(c课程设计)

    工具:Visual C++6.0 说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号 ...

  3. C语言-《通讯录》

    黑白的通讯录 --1-- 需求分析 1.1 需求 1.2 原型展示 1.3 功能分析 --2-- 代码实现 2.1 外部声明.变量.宏 2.2 模块实现 ----------------------- ...

  4. Iphone 英语语言下通讯录排序问题

    Iphone 如果把界面语言设置成English,那么通讯录默认排序是通过拼音来排的,如果联系人信息中没有设置名字的拼音,那么这些联系人都会被放到#中. 批量添加拼音的解决方案: https://gi ...

  5. C语言实现通讯录

    <span style="font-size:18px;">#include<stdio.h> #include<string.h> #incl ...

  6. C语言可以开发哪些项目?

    C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中--,这些迷茫也导致了我们在学习的过程 ...

  7. (一〇一)集成静态库RHAddressBook实现OC访问通讯录

    使用官方的AddressBook框架仅能使用C语言访问通讯录,十分不便,这里介绍集成第三方框架RHAddressBook的方法,该框架可以通过OC访问和操作通讯录. 该框架是一个静态库,集成比较复杂. ...

  8. C语言可以开发哪些项目?(转)

    原文地址:https://www.cnblogs.com/shiyanlou/p/6098661.html 知乎:https://www.zhihu.com/question/20564904 C语言 ...

  9. 17个C语言可以做的小案例项目

    C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中……,这些迷茫也导致了我们在学习的过程 ...

随机推荐

  1. ubuntu之路——day10.3 train/dev/test的划分、大小和指标更新

     train/dev/test的划分 我们在前面的博文中已经提到了train/dev/test的相关做法.比如不能将dev和test混为一谈.同时要保证数据集的同分布等. 现在在train/dev/t ...

  2. 【软工实践】团队项目Snug-需求分析报告

    组长博客链接 博客链接 团队项目整体计划安排 阶段序列 阶段时间 主要阶段任务 完成情况 第一阶段 9.6 团队成立 已完成 第二阶段 9.6-9.13 课题选择 已完成 第三阶段 9.13-9.18 ...

  3. MD5与SHA1

    一.MD5 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于 ...

  4. sass - &的作用

    6.8. & in SassScript 就像在选择器中使用时一样,&在SassScript中引用当前父选择器.它是一个逗号分隔的列表和空格分隔的列表.例如: .foo.bar .ba ...

  5. Flutter -------- Drawer侧滑

    侧滑菜单在安卓App里面非常常见 抽屉通常与Scaffold.drawer属性一起使用.抽屉的子项通常是ListView,其第一个子项是DrawerHeader ,它显示有关当前用户的状态信息.其余的 ...

  6. 使用Dapper.Contrib

    public T Query(string sql, object param) { using (IDbConnection dbConnection = Connection) { if (dbC ...

  7. Jenkins自动化版本构建

    1.拉取代码 2.更新父版本 更新依赖版本 3.打包并推送到maven私库 4.版本控制后提交代码并打成docker镜像 PS:修改pom.xml项目版本,这里我没使用插件,直接使用脚本进行修改,这样 ...

  8. git clone时报错“Failed to connect to 127.0.0.1 port 2453: Connection refused”如何处理?

    1. 查看git的配置 git config --global --list| grep -i proxy 如果有内容输出,那么unset配置项,如: git config --global --un ...

  9. JDK动态代理在RPC框架中的应用

    RPC框架中一般都有3个角色:服务提供者.服务消费者和注册中心.服务提供者将服务注册到注册中心,服务消费者从注册中心拉取服务的地址,并根据服务地址向服务提供者发起RPC调用.动态代理在这个RPC调用的 ...

  10. 安装ORACLE服务出现Oracle Net Configuration Assistant 失败问题【我】

    安装ORACLE服务出现Oracle Net Configuration Assistant 失败问题 本地安装oracle11g,报错提示: 参考下面文章: 报错原因: 主要是对文件系统的访问权限问 ...