头文件

#pragma once
//人的信息
#define MAX 100
#define NAME_MAX 20
#define SEX_MAX 5
#define ADDR_MAX 30
#define TELE_MAX 12
#include<stdio.h>
#include<string.h>
#include<assert.h>
typedef struct PeoInfo
{char name[NAME_MAX];int age;char sex[SEX_MAX];char addr[ADDR_MAX];char tele[TELE_MAX];}PeoInfo;
typedef struct Contact
{PeoInfo data[MAX];int sz;//当前已经放的信息的个数
}Contact;
void InitContact(Contact* pc);
//增加联系人
void AddContact(Contact*pc);
void ShowContact(Contact* ps);
void DelContact( Contact*ps);
void SearchContact(Contact* ps);
void SortContact(Contact* ps);

实现文件:

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
int FindByName(Contact* ps, char name[])
{int i = 0;for (i = 0; i < ps->sz; i++){if (strcmp(ps->data[i].name, name) == 0){return i;}}return -1;
}
void InitContact(Contact* pc)
{pc->sz = 0;memset(pc->data, 0, sizeof(pc->data));
}
void AddContact(Contact* pc)
{if (pc->sz == MAX){printf("通讯录已满,无法添加");return;}printf("请输入名字\n");scanf("%s", pc->data[pc->sz].name);printf("请输入年龄\n");scanf("%d", &(pc->data[pc->sz].age));printf("请输入性别\n");scanf("%s", pc->data[pc->sz].sex);printf("请输入地址\n");scanf("%s", pc->data[pc->sz].addr);printf("请输入电话\n");scanf("%s", pc->data[pc->sz].tele);pc->sz++;
}
void ShowContact(Contact*pc)
{int i = 0;printf("%-20s\t%-4s\t%-5s\t%-20s\t%-12s\n", "名字", "年龄", "性别", "地址", "电话");for (i = 0; i < pc->sz; i++){printf("%-20s\t%-4d\t%-5s\t%-20s\t%-12s\n",pc->data[i].name,pc->data[i].age,pc->data[i].sex,pc->data[i].addr,pc->data[i].tele);}
}
//删除指定联系人
void DelContact( Contact* ps)
{char name[NAME_MAX] = { 0 };if (ps->sz == 0){printf("通讯录为空,无法删除\n");return;}printf("请输入要删除的人的名字:");scanf("%s",name);int ret = FindByName(ps, name);if (-1 == ret){printf("要查找的人不存在");}//删除for (int i = ret; i < (ps->sz)-1; i++){ps->data[i] = ps->data[i + 1];}ps->sz--;printf("删除成功");
}void SearchContact(Contact * ps){char name[NAME_MAX] = { 0 };printf("请输入要寻找的人的名字:");scanf("%s", name);int pos = FindByName(ps,name);if (pos == -1){printf("无该人物");return;}//打印信息printf("%-20s\t%-4s\t%-5s\t%-20s\t%-12s\n", "名字", "年龄", "性别", "地址", "电话");printf("%-20s\t%-4d\t%-5s\t%-20s\t%-12s\n",ps->data[pos].name,ps->data[pos].age,ps->data[pos].sex,ps->data[pos].addr,ps->data[pos].tele);}void ModifyContact(Contact* ps){char name[NAME_MAX] = { 0 };printf("请输入要寻找的人的名字:");scanf("%s", name);int pos = FindByName(ps, name);if (pos == -1){printf("无该人物");return;}printf("请输入名字\n");scanf("%s", ps->data[pos].name);printf("请输入年龄\n");scanf("%d", &(ps->data[pos].age));printf("请输入性别\n");scanf("%s", ps->data[pos].sex);printf("请输入地址\n");scanf("%s", ps->data[pos].addr);printf("请输入电话\n");scanf("%s", ps->data[pos].tele);printf("修改完成");}//按年龄大小排序void SortContact(Contact* ps){for (int i = 0; i < ps->sz-1; i++){for (int j = 0; j < ps->sz - 1; j++){if (ps->data[j].age >ps->data[j + 1].age){int age = ps->data[j].age;ps->data[j].age = ps->data[j + 1].age;ps->data[j + 1].age = age;}}}}

测试文件:

#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h"
void menu()
{printf("****1.add      2.del   ****\n");printf("****3.search   4.modify****\n");printf("****5.show     6.sort  ****\n");printf("****0.exit             ****\n");printf("***************************\n");
}
int main()
{int input = 0;Contact con;//初始化;InitContact(&con);do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:AddContact(&con);break;case 2:DelContact(&con);break;case 3:SearchContact(&con);break;case 4: ModifyContact(&con);break;case 5:ShowContact(&con);break;case 6:SortContact(&con);break;default:printf("退出通讯录");break;}} while (1);
}

波奇C语言模拟通讯录设计相关推荐

  1. 【C语言】通讯录设计

    通讯录成员信息包括: 姓名.电话.性别.年龄 通讯录功能解析 1.添加通讯录成员 2.展示通讯录         3.查询成员 4.删除通讯录成员         5.排序 0.退出通讯录 注:因需实 ...

  2. 实践 C语言进阶通讯录设计

    通讯录的实现 文件目录 需求分析 1. 存放1000个好友的信息信息内容包括:姓名.电话.性别.住址.年龄 2. 增加好友信息 3. 删除指定好友的信息 4. 查找好友信息 5. 修改好友信息 6. ...

  3. 第二届 “国信蓝点”软件设计大赛 C语言模拟题(附程序题 解题程序)

    第二届 "国信蓝点"软件设计大赛 C语言模拟题 一 .以下是简答题: 1.代码填空 形如:"abccba","abcba"的串称为回文串,下 ...

  4. c语言 数据结构 课程设计 通讯录制作

    c语言  数据结构  课程设计  源码 infoBook.c #include "dataStruct.h" #include <stdio.h> #include & ...

  5. c语言个人通讯录管理系统实验报告_C语言个人通讯录管理系统课程设计报告

    语言程序设计> C <课程设计报告 _________:__________C 设计题目语言个人通讯录管理系统 摘要 本次课程设计地题目为个人通讯录管理系统, 要求将程序中所输入地联系人姓 ...

  6. C/C++《程序设计基础(C语言)课程设计》[2023-04-20]

    C/C++<程序设计基础(C语言)课程设计>[2023-04-20] <程序设计基础(C语言)课程设计> 课程说明及动员 <程序设计基础(C语言)课程设计>指导教师 ...

  7. 【C语言进阶】C语言实现通讯录

    目录 一.引言 二.如何实现通讯录 1.通讯录要求 2.创建主菜单 3.初步设置主函数 4.创建通讯录 5.初始化通讯录 6.case 1(增加联系人) 7.case 5(显示通讯录中的信息) 8.c ...

  8. C语言程序设计课程设计题目[2023-02-11]

    C语言程序设计课程设计题目[2023-02-11] C语言程序设计课程设计题目 选题说明: 1.以下题目有部分可能功能相近,请同学们可从不同的角度来分析实现. 2.题目描述和要求仅供参考,同学们可以查 ...

  9. c语言编程课程心得,c语言编程课程设计心得.docx

    C语言编程课程设计心得 C语言编程课程设计心得 河南城建学院 <C语言程序设计>课程设计报告 适用专业工程管理专业课程名称C语言程序设计指导教师赵军民.魏新红.张芳芳 设计人:051409 ...

最新文章

  1. 参观Speedy Cloud 有感
  2. 149. Max Points on a Line同一条线上的最多点数
  3. 林华达视角-概率图模型与计算机视觉
  4. 微信小程序开发必看,《使用 .NET Core + DevOps 开发微信跨平台应用》,苏州.NET俱乐部课程分享...
  5. Python isnumeric()方法
  6. Mybatis源码阅读(二):动态节点解析2.1 —— SqlSource和SqlNode
  7. setint 的用法
  8. HBase笔记整理(二)
  9. 如何使用 Pages 在 iPhone、iPad 或 Mac 上插入和编辑表格?
  10. Apache搭建web网站服务器
  11. 信息系统管理师备考指南
  12. 创龙TI TMS320C6748定点/浮点DSP C674xSD卡接口、拓展IO信号
  13. VMware虚拟机下Ubuntu18.04学校宽带拨号连接网络
  14. SEO人员快速提升关键词优化排名的方法
  15. MATLAB实现自编码器(三)——堆栈自编码器Stacked Autoencoders实现手写数字分类
  16. / 和 /* 和 /** 的区别
  17. 测绘资质申请条件及办理资质要求
  18. ROS中的imu_transformer包是什么,在哪里可以下载啊
  19. Linux 面试知识点
  20. 不想参加难度较高的全国联考,可以选择中外合作办学硕士在职研究生

热门文章

  1. DS1302时钟程序解读
  2. 初学AE影视后期的电脑硬件配置知识…
  3. DiskGenius备份/还原分区=备份Windows系统
  4. 微信小程序api记载
  5. 微信小程序开发教程-微信小程序入门
  6. Theano官方文档的测试和总结(1):安装、基础语法、逻辑斯蒂回归
  7. 电话号码分身 java,每日一题C++版(电话号码分身)
  8. 打印机问题:虚拟机连接打印机、物理机连接打印机
  9. 23种设计模式详解(代码讲解、持续更新)
  10. 如何设置微信公众号的测试号的菜单