用c语言编辑通讯录,用C语言编写一个通讯录

#include//通讯录,需要在代码中表示若干人

typedef struct PersonInfo{

char name[1024];

char phone[1024];

}PersonInfo;

#define SIZE 1000 //宏定义通讯录长度为1000,后期可根据个人需要进行修改

typedef struct AddrBook{

//SIZE表示的通讯录中的信息上限

PersonInfo person_info[SIZE];

//需要标注出哪些信息是有意义的,哪些信息是没有意义的

//通讯录并不是程序已启动,里面的1000条数据是有意义的

//[0,size)有意义的区间

int size;

}AddrBook;

AddrBook g_addr_book;

enum{

EXIT=0,

ADD,

DEL,

MODIFY,

FIND, //查找内容

PRINT, //打印内容

CLEAR, //清空内容

};

void Init(){

g_addr_book.size = 0;

//for (int i = 0; i < SIZE; ++i){

//strcpy(g_addr_book.person_info[i].name, " ");

//strcpy(g_addr_book.person_info[i].name, " ");

//}

//方法一

memset(g_addr_book.person_info, 0x0,

sizeof(g_addr_book.person_info));

//初始化

}

int Menu(){

//打印出用户提供的操作,

//并且提示用户输入,

//把用户输入的结果返回出来

printf("========\n");

printf(" 1.添加\n");

printf(" 2.删除\n");

printf(" 3.修改\n");

printf(" 4.查找\n");

printf(" 5.显示\n");

printf(" 6.清除\n");

printf(" 0.退出\n");

printf("========\n");

printf("请输入你的选择:\n");

int choice = 0;

scanf("%d", &choice);

return choice;

}

void AddPersonInfo(){

//添加一个用户信息到通讯录中

//提示用户相关的用户信息,然后把对应的数据更新到数组中

printf("添加一个新用户!\n");

printf("请输入一个用户名:");

//下标为size的位置就是我们需要放置的新元素的位置

scanf("%s", g_addr_book.person_info[g_addr_book.size].name);

printf("请输入电话号码:");

scanf("%s", g_addr_book.person_info[g_addr_book.size].phone);

++g_addr_book.size;

printf("插入成功!\n");

}

void DelPersonInfo(){

//按照用户信息的编号进行删除

printf("删除指定记录!\n");

printf("请输入要删除的条目的编号: ");

int num = 0;

scanf("%d", &num);

if (num < 0 || num >= g_addr_book.size){

printf("输入的编号不合法,删除失败!\n");

return;

}

//如果要删除的用户是最后一个,那么就直接--size

if (num != g_addr_book.size - 1){

strcpy(g_addr_book.person_info[num].name,

g_addr_book.person_info[g_addr_book.size - 1].name);

strcpy(g_addr_book.person_info[num].phone,

g_addr_book.person_info[g_addr_book.size-1].phone);

}

--g_addr_book.size;

printf("删除成功!\n");

return;

}

void ModifyPersonInfo(){

//修改某个用户信息,用户输入一个进行修改的编号,根据编号进行修改

printf("修改某条记录\n");

printf("请输入要修改的信息编号:");

int num = 0;

scanf("%d", &num);

if (num < 0 || num >= g_addr_book.size){

printf("输入的编号不合法,修改失败!\n");

return;

}

printf("请输入新的用户名:");

scanf("%s", g_addr_book.person_info[num].name);

printf("请输入新的电话号码:");

scanf("%s", g_addr_book.person_info[num].phone);

printf("修改成功!\n");

}

void FindPersonInfo(){

//根据用户名查找

printf("查找电话号码!\n");

printf("请输入要查找的姓名: ");

char name[1024] = { 0 };

scanf("%s", name);

int count = 0;

for (int i = 0; i < g_addr_book.size; ++i){

if (strcmp(name, g_addr_book.person_info[i].name) == 0){

printf("找到一条结果,电话号码为:%s\n",

g_addr_book.person_info[i].phone);

++count;

}

if (count == 0){

printf("未找到指定的姓名,请重新查找\n");

}

else{

printf("查找成功!找到%d条结果!\n",g_addr_book.size);

}

}

}

void PrintPersonInfo(){

//打印所有的用户信息

printf("打印所有的用户信息!\n");

for (int i = 0; i < g_addr_book.size; ++i){

printf("[%d] %s %s\n",i, g_addr_book.person_info[i].name,

g_addr_book.person_info[i].phone);

}

printf("打印完成! 共打印了%d条记录\n",g_addr_book.size);

return;

}

void ClearPersonInfo(){

printf("清楚所有用户信息!\n");

printf("确定删除所有信息(y/n)\n");

char input[1024] = { 0 };

scanf("%s", input);

if (strcmp(input, "y") != 0){

printf("已经取消删除操作!\n");

return;

}

g_addr_book.size = 0;

printf("清除成功!\n");

}

int main(){

//1.先建立一个通讯录的变量,并且对这个变量进行初始化

Init();

while (1){

//2.进入循环,打印一个用户菜单,并且提示用户进行操作

//增删查改

int choice = Menu();

//3.用户输入了相应的编号后,就调用对应的操作函数,完成基本操作

switch (choice){

case ADD:

AddPersonInfo();

break;

case DEL:

DelPersonInfo();

break;

case MODIFY:

ModifyPersonInfo();

break;

case FIND:

FindPersonInfo();

break;

case PRINT:

PrintPersonInfo();

break;

case CLEAR:

ClearPersonInfo();

break;

case EXIT:

printf("Goodbye!\n");

system("pause");

return 0;

default:

break;

}

}

system("pause");

return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值