C语言使用结构体实现简单通讯录

C语言用结构体实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括:

姓名、性别、年龄、电话、住址

提供方法:

1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人

代码实现:

头文件:

#ifndef __HEAD_H__     ////防止头文件被多次调用
#define __HEAD_H__          

#include<stdio.h>
#include<string.h>
#include<stdlib.h> 

#define PEOPLE_MAX 1000
#define NAME_LENTH 20
#define SEX_LENTH 5
#define AGE_LENTH 10
#define TEL_LENTH 15
#define ADDR_LENTH 50 //宏定义各个数据所需的大小,后续引用直接可以使用名称,或需修改时只用修改这里就可以了 

struct People
{
  char name[NAME_LENTH];
  char sex[SEX_LENTH];
  int age;
  char tel[TEL_LENTH ];
  char addr[ADDR_LENTH];
};     //定义人的信息结构体(包含各种信息) 

struct Contact
{
  struct People person[PEOPLE_MAX];
  int user_count;
};   //定义通讯录结构体(包含人的信息的结构体和用户个数) 

typedef struct Contact * pContact; 

int add_contact(pContact pcon); //pContact是一个结构体指针类型,pcon是一个指向struct Contact的一个指针
int dele_contact(pContact pcon); //例如:typedef int * int 即 int *p ==> int p
int find_contact(pContact pcon);
int modify_contact(pContact pcon);
int show_contact(pContact pcon);
int clear_contact(pContact pcon);
void menu();    //函数的声明 

#endif 

各种函数实现:

#include"head.h"     

int add_contact(pContact pcon)
{
  if(pcon->user_count >= PEOPLE_MAX)
  {
    printf("contact is full!\n");
    return -1;
  }
  else
  {
    printf("input name,please!\n");
    scanf("%s",pcon->person[pcon->user_count].name);
    printf("input sex,please!\n");
    scanf("%s",pcon->person[pcon->user_count].sex);
    printf("input age,please!\n");
    scanf("%d",&pcon->person[pcon->user_count].age); //这里用%d输出int
    printf("input tel,please!\n");
    scanf("%s",pcon->person[pcon->user_count].tel);
    printf("input addr,please!\n");
    scanf("%s",pcon->person[pcon->user_count].addr);
    (pcon->user_count)++;
  }
  return 0;
}           //添加信息的实现 

int dele_contact(pContact pcon)
{
  int ret = find_contact(pcon);  //调用查找函数并保存其值
  if(ret != -1)
  {
    int i = 0;
    i = ret;  //这里要用另一个变量来保存输入的姓名
    for(i = 0;i < pcon->user_count-1;i++)
    {
      pcon->person[i] = pcon->person[i+1]; //用后一个覆盖前边的,如果要删除的是最后一个不进行此步骤 

    }
    pcon->user_count --; //直接减去最后一个即count--
  }
  return 0;
} 

int find_contact(pContact pcon)
{
  int i = 0;
  char ret[NAME_LENTH]; //用另一个数组来保存name
  printf("input name,please!\n");
  scanf("%s",ret);
  while(i <= pcon->user_count)
  {
    if(strcmp(ret,pcon->person[i].name)== 0) //比较输入的姓名和通讯录中已有的姓名
    {
      printf("name\tsex\tage\ttel\taddr\t\n");
      printf("%s\t",pcon->person[i].name);
      printf("%s\t",pcon->person[i].sex);
      printf("%d\t",pcon->person[i].age);
      printf("%s\t",pcon->person[i].tel);
      printf("%s\t\n",pcon->person[i].addr);
      return i;
    }
    i++;
  }
  printf("sorry,the name you find is not exist!\n");
  return -1;
} 

int modify_contact(pContact pcon)  //修改函数,首先找到如要修改的姓名,然后重新输入
{
  int ret = find_contact(pcon);
  if(ret != -1)
  {
    printf("input name,please!\n");
    scanf("%s",pcon->person[ret].name);
    printf("input sex,please!\n");
    scanf("%s",pcon->person[ret].sex);
    printf("input age,please!\n");
    scanf("%d",&(pcon->person[ret].age));
    printf("input tel,please!\n");
    scanf("%s",pcon->person[ret].tel);
    printf("input addr,please!\n");
    scanf("%s",pcon->person[ret].addr);
  }
  else
  {
    printf("sorry,the name you find is not exist!\n");
  }
  return 0;
} 

int show_contact(pContact pcon)
{
  int i = 0;
  printf("name\tsex\tage\ttel\t\taddr\t\n"); //制表符来制作表头
  for(i = 0;i < pcon->user_count;i++)
  {
    printf("%s\t",pcon->person[i].name);
    printf("%s\t",pcon->person[i].sex);
    printf("%d\t",pcon->person[i].age);
    printf("%s\t",pcon->person[i].tel);
    printf("%s\t\n",pcon->person[i].addr);
  }
  printf("\n");
  return 0;
} 

