C语言实现简单的通讯录

用C语言写了一个简单的通讯录,说简单一是功能简单,二是也没有加读写文件操作,只是作为链表操作的一个练习,希望能给这方面的新手一此引导和帮助。

代码:

/* 转贴请注明出处                  */
/* 作者:小浦原(ID:blueboy82006)           */
/* http://blog.csdn.net/blueboy82006         */
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<ctype.h>
typedef struct node{
  char name[12];
  char phone[13];
  struct node *next;
}LNode;
LNode *h;               //头结点
static int flag=1;          //通讯录创建标记
int CreateNode(void)         //创建单循环链表
{
  if(flag)
  {
    LNode *p;
    h=(LNode *)malloc(sizeof(LNode));
    h->next=NULL;
    p=h;
    flag--;
    return 1;
  }
  else
    return 0;
}
int InsertNode(void)        //插入函数
{
  if(!flag)
  {
    LNode *t;
    char name1[12];
    char phone1[13];
    printf("/n输入姓名:");
    scanf("%s",name1);
    printf("/n输入联系电话:");
    scanf("%s",phone1);
    t=(LNode *)malloc(sizeof(LNode));
    strcpy(t->name,name1);
    strcpy(t->phone,phone1);
    t->next=h->next;
    h->next=t;
    return 1;
  }
  else
    return 0;
}
int SearchNode(void)        //查询函数
{
  if(!flag)
  {
    LNode *p;
    int x=0;
    char name1[12];
    printf("/n输入查询姓名:");
    scanf("%s",name1);
    p=h;
    printf("/n查询结果:");
    while(p->next)
    {
      p=p->next;
      if(strcmp(p->name,name1)==0)
      {
        printf("/n姓名:%s/n联系电话:%s/n",p->name,p->phone);
        x++;
      }
    }
    if(!x)
      printf("/n没有找到相关信息!");
    return 1;
  }else
    return 0;
}
int DeletNode(void)        //删除函数
{
  if(!flag)
  {
    LNode *pre,*p;
    char name1[12];
    p=h;
    printf("/n输入要删除联系人的姓名:");
    scanf("%s",name1);
    while(p->next)
    {
      pre=p;
      p=p->next;
      if(strcmp(p->name,name1)==0)
      {
        pre->next=p->next;
        free(p);
        printf("删除成功!/n");
        break;
      }
    }
    if(!p->next)
      printf("/n没有找到要删除的信息!");
    return 1;
  }
  else
    return 0;
}
int PrintNode(void)        //输出函数
{
  if(!flag)
  {
    LNode *p;
    p=h;
    while(p->next)
    {
      p=p->next;
      printf("/n姓名:%s /t联系电话:%s",p->name,p->phone);
    }
    return 1;
  }
  else
    return 0;
}
int main()             //主函数
{
  char n;
  printf("/n/n");
  printf("/t/t     通讯录/t/n");
  printf("/t/t|————————————————|/n");
  printf("/t/t|                |/n");
  printf("/t/t| [1] 建立通讯录         |/n");
  printf("/t/t| [2] 插入联系人的姓名      |/n");
  printf("/t/t| [3] 查找联系人的姓名      |/n");
  printf("/t/t| [4] 删除联系人的姓名      |/n");
  printf("/t/t| [5] 输出所有联系人信息     |/n");
  printf("/t/t| [0] 退出            |/n");
  printf("/t/t|                |/n");
  printf("/t/t| 如未建立新表,请先建立!    |/n");
  printf("/t/t|                |/n");
  printf("/t/t|————————————————|/n");
  printf("/n");
  printf("请输入你的选项(0-5):");
  while(1)
  {
    scanf("%s",&n);
    while(!(n=='0'||n=='1'||n=='2'||n=='3'||n=='4'||n=='5'))
    {
      printf("请输入你的选项(0-5):");
      scanf("%s",&n);
    }
    system("CLS");
    switch(n)
    {
    case '0':{
      printf("/n/t/t感谢您的使用!/n");
      return 0;
         }
    case '1':{
      if(CreateNode())
        printf("通讯录建立成功!/n");
      else
        printf("通讯录已建立,无需重复建立!/n");
      break;
         }
    case '2':{
      if(InsertNode())
        printf("添加成功!/n");
      else
        printf("添加失败,请先创建通讯录!/n");
      break;
         }
    case '3':{
      if(SearchNode())
        printf("/n");
      else
        printf("查找失败,请先创建通讯录!/n");
      break;
         }
    case '4':{
      if(DeletNode())
        printf("/n");
      else
        printf("删除失败,请先创建通讯录!/n");
      break;
         }
    case '5':{
      if(PrintNode())
        printf("/n以上是全部联系人信息./n");
      else
        printf("ERROR,请先创建通讯录!/n"); 

      break;
         }
    default:{printf("输入不符合要求!");}
    }
    printf("/n/n");
    printf("/t/t     通讯录/t/n");
    printf("/t/t|————————————————|/n");
    printf("/t/t|                |/n");
    printf("/t/t| [1] 建立通讯录         |/n");
    printf("/t/t| [2] 插入联系人的姓名      |/n");
    printf("/t/t| [3] 查找联系人的姓名      |/n");
    printf("/t/t| [4] 删除联系人的姓名      |/n");
    printf("/t/t| [5] 输出所有联系人信息     |/n");
    printf("/t/t| [0] 退出            |/n");
    printf("/t/t|                |/n");
    printf("/t/t| 如未建立新表,请先建立!    |/n");
    printf("/t/t|                |/n");
    printf("/t/t|————————————————|/n");
    printf("/n");
  }
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • 使用C语言打造通讯录管理系统和教学安排系统的代码示例
  • 使用C语言中的time函数获取系统时间
  • c语言实现的货物管理系统实例代码(增加删除 查找货物信息等功能)
  • 基于C语言实现简单的12306火车售票系统
  • C语言职工管理系统设计
  • c语言实现系统时间校正工具代码分享
  • Linux系统中C语言编程创建函数fork()执行解析
  • 浅谈Windows系统下C语言编程中Glib库的使用
  • C语言设计图书登记系统与停车场管理系统的实例分享
  • C语言实现通讯录系统
(0)

相关推荐

  • 使用C语言打造通讯录管理系统和教学安排系统的代码示例

    通讯录管理系统 实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能.. 完整的代码如下: #include <stdio.h> #include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针// #include <string.h> #include <stdlib.h> //标准库函数// #define NULL 0 #define LEN sizeof(struct address_list) //计

  • c语言实现的货物管理系统实例代码(增加删除 查找货物信息等功能)

    复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>        /*屏幕操作函数库*/ /*主管权限数据格式化*/#define HEADER1_zg "-----------------------------货物管理系统(主管)--------------------------------\n"#define H

  • C语言实现通讯录系统

    C语言通讯录系统实现,供大家参考,具体内容如下 需求分析: 利用文件读,写的方法 实现增加通讯录联系人信息 实现删除通讯录联系人信息 实现查找通讯录联系人信息 实现修改通讯录联系人信息 实现查看现有通讯录联系人信息 代码实现: // main.c // C语言通讯录实现 // // Created by Brisinga on 15/10/14. // Copyright © 2015年 yan. All rights reserved. // #include <stdio.h> #incl

  • 基于C语言实现简单的12306火车售票系统

    程序设计要求用C语言写一个简单的火车售票系统,主要实现的功能为: 录入班次信息 浏览班次信息 按班次号查询 按终点站查询 按余票数量排序保存 售票 退票 更新班次信息 退出系统 所有的班次信息保存在number.dat文件中,排序过后的保存在sort.dat中(.dat是一种二进制文件). 在编写的过程中我觉得在判断火车的状态比较值得深究.这里假设火车主要有四种状态: 1.未发车 2.已发车 3.停止检票 4.停止退票 在程序中,思路是将代表发车时间的字符串转化为整型,再和系统现在的时间进行大小

  • c语言实现系统时间校正工具代码分享

    复制代码 代码如下: //*******************************************************************//Time Protocol是一种非常简单的应用层协议.它返回一个未格式化的32位二进制数字, //这个数字描述了从1900年1月1日午夜到现在的秒数.服务器在端口37监听协议请求,以 //TCP/IP或者UDP/IP格式返回响应.将服务器的返回值转化为本地时间是客户端程序的责任. //这里使用的时间服务器是129.132.2.21,更

  • 浅谈Windows系统下C语言编程中Glib库的使用

    在这个C的变成世界里,有许多实用的库,其中最有名的且最通用(跨多个平台的实现包括Windows,要知道很多实用的编程库都不提供Windows的实现)就是GLib这个库,其中就有实现线程的部分. glib库是Linux平台下最常用的C语言函数库,它具有很好的可移植性和实用性. glib是Gtk +库和Gnome的基础.glib可以在多个平台下使用,比如Linux.Unix.Windows等.glib为许多标准的.常用的C语言结构提供了相应的替代物. 如果在程序中要使用到glib库中的函数,则应该包

  • 使用C语言中的time函数获取系统时间

    可以通过time()函数来获得计算机系统当前的日历时间(Calendar Time),处理日期时间的函数都是以本函数的返回值为基础进行运算.其原型为:time_t time(time_t * t);如果你已经声明了参数t,你可以从参数t返回现在的日历时间,同时也可以通过返回值返回现在的日历时间,即从一个时间点(例如:1970年1月1日0时0分0秒)到现在此时的秒数.如果参数为空(NULL),函数将只通过返回值返回现在的日历时间,比如下面这个例子用来显示当前的日历时间: 复制代码 代码如下: #i

  • C语言设计图书登记系统与停车场管理系统的实例分享

    图书登记管理系统 图书登记管理系统应该具有下列功能: (1). 通过键盘输入某本图书的信息: (2) .给定图书编号,显示该本图书的信息: (3) .给定作者姓名,显示所有该作者编写的图书信息: (4) .给定出版社,显示该出版社的所有图书信息: (5) .给定图书编号,删除该本图书的信息: (6) .提供一些统计各类信息的功能. 程序完整的实现代码如下: #include "stdio.h" #include "stdlib.h" #include "s

  • Linux系统中C语言编程创建函数fork()执行解析

    最近在看进程间的通信,看到了fork()函数,虽然以前用过,这次经过思考加深了理解.现总结如下: 1.函数本身 (1)头文件 #include<unistd.h> #include<sys/types.h> (2)函数原型 pid_t fork( void); (pid_t 是一个宏定义,其实质是int 被定义在#include<sys/types.h>中) 返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID:否则,出错返回-1 (3)函数说明 一

  • C语言职工管理系统设计

    本文实例为大家分享了C语言职工管理系统设计代码,供大家参考,具体内容如下 代码如下: #include<stdio.h> #include<stdlib.h> #include <string.h> struct Worker { int id;//工号 char name[16];//姓名 char sex[8];//性别 int age;//年龄 char edu_exp[32];//学历 int wage;//工资 char adress[32];//地址 cha

随机推荐