实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
实现功能:
1.添加联系人信息
2.删除指定联系人信息
3.查找指定联系人信息
4.修改指定联系人信息
5.显示所有联系人信息
6.清空所有联系人
7.以名字排序所有联系人
程序说明:
分模块实现
Phonelist.h 头文件——存放函数声明
fun.c ——函数实现
test.c——主函数
!Phonelist.h!//Phonelist.h
#pragmaonce
#ifndef__ARROPT_H__
#define__ARROPT_H__
typedefstructPHONE
{
charName[10];
intAge;
charSex[3];//男/女
charTele[13];
charAddress[20];
//structPHONE*next;
}PHONE,*Phone;
voidADD(PHONE*p);//添加
intDEL(Phonep,char*);//删除
voidSEEK(Phonep,char*);//查找
voidREVISE(Phonep,char*);//修改
voidSHOW(Phonep);//显示
voidFREE_ALL(Phonep);//清空
voidSORT(Phonep,constsize_t);//用快排排序必须将结构体第一个成员设为Name,才可以实现
voidmenu();
#endif//__ARROPT_H__
fun.c ——函数实现//fun.c
#include
#include
#include
#include"Phonelist.h"
#defineMAX1000//通讯录最大存储人数
//*****************添加**************
voidADD(Phonep)
{
printf("请输入要录入联系人的姓名\n");
scanf_s("%s",p->Name,10);//用scanf_s函数实现字符串的输入
printf("请输入要录入联系人的性别(男/女)\n");
scanf_s("%s",p->Sex,3);
printf("请输入要录入联系人的年龄\n");
scanf_s("%d",&p->Age);
printf("请输入要录入联系人的电话\n");
scanf_s("%s",p->Tele,13);
printf("请输入要录入联系人的住址\n");
scanf_s("%s",p->Address,20);
}
//****************删除**************************
intDEL(Phonep,char*name)
{
inti=0;
inttmp=0;
Phonej=p;
while(i++
{
if(strcmp(j->Name,name)==0)
{
j->Age=0;
tmp=1;
break;
}
j++;
}
if(tmp==1)
{
printf("%s信息删除成功!\n",name);
return1;
}
else
{
printf("%s信息删除失败,无此人!\n",name);
return0;
}
}
//*********查找*************
voidshow_one(Phonej)
{
printf("Name:%s",j->Name);
printf("Age:%d",j->Age);
printf("Tele:%s",j->Tele);
printf("Sex:%s",j->Sex);
printf("Address:%s\n",j->Address);
}
voidSEEK(Phonep,char*name)
{
inti=0;
inttmp=0;
Phonej=p;
while(i++
{
if(strcmp(j->Name,name)==0)
{
tmp=1;
break;
}
j++;
}
if(tmp==1)
{
printf("%s信息存在!\n",name);
show_one(j);
}
else
printf("%s信息查找失败,无此人!\n",name);
}
//***********修改**********
voidREVISE(Phonep,char*name)
{
inti=0;
inttmp=0;
Phonej=p;
while(i++
{
if(strcmp(j->Name,name)==0)
{
ADD(j);
tmp=1;
break;
}
j++;
}
if(tmp==1)
printf("%s信息修改成功!\n",name);
else
printf("%s信息修改失败,无此人!\n",name);
}
//************显示所有联系人********
voidSHOW(Phonep)
{
Phonej=p;
inti=0;
intcount=0;
while(i++
{
if(j->Age!=0)
{
show_one(j);
count++;
}
j++;
}
if(0==count)
printf("通讯录里还没有人,请选择1,添加您的好友\n");
}
//************清空****************
voidFREE_ALL(Phonep)
{
Phonej=p;
inti=0;
while(iAge!=0)
{
j->Age=0;
j++;
}
printf("通讯录已清空!\n");
}
//*************以名字排序所有联系人********
voidSORT(Phonep,constsize_tnum)
{
qsort(p,num,sizeof(*p),strcmp);//用快排排序必须将结构体第一个成员设为Name,才可以实现
}
//***************菜单******************
voidmenu()
{
printf("***********************************************\n");
printf("*MENU*\n");
printf("***********************************************\n");
printf("*1.添加联系人信息*\n");
printf("*2.删除指定联系人信息*\n");
printf("*3.查找指定联系人信息*\n");
printf("*4.修改指定联系人信息*\n");
printf("*5.显示所有联系人信息*\n");
printf("*6.清空所有联系人*\n");
printf("*7.以名字排序所有联系人*\n");
printf("*0.退出*\n");
printf("***********************************************\n");
printf("***********************************************\n");
printf("请输入选择序号:->");
}
test.c——主函数#include
#include
#include
#include"Phonelist.h"
#defineMAX1000
PHONEPEO[MAX]={0};
intmain()
{
intchoose=1;
inti=0;
intret=0;
while(choose)
{
menu();
scanf_s("%d",&choose);
charname[10];
if(choose>=0&&choose
{
switch(choose)
{
i=0;
case1:
if(PEO[i].Age==0&&i
ADD(&PEO[i++]);
break;
case2:
printf("请输入要删除学生的名字\n");
scanf_s("%s",name,10);
ret=DEL(PEO,name);
if(ret==1)
i--;
break;
case3:
printf("请输入要查找学生的名字\n");
scanf_s("%s",name,10);
SEEK(PEO,name);
break;
case4:
printf("请输入要修改学生的名字\n");
scanf_s("%s",name,10);
REVISE(PEO,name);
break;
case5:
SHOW(PEO);
break;
case6:
FREE_ALL(PEO);
break;
case7:
SORT(PEO,i-1);
printf("排序结果:\n");
SHOW(PEO);
break;
default:
break;
}
}
}
system("pause");
return0;
}