**制作一个电子通讯录,通过该通讯录能录入好友ID号、姓名(英文)、手
机号码,家庭住址,公司电话。**
原理:分成5个模块,将模块功能实现写入头文件中。主函数部分代码:
显示函数部分,在Markdown里对不齐,意思就这样,将就一下=。=

/*******************************************************************
需求:制作一个电子通讯录,通过该通讯录能录入好友ID号、姓名(英文)、手
机号码,家庭住址,公司电话。
模块:主界面:主要显示软件功能,A)添加好友信息 B)列表好友信息。(包含排序功能) C)搜索好友 D)删除好友A)用户输入INSERT命令后,让用户输入好友信息。添加成功或失败都需提示B)用户输入DISPLAY命令后,好友信息升序排列C)用户输入SEARCH命令后,让用户输入将要搜索好友姓名查询。如果未搜索到请友好提示。如果搜索到,显示处该好友信息D)用户输入DELETE命令后,让用户输入将要删除好友姓名删除,如果存在同名的多个好友,则列表出,所有同名的好友信息,让用户通过输入ID号删除提示用户删除成功。
**********************************************************************/
#include "head.h"int main ()
{int Function;int i = 0;char Name[N];int cho;PNode head_node = (PNode) malloc(sizeof(Node)/sizeof(char));if (NULL == head_node){return MALLOC_ERROR;}head_node->next = NULL;while (1){Interface_Display ();scanf ("%d", &Function);switch (Function)               // 功能选择{case 1:                     // 添加好友{Function = 0;Add_Friend (head_node, i++);int j;printf ("\t正在添加\n");printf ("\t请稍候");fflush (stdout);        // 强制刷新缓存,输出显示for (j = 0; j < 3; j++){sleep (1);          // Linux 使用sleep,参数为秒printf (".");fflush (stdout);    // 强制刷新缓存,输出显示}printf ("\n");printf ("\t添加成功!\n");printf ("\t返回主菜单请输入1:");scanf ("%d", &cho);if (1 == cho){break;}else{printf ("\t对不起!您的输入有误!请重新输入:");scanf ("%d", &cho);break;}break;}           case 2:                 // 显示好友信息{system ("clear");printf ("\t*********好友信息********\n");printf ("\n");Friend_Information (head_node);Function = 0;printf ("\t返回主菜单请输入1:");scanf ("%d", &cho);if (1 == cho){break;}else{printf ("\t对不起!您的输入有误!请重新输入:");scanf ("%d", &cho);break;}break;}case 3:                 // 查找好友{system ("clear");printf ("\t*************查找好友*************\n");printf ("\t请输入您要查找的好友姓名:");scanf  ("%s", Name);printf ("\n");int j;          printf ("\t正在查找\n");printf ("\t请稍候");fflush (stdout);        // 强制刷新缓存,输出显示for (j = 0; j < 3; j++){sleep (1);          // Linux 使用sleep,参数为秒printf (".");fflush (stdout);    // 强制刷新缓存,输出显示}printf ("\n");Search_Friend (head_node, Name);printf ("\t返回主菜单请输入1:");scanf ("%d", &cho);if (1 == cho){break;}else{printf ("\t对不起!您的输入有误!请重新输入:");scanf ("%d", &cho);break;}break;}case 4:                     //删除好友{system ("clear");printf ("\t*************删除好友*************\n");printf ("\t请输入要删除好友的姓名:");scanf  ("%s", Name);printf ("\n");Delete_Friend (head_node, Name);printf ("\t返回主菜单请输入1:");scanf ("%d", &cho);if (1 == cho){break;}else{printf ("\t对不起!您的输入有误!请重新输入:");scanf ("%d", &cho);break;}break;}   case 5:                     //退出通讯录{Function = 0;system ("clear");exit (0);}default:                    //输入有误{Function = 0;printf ("\t对不起!您的输入有误!请重新输入:");scanf ("%d", &Function);break;}           }       }   return 0;
}

head.h部分:

#ifndef HEAD_H_
#define HEAD_H_#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>             // sleep函数头文件#define uint unsigned int
#define OK            0
#define ERROR         -1
#define MALLOC_ERROR  -2
#define N             20 typedef int ElementType;
typedef struct node
{ElementType ID;             // ID号char Name [N];              // 姓名char Mobile_Phone [N];      // 手机号码char Home_Address [N];      // 家庭住址char Company_Tell [N];      // 公司电话struct node* next;          // 节点指针
}Node;
typedef Node* PNode;            //重命名节点指针类型//显示操作界面
int Interface_Display ();//添加好友信息 (尾插法)
int Add_Friend (PNode head, ElementType num);//显示所有好友信息
int Friend_Information (PNode head);//查找好友
int Search_Friend (PNode head, char* Name);//删除好友
void Delete_Friend (PNode head, char* Name);#endif

head.c的代码:

#include "head.h"//显示操作界面
int Interface_Display ()
{system ("clear");printf ("\t************************************** \n");printf ("\t~          欢迎使用通讯录               ~\n");printf ("\t~                                     ~\n");printf ("\t~      1 >>>>>>>> 添加好友信息          ~\n");printf ("\t~      2 >>>>>>>> 列表好友信息          ~\n");printf ("\t~      3 >>>>>>>> 搜索好友             ~\n");printf ("\t~      4 >>>>>>>> 删除好友             ~\n");printf ("\t~      5 >>>>>>>> 退出                ~\n");printf ("\t~                                     ~\n");printf ("\t~                                     ~\n");printf ("\t~                       作者:believe  ~\n");printf ("\t~*************************************~\n");printf ("                                         \n");printf ("                                         \n");printf ("\t请输入对应数字选择相应功能:");
}//添加好友信息 (尾插法)
int Add_Friend (PNode head, ElementType num)
{if (NULL == head){return ERROR;}//创建一个新的结点PNode p = (PNode) malloc(sizeof(Node)/sizeof(char));if (NULL == p){return MALLOC_ERROR;}//将新数据赋给新结点system("clear");    printf ("\t*************添加好友***************\n");p->ID = num;printf ("\t好友的ID为:%d\n", p->ID);printf ("\n");printf ("\t请输入好友的名字:");scanf  ("%s", p->Name);printf ("\n");printf ("\t请输入好友的手机号:");scanf  ("%s", p->Mobile_Phone);printf ("\n");printf ("\t请输入好友的家庭住址:");scanf  ("%s", p->Home_Address);printf ("\n");printf ("\t请输入好友的公司电话:");scanf  ("%s", p->Company_Tell);printf ("\n");p->next = NULL;//找到最后一个结点PNode Ptmp;                 //将头结点地址给临时指针PtmpPtmp = head;while (Ptmp->next){Ptmp = Ptmp->next;}Ptmp->next = p;return OK;
}//显示所有好友信息
int Friend_Information (PNode head)
{if (NULL == head){return ERROR;}PNode p = head->next;printf ("\tID\t姓名\t\t手机号\t\t住址\t\t\t公司电话\n");while (p){printf ("\t%d\t%s\t\t%s\t\t%s\t\t\t%s\n", p->ID,p->Name, p->Mobile_Phone, p->Home_Address, p->Company_Tell);p = p->next;}putchar('\n');return OK;
}//查找好友
int Search_Friend (PNode head, char* Name)      //通过名字查找好友
{PNode p = head;PNode q = NULL;if ((NULL != p) && NULL != (p->next)){while (p->next) {q = p->next;if ((NULL != q) && 0 == (strcmp(q->Name, Name))){printf ("\t好友信息: \n\tID:%d\n\t姓名: %s\n\t手机号码: %s\n\t家庭地址:%s\n\t公司电话: %s\n", q->ID, q->Name, q->Mobile_Phone, q->Home_Address, q->Company_Tell);}else{printf ("\t对不起,您的通讯录没有该好友!\n");}p = p->next;}}/*  另一种做法if (NULL == head){return ERROR;}PNode p;int flag = 1;for (p = head->next; p != NULL; p = p->next){if (0 == strcmp(p->Name, Name)){flag = 0;printf ("\t好友信息:\n\tID: %d\n\t姓名: %s\n\t手机号码: %s\n\t家庭地址: %s\n\t公司电话: %s\n", p->ID, p->Name, p->Mobile_Phone, p->Home_Address, p->Company_Tell);}}fi (flag){printf ("\t对不起,您的通讯录没有该好友!\n");}putchar('\n');*/return OK;
}//删除好友
void Delete_Friend (PNode head, char* Name)
{PNode p = head;PNode q = NULL;while (NULL != p && NULL != (p->next)){q = p->next;if (NULL != q && 0 == strcmp(q->Name, Name)){p->next = q->next;free(q);int j;printf ("\t正在删除\n");printf ("\t请稍候");fflush (stdout);            //强制刷新缓存,输出显示for (j = 0; j < 3; j++){sleep (1);              //linux使用sleep,参数为秒printf (".");fflush(stdout);         //强制刷新缓存,输出显示}printf ("\n");printf ("\t该好友已成功删除!\n");}else if (NULL == q->next && 0 != strcmp(q->Name, Name)){printf ("\t您的通讯录没有该好友!\n");}p = p->next;}
}

C语言实现简单的电子通讯录相关推荐

  1. C语言实现简单的电子通讯录2

    这两天学完系统调用和标准IO,之前的通讯录可以进行一些改进,将数据保存到文件中(图我这里就不发了). 原理:每次启动程序时先从预设文件中以只读的形式读取保存的通讯录信息,然后将读取到的信息导入到结构体 ...

  2. 教你用C语言实现简单的手机通讯录

    通讯录中包含的内容:我们用结构体实现 typedef struct person{char name[32];char sex[8];int age;int number[16];char adres ...

  3. 用C语言编写简单的通讯录(大一课程作业)

    用C语言编写简单的通讯录(大一课程作业) 该系统概述: 因本人只学习了C语言的基础部分,所以编写该系统时只使用了一个C文件.存储通讯录信息以txt文件方式保存. 系统设计: 显示主菜单主函数:int ...

  4. c语言实现简单通讯录(仅代码)

    C语言实现简单通讯录(仅代码) 头文件部分 #pragma once //头文件区域 #include<stdio.h> #include<Windows.h> #includ ...

  5. 基于JAVA的电子通讯录+源码+毕业设计+课程设计

    源码地址:JAVA+SQL+电子通讯录+源码+毕业设计 随着信息时代的到来,人们越来越注重通讯方式的快捷性和高效性.在这样的背景下,电子通讯录应运而生,成为人们生活中不可或缺的工具.在这篇文章中,我们 ...

  6. c语言编程杭电1008,C语言程序设计_杭州电子科技大学cyy1_3

    <C语言程序设计_杭州电子科技大学cyy1_3>由会员分享,可在线阅读,更多相关<C语言程序设计_杭州电子科技大学cyy1_3(8页珍藏版)>请在人人文库网上搜索. 1.1,可 ...

  7. C语言——史上最全通讯录讲解(附源码)

    C语言--史上最全通讯录讲解(附源码) 一.开始界面的打印 二.对六大板块进行定义操作 三.对联系人进行初始化 四.对通讯录进行初始化 4.1动态版本 4.2静态版本 五.通讯录六大功能的具体实现 5 ...

  8. c语言课程设计北京电子工业出版社,C语言课程设计报告(招生查询系统).doc

    PAGE 课 程 设 计 报 告 题目: 招生查询系统 课程名称: C语言程序设计 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 2013.10.16 计算机科学与技术学院 任务书 题目㈠ ...

  9. c语言编程基础第四版电子教案,《C语言编程基础》电子教案.doc

    <C语言编程基础>电子教案 课题(内容)1.1 C语言简史及特点课时1教学任务分析教学目标知识技能通过本节课的教学,使学生了解并熟悉编程语言C的发展历史.特点及其种类和适用范围.过程与方法 ...

  10. verilog 自动售货机状态机实现_基于Verilog语言的简单自动售货机-数电课设报告(最终版)最新版...

    <基于Verilog语言的简单自动售货机-数电课设报告.docx>由会员分享,可免费在线阅读全文,更多与<基于Verilog语言的简单自动售货机-数电课设报告(最终版)>相关文 ...

最新文章

  1. C语言中的字符串处理
  2. 新手探索NLP(八)——序列标注
  3. 2017杭州·云栖大会全纪实
  4. Android NDK JNI 简单例子1 : Android NDK配置和下载
  5. Microsoft Azure云服务停机!系水泵未知原因关闭导致
  6. 将图片显示在应用最上层_谷歌Chrome 75将原生支持lazy loading,动动手也可以抢先试玩...
  7. python写入数据的一种措施_Python 文件数据读写的具体实现
  8. u-boot移植随笔:困难重重,前路未知
  9. Python中else关键字的常见用法
  10. 将jar包制作成docker镜像
  11. 从头来之【iOS及历史版本特性介绍】
  12. Python OpenCV学习笔记之:使用MOG2视频背景消除
  13. MyEclipse 7.5 正式版中文插件安装
  14. 23种设计模式设计原则
  15. 微信小程序-视频教程-链接地址
  16. python内置函数系列之str(一)(持续更新)
  17. 华为HCNE(H3CNE) / HCSE(H3CSE)认证必看书籍
  18. 开尔文四线测试及惠斯通电桥资料收集
  19. android 辅助功能(无障碍) AccessibilityService 实战入门详解
  20. itpt_TCPL 第三章:控制流

热门文章

  1. 简历学习课程:1-9课
  2. 蔡军生先生第二人生的源码分析(2)第二人生的基本功能
  3. A LEARNED REPRESENTATION FOR ARTISTIC STYLE
  4. PNG-的IDAT解析
  5. 英文原始文本的读取与处理
  6. (35)zabbix Event acknowledgment事件确认
  7. Falsy Bouncer
  8. scrapy提高爬取速度
  9. 例题 2-1 aabb 2-2 3n+1问题
  10. 使用ESP8266和MPU6050制作倾斜角度监控器