怎么在C语言中利用结构体实现一个通讯录
生活随笔
收集整理的這篇文章主要介紹了
怎么在C语言中利用结构体实现一个通讯录
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
怎么在C語言中利用結構體實現一個通訊錄?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
提供方法:
1. 添加聯系人信息
2. 刪除指定聯系人信息
3. 查找指定聯系人信息
4. 修改指定聯系人信息
5. 顯示所有聯系人信息
6. 清空所有聯系人
代碼實現:
頭文件:
#ifndef__HEAD_H__////防止頭文件被多次調用
#define__HEAD_H__
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#definePEOPLE_MAX1000
#defineNAME_LENTH20
#defineSEX_LENTH5
#defineAGE_LENTH10
#defineTEL_LENTH15
#defineADDR_LENTH50//宏定義各個數據所需的大小,后續引用直接可以使用名稱,或需修改時只用修改這里就可以了
structPeople
{
charname[NAME_LENTH];
charsex[SEX_LENTH];
intage;
chartel[TEL_LENTH];
charaddr[ADDR_LENTH];
};//定義人的信息結構體(包含各種信息)
structContact
{
structPeopleperson[PEOPLE_MAX];
intuser_count;
};//定義通訊錄結構體(包含人的信息的結構體和用戶個數)
typedefstructContact*pContact;
intadd_contact(pContactpcon);//pContact是一個結構體指針類型,pcon是一個指向structContact的一個指針
intdele_contact(pContactpcon);//例如:typedefint*int即int*p==>intp
intfind_contact(pContactpcon);
intmodify_contact(pContactpcon);
intshow_contact(pContactpcon);
intclear_contact(pContactpcon);
voidmenu();//函數的聲明
#endif
各種函數實現:
#include"head.h"
intadd_contact(pContactpcon)
{
if(pcon->user_count>=PEOPLE_MAX)
{
printf("contactisfull!\n");
return-1;
}
else
{
printf("inputname,please!\n");
scanf("%s",pcon->person[pcon->user_count].name);
printf("inputsex,please!\n");
scanf("%s",pcon->person[pcon->user_count].sex);
printf("inputage,please!\n");
scanf("%d",&pcon->person[pcon->user_count].age);//這里用%d輸出int
printf("inputtel,please!\n");
scanf("%s",pcon->person[pcon->user_count].tel);
printf("inputaddr,please!\n");
scanf("%s",pcon->person[pcon->user_count].addr);
(pcon->user_count)++;
}
return0;
}//添加信息的實現
intdele_contact(pContactpcon)
{
intret=find_contact(pcon);//調用查找函數并保存其值
if(ret!=-1)
{
inti=0;
i=ret;//這里要用另一個變量來保存輸入的姓名
for(i=0;i<pcon->user_count-1;i++)
{
pcon->person[i]=pcon->person[i+1];//用后一個覆蓋前邊的,如果要刪除的是最后一個不進行此步驟
}
pcon->user_count--;//直接減去最后一個即count--
}
return0;
}
intfind_contact(pContactpcon)
{
inti=0;
charret[NAME_LENTH];//用另一個數組來保存name
printf("inputname,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);
returni;
}
i++;
}
printf("sorry,thenameyoufindisnotexist!\n");
return-1;
}
intmodify_contact(pContactpcon)//修改函數,首先找到如要修改的姓名,然后重新輸入
{
intret=find_contact(pcon);
if(ret!=-1)
{
printf("inputname,please!\n");
scanf("%s",pcon->person[ret].name);
printf("inputsex,please!\n");
scanf("%s",pcon->person[ret].sex);
printf("inputage,please!\n");
scanf("%d",&(pcon->person[ret].age));
printf("inputtel,please!\n");
scanf("%s",pcon->person[ret].tel);
printf("inputaddr,please!\n");
scanf("%s",pcon->person[ret].addr);
}
else
{
printf("sorry,thenameyoufindisnotexist!\n");
}
return0;
}
intshow_contact(pContactpcon)
{
inti=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");
return0;
}
intclear_contact(pContactpcon)
{
pcon->user_count=0;
return0;
}//清除所有人,直接讓成員個數變為0即可
voidmenu()
{
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"
intmain()
{
intn=1;
structContactpeople;//調用通訊錄結構體
people.user_count=0;//初始化user_count
while(n)
{
menu();
printf("pleaseinput\n");
scanf("%d",&n);
switch(n)
{
case1:
{
add_contact(&people);
break;
}
case2:
{
dele_contact(&people);
break;
}
case3:
{
find_contact(&people);
break;
}
case4:
{
modify_contact(&people);
break;
}
case5:
{
show_contact(&people);
break;
}
case6:
{
clear_contact(&people);
break;
}
default:
{
return0;
break;
}//switchcase語句分支選擇不同函數實現不同作用
}
}
return0;
}
結果實現:
總結
以上是生活随笔為你收集整理的怎么在C语言中利用结构体实现一个通讯录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gearman mysql持久化_gea
- 下一篇: css中怎么让img图片居中