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

259 篇文章 60 订阅

实现一个通讯录;

通讯录可以用来存储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__

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 ——函数实现

 

//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("请输入选择序号:->");}

test.c——主函数

 

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

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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值