适合大一新生练习的通讯录小程序(C/C++)C语言练习小程序

394 阅读3分钟

实现一个通讯录;

通讯录可以用来存储1000个人的信息,每个人的信息包括:

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

实现功能:

![](https://upload-images.jianshu.io/upload_images/24762785-133b35e944306417.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

1. 添加联系人信息

2. 删除指定联系人信息

3. 查找指定联系人信息

4. 修改指定联系人信息

5. 显示所有联系人信息

6. 清空所有联系人

7. 以名字排序所有联系人

![](https://upload-images.jianshu.io/upload_images/24762785-12acd853aae51cd3.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

程序说明:

分模块实现

Phonelist.h 头文件——存放函数声明

fun.c ——函数实现

test.c——主函数

!Phonelist.h!

//Phonelist.h

#pragmaonce

#ifndef__ARROPT_H__

#define__ARROPT_H__

typedef struct PHONE

{char Name[10]; int Age; char Sex[3];//男/女char Tele[13];char Address[20];//struct PHONE *next;

}PHONE,*Phone;

void ADD(PHONE*p);//添加

int DEL(Phone p,char*);//删除

void SEEK(Phone p,char*);//查找

void REVISE(Phone p,char*);//修改

void SHOW(Phone p);//显示

void FREE_ALL(Phone p);//清空

void SORT(Phone p,constsize_t);//用快排排序必须将结构体第一个成员设为 Name,才可以实现

void menu();

#endif //ARROPT_H

fun.c ——函数实现

![](https://upload-images.jianshu.io/upload_images/24762785-5b583f1f187eb14d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

//fun.c

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include"Phonelist.h"

#defineMAX 1000//通讯录最大存储人数//***添加

voidADD(Phone p){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(Phone p,char*name){inti=0;inttmp=0;Phone j=p;while(i++<MAX)

{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(Phone j){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);}

void SEEK(Phone p,char*name){inti=0;inttmp=0;Phone j=p;while(i++<MAX)

{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);}//*修改

void REVISE(Phone p,char*name){inti=0;inttmp=0;Phone j=p;while(i++<MAX){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(Phone p){Phone j=p;inti=0;intcount=0;while(i++<MAX){if(j->Age!=0){show_one(j);count++;}j++;}

if(0==count)printf("通讯录里还没有人,请选择1,添加您的好友\n");}//**********清空**************voidFREE_ALL(Phone p){Phone j=p;inti=0;while(i<MAX&&j->Age!=0){j->Age=0;j++;}

printf("通讯录已清空!\n");}//以名字排序所有联系人**voidSORT(Phone p,constsize_t num){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("请输入选择序号:->");}

![](https://upload-images.jianshu.io/upload_images/24762785-93448bf9c32d53a1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

test.c——主函数

![](https://upload-images.jianshu.io/upload_images/24762785-d1e5bb3c016375d4.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include"Phonelist.h"

#define

MAX 1000PHONE PEO[MAX]={0};intmain(){intchoose=1;inti=0;intret=0;while(choose){menu();scanf_s("%d",&choose);charname[10];if(choose>=0&&choose<8)

{switch(choose){i=0;case1:if(PEO[i].Age==0&&i<MAX)//设:若Age信息为"0"则对应信息为空

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;}

![](https://upload-images.jianshu.io/upload_images/24762785-26f5629c6053bbbf.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

点击了解更多资料,更有免费开源项目和课程等你观看哦!

![](https://upload-images.jianshu.io/upload_images/24762785-34107ac0faccc43c.gif?imageMogr2/auto-orient/strip)