文件cotact.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include "contact.h"
/*初始化*/
void InitContact(pContact pc)
{pc->count = 0;memset(pc->data, 0, sizeof(pc->data));
}/*增加数据*/
void AddContact(pContact pc)
{if (pc->count < 1000){printf("请输入名字>");scanf("%s", pc->data[pc->count].name);printf("请输入年龄>");scanf("%d", &pc->data[pc->count].age);printf("请输入性别>");scanf("%s", pc->data[pc->count].sex);pc->count++;}else{printf("存不下了");return;}
}/*展示*/
void ShowContact(pContact pc)
{printf("姓名:             年龄:     性别:\n");if (pc->count != 0){for (int i = 0; i < pc->count; i++){if (pc->data[i].age != 0){printf("%d|%-8s%11d%11s\n", i,pc->data[i].name,pc->data[i].age,pc->data[i].sex);}}}else{printf("通讯没有号码\n");return;}
}/*删除*/
void DelContact(pContact pc)
{printf("请输入要删除的编号");int i = 0,num;scanf("%d", &num);for (i = num; i < pc->count; i++){pc->data[i] =  pc->data[i +1];}
}/*判断输入的名字是不是重复,如果重复就删除*/
void justice(pContact pc)
{for (int i = 0; i < pc->count-1; i++){if(!strcmp(pc->data[pc->count - 1].name , pc->data[i].name)){printf("\n非法输入\n");pc->data[pc->count -1] = pc->data[pc->count];}}
}/*比较*/
char compare(const void * a, const void * b)
{return (*(char*)a+1 - *(char*)b);
}void Sort(pContact pc)
{int i;qsort (pc, pc->count, sizeof(people), compare);for (i=0; i<pc->count;i++)printf("%d|%-8s%8d%11s\n", i,pc->data[i].name, pc->data[i].age, pc->data[i].sex);return;
}/*查找*/
int search_son(pContact pc,char *name)
{int i, j;for (i = 0; i < pc->count; i++){//if (name == pc->data->name[i])//这样的比较不行,if (!strcmp(name, pc->data[i].name)){return i;}}return -1;
}
void Search(pContact pc)
{int i = 0;char name[20];//要给一个大小,要不然一直读取位置时发生访问冲突printf("name>");scanf("%s", &name);i = search_son(pc,name);if (i >= 0){printf("找到了,呜啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦!\n");printf("%d|%-8s%8d%11s\n",i,pc->data[i].name,pc->data[i].age,pc->data[i].sex);printf("******************************************\n");}else{printf("Can't find it\n");}return;
}

main.c

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include "contact.h"void menu()
{printf("*************************\n");printf("**1.add     2.show*******\n");printf("**3.search  4.delete*****\n");printf("**5.sort    0.exit*******\n");printf("*************************\n");
}int main()
{int input = 0;Contact my_con;InitContact(&my_con);do {menu();printf("please chose");scanf("%d", &input);//运行第二遍是输入字母默认为1switch (input){case ADD:AddContact(&my_con);justice(&my_con);break;case SHOW:ShowContact(&my_con);break;case DEL:DelContact(&my_con);break;case EXIT:break;case SEARCH:Search(&my_con);break;case SORT:Sort(&my_con);break;default :fflush(stdin);fflush(stdout);break;}} while (input);system("pause");return 0;
}

contact.h

#ifndef __CONTACT_H__
#define __CONTACT_H__/*
这个顺序就是switch()的顺序,注意逗号不是分号,最后一个不写符号
*/
enum OPTION
{EXIT,ADD,SHOW,SEARCH,DEL,SORT
};#define MAX_NAME 20
typedef struct PeoInfo
{char name[MAX_NAME];int age;char sex[4];
}people;typedef struct Contact
{people data[1000];int count;
}Contact,*pContact;void AddContact(pContact pc);
void InitContact(pContact pc);
void ShowContact(pContact pc);
void DelContact(pContact pc);
void justice(pContact pc);
void Search(pContact pc);
void Sort(pContact pc);
#endif // !__CONTACT_H__

简陋版C语言仿真通讯录相关推荐

  1. 简陋版C语言仿真通讯录之动态内存开辟版本

    简陋版C语言仿真通讯录 https://blog.csdn.net/csdn_kou/article/details/80287640 简陋版C语言仿真通讯录之动态内存开辟版本 给Contact结构体 ...

  2. 个人通讯管理程序C语言,个人通讯录管理系统C语言源程序(优秀版)[1]

    个人通讯录管理系统C语言源程序(优秀版)[1] 更新时间:2017/2/22 1:03:00  浏览量:613  手机版 C语言个人通讯录系统源程序: #include /*头文件*/ #includ ...

  3. 开源RISC-V处理器(蜂鸟E203)学习(五)A100T-FPGA 移植蜂鸟Hbirdv2,实现Centos下调试器USB识别以及程序编译烧写,并进行C语言仿真

    1.简述 最近购买了一块适合做原型验证FPGA板卡,板卡接口和外设比较丰富,十分适合跑一些小型的SOC工程,比如蜂鸟E203:板卡自带FPGA烧写器和软核CPU的JATG调试器,还有USB接口的UAR ...

  4. DSP定点运算之数字信号处理算法的定点化及其C语言仿真(转)

    DSP广义上指数字信号处理理论(Digital Signal Processing),狭义上指数字 信号处理器(Digital Signal Processor).数字信号处理理论广泛应用于语音.图象 ...

  5. 100例C语言经典编程题 | 浙大版C语言题目集第三版,助力你C语言从入门到精通

    获取每道题详细解答请在公众号[C you again]"C语言题目集"栏目查看. 下载pdf版本请在公众号[C you again]回复"c-pdf"自行获取. ...

  6. 教你C语言实现通讯录的详细代码

    本文详细讲解了C语言实现通讯录的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 (一)实现思路 1.通讯录功能 添加好友,删除好友,查找好友,修改 ...

  7. 新颖的c语言题目,新颖版c语言经典习题100例(全面面)

    新颖版c语言经典习题100例(全面面) (66页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实用文档C语言习题100例(最新整理版) ...

  8. 何钦铭c语言第三版第3章答案,何钦铭版C语言第3章答案精选.pdf

    何钦铭版C语言第3章答案精选 45 若要改变else 正常的配对规则,一般采用 改变else 和 if 的配对 两种方法: 例3-12 改写下列if 语句,使else 和第1个 if 配对. 采用{} ...

  9. 何钦铭版C语言第3章答案,何钦铭版C语言第3章答案

    何钦铭版C语言第3章答案 45 改变改变else 和和 if 的配对的配对 例例3-12 改写下列改写下列 if 语句,使语句,使 else 和第和第1个个 if 配对.配对. if (x 2) if ...

最新文章

  1. 全球首个Magic Leap One体验:吓到你不敢进房间
  2. C\C++ bool、int、float和double、指针与0比较的方法
  3. GDCM:gdcm::Dumper的测试程序
  4. bose耳机信号断续_最强真无线降噪耳机?BOSE QC Earbuds消噪耳塞上手评测
  5. 【Nutch2.2.1基础教程之6】Nutch2.2.1抓取流程
  6. (49)移动端开发之流式布局(百分比布局)
  7. php学校成员,php访问成员变量和成员方法
  8. Installation of Ubuntu source-insight
  9. 分享Visual SVN Hook Script—— 允许客户端编辑SVN log message
  10. 汽车美容4s连锁店会员管理系统【源码分享】
  11. 高速列车横向17自由度模型
  12. 【转】RTF格式分析
  13. oracle羊毛,预言机(Oracle)简介和撸羊毛教程— 上篇
  14. 1002内容预告:软件中国年度大盘点
  15. 本地用微信测试公众号开发对接微信支付思路
  16. 【平衡二叉樹】超市促銷
  17. 【Android SDM660源码分析】- 02 - UEFI XBL QcomChargerApp充电流程代码分析
  18. 编码、解码、总结大全
  19. 场效应晶体管与晶体三极管对比,谁能更胜一筹?
  20. 微信群转播机器人python练习制作

热门文章

  1. Oracle连接字符串记录
  2. 题解 P3811 【【模板】乘法逆元】
  3. 微信群运营之设计运营思路
  4. Mybatis处理表关联(懒加载)
  5. Java Mybatis
  6. (转)走进AngularJs(六) 服务
  7. 32位系统win2008+mssql2008 6G内存折腾纪实
  8. android ImageView 之 android:scaleTye=
  9. 在需要时开启Perl新特性
  10. WCF中的方法重载 实现