int clear_contact(pContact pcon)
{
  pcon->user_count = 0 ;
  return 0;
}      //清除所有人,直接让成员个数变为0即可 

void menu()
{
  printf("-------contact---------\n");
  printf(" 1.添加联系人信息   \n");
  printf(" 2.删除指定联系人信息 \n");
  printf(" 3.查找指定联系人信息 \n");
  printf(" 4.修改指定联系人信息 \n");
  printf(" 5.显示所有联系人信息 \n");
  printf(" 6.清空所有联系人   \n");
  printf(" 0.谢谢使用      \n");
  printf("-------contact---------\n");
} 

主函数:

#include"head.h" 

int main()
{
  int n=1;
  struct Contact people;   //调用通讯录结构体
  people.user_count = 0;   //初始化user_count
  while(n)
  {
    menu();
    printf("please input\n");
    scanf("%d",&n);
    switch(n)
    {
      case 1:
      {
        add_contact(&people);
        break;
      }
      case 2:
      {
        dele_contact(&people);
        break;
      }
      case 3:
      {
        find_contact(&people);
        break;
      }
      case 4:
      {
        modify_contact(&people);
        break;
      }
      case 5:
      {
        show_contact(&people);
        break;
      }
      case 6:
      {
        clear_contact(&people);
        break;
      }
      default:
      {
        return 0;
        break;
      } //switch case语句分支选择不同函数实现不同作用
    }
  }
  return 0;
}

结果实现:

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

您可能感兴趣的文章:

  • C语言通讯录管理系统课程设计
  • C语言通讯录管理系统完整版
  • C语言实现通讯录功能
  • C语言通讯录实例分享
  • 用C语言实现简易通讯录
  • C语言实现一个通讯录
  • C语言实现通讯录系统
  • C语言实现简单的通讯录
  • 使用C语言打造通讯录管理系统和教学安排系统的代码示例
  • C语言基于哈希表实现通讯录
(0)

相关推荐

  • C语言通讯录实例分享

    本文实例为大家分享了C语言通讯录实例的具体代码,供大家参考,具体内容如下 main.c文件: // // main.c // c语言通讯录 // // Created by stevenchang on 9/6/15. // Copyright (c) 2015 cz. All rights reserved. // /** 1.添加联系人 2.删除联系人 3.更新联系人 4.显示所有联系人 5.查找联系人 6.退出系统 */ #include <stdio.h> int main(int a

  • 用C语言实现简易通讯录

    C语言实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 **提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人** 思路分析: 首先我们可以分三个模块来解决这个问题,第一个模块我们需要一个头文件,这个头文件里可以包含一些相应信息,当实现文件和测试文件包含自己定义的头文件时便可以获得一些相关的信息.所以头文件里

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

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

  • C语言基于哈希表实现通讯录

    本文为大家分享了C语言基于哈希表实现通讯录的具体代码,供大家参考,具体内容如下 1.需求分析 本演示程序用C语言编写,完成哈希表的生成,电话号码的插入.以及查找等功能. (1)按提示输入相应的联系人的相关资料: (2)以相应的输出形式输出所存储的的联系人的资料: (3)程序可以达到建立.添加.查找.打印的功能: (4)程序可以判断用户输入的非法数据并引导正确的输入. 2.概要设计 存储电话号码的记录时,若在存储位置和其关键字之间建立某种确定的对应关系使得每个关键字和存储结构中一个唯一的存储位置相

  • C语言实现简单的通讯录

    用C语言写了一个简单的通讯录,说简单一是功能简单,二是也没有加读写文件操作,只是作为链表操作的一个练习,希望能给这方面的新手一此引导和帮助. 代码: /* 转贴请注明出处 */ /* 作者:小浦原(ID:blueboy82006) */ /* http://blog.csdn.net/blueboy82006 */ #include <stdio.h> #include <stdlib.h> #include<string.h> #include<ctype.h&

  • C语言实现一个通讯录

    实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6.  清空所有联系人 7. 以名字排序所有联系人 没有开辟动态内存的方法: 头文件:test.h #ifndef __CONTACT #define __CONTACT #define _CRT_SECURE_NO_WARNINGS 1 #include<

  • C语言实现通讯录功能

    本文实例为大家分享了C语言实现通讯录功能的具体代码,供大家参考,具体内容如下 先定义头文件 #ifndef __CONTACT_H__ #define __CONTACT_H__ #define NAME_LEN 10 #define SEX_LEN 6 #define TELE_LEN 12 #define ADDR_LEN 20 #define MAX_PEO 1000 typedef struct PEO { char name[NAME_LEN]; int age; char sex[S

  • C语言实现通讯录系统

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

  • C语言通讯录管理系统完整版

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

  • C语言通讯录管理系统课程设计

    本文实例为大家分享了C语言通讯录管理系统课程设计,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <windows.h> struct Sign{ char name[8]; char sex[4]; char birthday[12]; char phone[11]; char postcode[7]; char addr[30]; struct Sign *next; }pe; char Ph

随机推荐