制作一个简单的通讯录:
一.总体方针

1.test.c
测试
2.contact.c
实现函数的功能
3.contact.h
声明函数

二.通讯录的主要内容简介

1.存放1000个好友信息
名字
电话
性别
住址
年龄
2.增加好友信息
3.删除指定名字的好友信息
4.查找好友信息
5.修改好友信息
6.打印好友信息
7.排序

三.制作
1.test.c
测试

#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
void menu()
{printf("************************************\n");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;//创建通讯录//int size = 0;//struct PeoInfo con[MAX];//存放一千个人信息struct Contact con;//相当于上两行//con就是通讯录,里面包含:1000个元素的数和size //初始化通讯录InitContact(&con);do{menu();printf("请选择:>");scanf("%d",&input);switch (input){case ADD:AddContact(&con);break;case DEL:DelContact(&con);break;case SEARCH:SearchContct(&con);break;case MODIFY:ModfyContact(&con);break;case SHOW:ShowContact(&con);break;//case SORT://SortContact(&con);break;case EXIT:printf("退出通讯录\n");break;default:printf("输入错误\n");break;}}while(input);return 0;
}

2.contact.c
实现函数的功能

#define _CRT_SECURE_NO_WARNINGS 1#include"contact.h"void InitContact(struct Contact* ps)
{memset(ps->data, 0, sizeof(ps->data));ps->size = 0;//设置通讯录最初只有0个元素
}
void AddContact(struct Contact* ps)
{if (ps->size == MAX){printf("通讯录已满,无法增加\n");}else{printf("请输入名字:>");scanf("%s", ps->data[ps->size].name);printf("请输入年龄:>");scanf("%d", &(ps->data[ps->size].age));printf("请输入性别:>");scanf("%s", ps->data[ps->size].sex);printf("请输入电话:>");scanf("%s", ps->data[ps->size].tele);printf("请输入地址:>");scanf("%s", ps->data[ps->size].addr);ps->size++;printf("添加成功\n");}
}void ShowContact(const struct Contact* ps)
{if (ps->size == 0){printf("通讯录为空\n");}else{int i = 0;printf("%-20s\t%-4s\t%-5\t%-12s\t%-20s\n", "名字", "年龄", "性别", "电话", "地址");for (i = 0; i < ps->size; i++){printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",ps->data[i].name,ps->data[i].age,ps->data[i].sex,ps->data[i].tele,ps->data[i].addr);}}
}static int FindByName(const struct Contact* ps, char name[MAX_NAME])
{int i = 0;for (i = 0; i < ps->size; i++){if (0 == strcmp(ps->data[i].name, name))return i;return -1;}
}void DelContact(struct Contact* ps)
{char name[MAX_NAME];printf("请输入删除人的名字:>");scanf("%s", name);//1.查找需要删除的人的位置//int i = 0;//for (i = 0; i < ps->size; i++)//{//   if (0 == strcmp(ps->data[i].name, name))//     break;//}//找到返回名字所在元素的下标//找不到返回-1int pos = FindByName(ps,name);//2.删除if (pos == -1){printf("需要删除的人不存在\n");}else{//删除数据int j = 0;for (j = pos; j < ps->size-1; j++){ps->data[j] = ps->data[j + 1];}ps->size--;printf("删除成功\n");}}void SearchContct(const struct Contact* ps)
{char name[MAX_NAME];printf("请输入需要查找让你的名字:>");scanf("%s", name);//int i = 0;//for (i = 0; i < ps->size; i++)//{//   if (0 == strcmp(ps->data[i].name, name))//     break;//}int pos = FindByName(ps, name);if (pos == -1){printf("要查找的人不存在\n");}else{printf("%-20s\t%-4s\t%-5\t%-12s\t%-20s\n", "名字", "年龄", "性别", "电话", "地址");printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",ps->data[pos].name,ps->data[pos].age,ps->data[pos].sex,ps->data[pos].tele,ps->data[pos].addr);}
} void ModfyContact(struct Contact* ps)
{char name[MAX_NAME];printf("请输入需要修改人的名字");scanf("%s", name);int pos = FindByName(ps, name);if (pos == -1){printf("需要修改的人信息不存在\n");}else{printf("请输入名字:>");scanf("%s", ps->data[pos].name);printf("请输入年龄:>");scanf("%d", &(ps->data[pos].age));printf("请输入性别:>");scanf("%s", ps->data[pos].sex);printf("请输入电话:>");scanf("%s", ps->data[pos].tele);printf("请输入地址:>");scanf("%s", ps->data[pos].addr);printf("修改完成\n");}
}

3.contact.h
声明函数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#define MAX 1000//写在这里是因为方便以后修改内容
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 12
#define MAX_ADDR 30enum Option
{EXIT,ADD,DEL,SEARCH,MODIFY,SHOW//SORT
};struct PeoInfo
{char name[MAX_NAME];int age;char sex[MAX_SEX];char tele[MAX_TELE];char addr[MAX_ADDR];
};//通讯录类型
struct Contact
{struct PeoInfo data[MAX];int size;
};//声明函数
//初始化通讯录的函数
void InitContact(struct Contact* ps);//增加一个信息到通讯录
void AddContact(struct Contact* ps);//打印通讯录中的信息
void ShowContact(const struct Contact* ps);//删除指定的联系人
void DelContact(struct Contact* ps);//查找指定的人的信息
void SearchContct(const struct Contact* ps);//修改指定联系人
void ModfyContact(struct Contact* ps);

注:个人结合老师上课内容对结构体的认识,本人萌新可能有许多不正到之处,望周正。

制作一个简单的通讯录相关推荐

  1. 使用 Flutter 制作一个简单的笑话生成器应用程序

    在本教程中,我将向您展示如何使用 Flutter 制作一个简单的笑话生成器应用程序 对于这个项目,我们将从 RESTful API 获取数据 API的链接: 随机笑话 对于这个项目,我不会关注应用程序 ...

  2. 实例学习SSIS(一)--制作一个简单的ETL包

    http://www.cnblogs.com/tenghoo/archive/2009/10/archive/2009/10/archive/2009/10/16/ssis_lookup.html 导 ...

  3. 用结构体写一个简单的通讯录

    一个简单的通讯录 通讯录应该具备简单的一些功能 1 增添联系人 2 删除联系人 3 查找联系人 4 修改联系人 5 按名字给联系人排序 6 查看通讯录 除此之外,应该在实现上还应该具备一些其他的功能函 ...

  4. python计算器教程,用Python程序制作一个简单的计算器

    用Python程序制作一个简单的计算器 在此示例中,您将学习创建一个简单的计算器,该计算器可以根据用户的输入进行加,减,乘或除. 要理解此示例,您应该了解以下Python编程主题: 通过函数创建简单计 ...

  5. 32位mips运算器logisim_大神教你制作一个简单的16位CPU

    如何制作一个简单的16位CPU,首先我们要明确CPU是做什么的,想必各位都比我清楚,百度的资料也很全..... 如果想要制作一个CPU,首先得明白下计算机的组成结构(或者计算机的替代品,因为并不是只有 ...

  6. (译)如何使用GameCenter制作一个简单的多人游戏教程:第一部分

    免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...

  7. 数字信号 fft c源码_如何制作一个简单的人体动态识别微信小程序(附源码)

    知乎小白第一次写专栏,还请多指教. 先放成果. GitHub源码: lrioxh/HAR-applet-of-Wechat​github.com b站演示视频: 居然不需要服务器?!如何制作一个简单的 ...

  8. 用计算机制作动画,如何使用制作工具制作一个简单的Flash动画-电脑自学网

    怎么制作Flash动画?通过Adobe Flash我们可以制作出非常有趣好看的动画,也可以制作一键简单的小动画,下面给大家介绍如何使用制作工具制作一个简单的Flash动画. 操作方法: 1.打开fla ...

  9. 制作一个简单的Chrome extensions并发布到应用商店

    制作一个简单的Chrome extensions并发布到应用商店 制作一个简单的Chrome extensions并发布到谷歌商店 一个简单的ShowTime extension 注:工具推荐使用VS ...

  10. 制作一个简单的轮播图(详解新手教学)

    制作一个简单的轮播图(详解新手教学) 相信很多初学者,无论是前端还是后端,对于制作页面时,都想自己亲手制作一个轮播图. 如何制作一个轮播图: 基础知识:有HTML,Css,js基础 本文使用技术: H ...

最新文章

  1. Rocksdb 获取当前db内部的有效key个数 (估值)
  2. javascript 检测 header下载文件--插件
  3. 05、HttpServletRequest
  4. 最简单的opencv安装方法----利用annaconda安装opencv
  5. 51单片机计算机实物焊接,基于51单片机的最小系统焊接图 浅谈单片机最小系统...
  6. html5实现圆圈里带一个三角形,CSS制作箭头图标代码(圆,三角形,椭圆)c
  7. linux z是什么文件夹,Linux znew初学者命令实例教程
  8. 网络安全技术(第4版)复习资料整理
  9. 传媒《财务管理》课程考试作业考核试题
  10. Excel批量复制选中单元格的整行
  11. 随想录:开发一流Android SDK
  12. vue2 项目启动一直卡在98%Starting development server...98% after emitting CopyPlugin
  13. 《非计算机毕业生2015互联网校招求职之路》2014-10-15
  14. Linxu命令(3)
  15. 2021朋友圈都在传的10本书,找到了
  16. RPC框架入门 学习梁飞的RPC
  17. python简易计算器报告_python 简易计算器
  18. 蹭WiFi掉黑客陷进怎么破
  19. 做“小米”还是“特斯拉”,后疫情时代小牛电动如何走?
  20. 华为校招机试 - 检测热点字符(Java JS Python)

热门文章

  1. UVC协议学习1--初步了解标准协议规范(UVC1.5为例)
  2. Spring源码下载编译全过程!超详细的步骤!!!
  3. charset参数 sqluldr2_sqluldr2.bin数据库导出工具
  4. 软件开发需求文档案例_第2部分:开发软件需求,一个案例研究
  5. 【安全测试】AppScan:下载与安装
  6. TGS.Avizo.v5.0 1CD
  7. Axure Rp8激活码
  8. axure 2021.04.26
  9. excel删除行闪退_excel打开闪退解决 打开excel自动退出 自动关闭的解决
  10. 飞机大战(Java)