c语言手机通讯录退出程序,通讯录小程序(C/C++)C语言练习小程序

实现一个通讯录;

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

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

实现功能:

1. 添加联系人信息

2. 删除指定联系人信息

3. 查找指定联系人信息

4. 修改指定联系人信息

5. 显示所有联系人信息

6. 清空所有联系人

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

程序说明:

分模块实现

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

fun.c ——函数实现

test.c——主函数

!Phonelist.h!//Phonelist.h

#pragma once

#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, const size_t );//用快排排序必须将结构体第一个成员设为 Name,才可以实现

void menu();

#endif  //__ARROPT_H__

fun.c ——函数实现//fun.c

#include

#include

#include

#include"Phonelist.h"

#define MAX 1000  //通讯录最大存储人数

//*****************添加**************

void ADD(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);

}

//****************删除**************************

int DEL(Phone p,char *name)

{

int i = 0;

int tmp = 0;

Phone j = p;

while (i++ 

{

if (strcmp(j->Name, name) == 0)

{

j->Age = 0;

tmp = 1;

break;

}

j++;

}

if (tmp == 1)

{

printf("%s信息删除成功!\n", name);

return 1;

}

else

{

printf("%s信息删除失败,无此人!\n", name);

return 0;

}

}

//*********查找*************

void show_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)

{

int i = 0;

int tmp = 0;

Phone j = 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);

}

//***********修改**********

void REVISE(Phone p, char *name)

{

int i = 0;

int tmp = 0;

Phone j = 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);

}

//************显示所有联系人********

void SHOW(Phone p)

{

Phone j = p;

int i = 0;

int count = 0;

while (i++ 

{

if (j->Age != 0)

{

show_one(j);

count++;

}

j++;

}

if(0==count)

printf("通讯录里还没有人,请选择1,添加您的好友\n");

}

//************清空****************

void FREE_ALL(Phone p)

{

Phone j = p;

int i = 0;

while (i Age != 0)

{

j->Age = 0;

j++;

}

printf("通讯录已清空!\n");

}

//*************以名字排序所有联系人********

void SORT(Phone p,const size_t num)

{

qsort(p, num, sizeof(*p), strcmp);//用快排排序必须将结构体第一个成员设为 Name,才可以实现

}

//***************菜单******************

void menu()

{

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"

#define MAX 1000

PHONE PEO[MAX] = {0};

int main()

{

int choose = 1;

int i = 0;

int ret = 0;

while (choose)

{

menu();

scanf_s("%d", &choose);

char name[10];

if (choose >= 0 && choose 

{

switch (choose)

{

i = 0;

case 1:

if (PEO[i].Age == 0 && i 

ADD(&PEO[i++]);

break;

case 2:

printf("请输入要删除学生的名字\n");

scanf_s("%s", name, 10);

ret = DEL(PEO, name);

if (ret == 1)

i--;

break;

case 3:

printf("请输入要查找学生的名字\n");

scanf_s("%s", name, 10);

SEEK(PEO, name);

break;

case 4:

printf("请输入要修改学生的名字\n");

scanf_s("%s", name, 10);

REVISE(PEO, name);

break;

case 5:

SHOW(PEO);

break;

case 6:

FREE_ALL(PEO);

break;

case 7:

SORT(PEO, i - 1);

printf("排序结果: \n");

SHOW(PEO);

break;

default:

break;

}

}

}

system("pause");

return 0;

}

a60bdf4b2229ed7c430f0101c6c7428f.png

498325d261e61fa654b817e516ed88d6.png

2d35665d328e300199780866b5adb036.png

cc60df3abc677d99d1404505d51c509d.png

caebe11be99476679242508580f47c73.png

f0544f453c280461b6a73b5bf450c7fa.png

ceadd871c7fd59db4c5b778e2bef9f84.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值