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语言使用结构体实现简单通讯录

相关文章:

你感兴趣的文章:

标签云: