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. js实现replaceAll方法

    js本来有replace方法,请看w3school的说明: replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 语法: stringObject.rep ...

  2. Qt 中的对象模型(Object Model)

    原标题:Qt 中的对象模型(Object Model)90不太后,余生皆折腾 本节内容主要讲了 Qt 对象模型比标准 C++ 对象模型多了什么内容,并介绍了组成 Qt 对象模型基础的相关的类.最后说明 ...

  3. 算法的时间复杂度O

    一.时间复杂度 在进行算法分析时,语句总的执行次数 T(n) 是关于问题的规模n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 的数量级,算法的时间复杂度,也就是算法的时间度量,记作 ...

  4. button按钮的状态为disabled禁用状态,click事件无法触发,但是为什么touchstart下却依然可以触发

    切换到移动模拟模式,并点击按钮,查看控制台. 发现click没有事件没有触发,而touch事件依然触发. 解决办法: 对于移动端我们使用css来禁止按钮,达到disable的效果: 对,就是这个神奇的 ...

  5. Android WebServer相关项目

    1.AndServer AndServer是Android平台的Web Server和Web Framework. 它基于编译时注解提供了类似SpringMVC的注解和功能,如果您熟悉SpringMV ...

  6. Vue导出ZIP

    Export2Zip /* eslint-disable */ require('script-loader!file-saver'); import JSZip from 'jszip' expor ...

  7. openresty开发系列16--lua中的控制结构if-else/repeat/for/while

    openresty开发系列16--lua中的控制结构if-else/repeat/for/while 一)条件 - 控制结构 if-else if-else 是我们熟知的一种控制结构.Lua 跟其他语 ...

  8. ISO/IEC 9899:2011 条款6.8.1——标签语句

    6.8.1 标签语句 语法 1.labeled-statement: identifier    :    statement default    :    statement case    co ...

  9. Spring cloud微服务安全实战-5-12实现基于token的SSO(2)

    我只要把这个meFilter放在AuthorizationFilter后面就可以了. authorizationFilter的排序是3 MeFilter设置为4 就可以了. 拿到了username直接 ...

  10. ES6深入浅出-4 迭代器与生成器-2.Symbol 和迭代器

    symbol https://zhuanlan.zhihu.com/p/22652486 Es5中的数据类型,所有的复杂类型都是对象类型. ES6里面增加了symbol类型,用处不多. https:/ ...