用c语言设计一个通讯录报告,利用C语言结构体实现通讯录

本文实例为大家分享了C语言结构体实现通讯录的具体代码,供大家参考,具体内容如下

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

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

程序如下:

#include

#include

#include

struct People

{

char name[20];

char sex[5];

int age;

char tel[15];

char addr[50];

}; //定义人的信息结构体(包含各种信息)

struct Contact

{

struct People person[1000]; //定义通讯录结构体

int n; //(包含人的信息的结构体和用户个数n)

};

typedef struct Contact * p;

void menu();

int add(p q); //p是一个结构体指针类型,q是一个指向struct Contact的一个指针

int delete(p q); //例如:typedef int * int 即 int *p ==> int p

int find(p q);

int modify(p q);

int show(p q);

int clear(p q); //函数的声明

void menu() //目录格式

{

printf("====================欢迎来到苏嵌154通讯录==================\n");

printf("----------------------1.添加联系人信息---------------------\n");

printf("----------------------2.删除指定联系人信息-----------------\n");

printf("----------------------3.查找指定联系人信息-----------------\n");

printf("----------------------4.修改指定联系人信息-----------------\n");

printf("----------------------5.显示所有联系人信息-----------------\n");

printf("----------------------6.清空所有联系人---------------------\n");

printf("----------------------0.谢谢使用---------------------------\n");

printf("====================欢迎来到苏嵌154通讯录==================\n");

}

int add(p q) //添加联系人

{

if((*q).n >= 1000)

{

printf("contact is full!\n");

return -1;

}

else

{

printf("输入姓名:\n");

scanf("%s",(*q).person[(*q).n].name);

printf("输入性别:\n");

scanf("%s",(*q).person[(*q).n].sex);

printf("输入年龄:\n");

scanf("%d",&(*q).person[(*q).n].age);

printf("输入电话:\n");

scanf("%s",(*q).person[(*q).n].tel);

printf("输入地址:\n");

scanf("%s",(*q).person[(*q).n].addr);

((*q).n)++;

}

return 0;

}

int delete(p q) //删除联系人

{

int ret = find(q); //调用查找函数并保存其值

if(ret != -1)

{

int i = 0;

i = ret; //这里要用另一个变量来保存输入的姓名

for(i = 0;i < (*q).n-1;i++)

{

(*q).person[i] = (*q).person[i+1]; //用后一个覆盖前边的,如果要删除的是最后一个不进行此步骤

}

(*q).n --; //直接减去最后一个即count--

}

return 0;

}

int find(p q) //查找联系人

{

int i = 0;

char ret[20]; //用另一个数组来保存姓名

printf("输入姓名:\n");

scanf("%s",ret);

while(i <= (*q).n)

{

if(strcmp(ret,(*q).person[i].name)== 0) //比较输入的姓名和通讯录中已有的姓名

{

printf("姓名\t性别\t年龄\t电话\t地址\4t\n"); //制表符来制作表头

printf("%s\t",(*q).person[i].name);

printf("%s\t",(*q).person[i].sex);

printf("%d\t",(*q).person[i].age);

printf("%s\t",(*q).person[i].tel);

printf("%s\4t\n",(*q).person[i].addr);

return i;

}

i++;

}

printf("你丫的我班没这个人\n");

return -1;

}

int modify(p q) //修改函数,首先找到如要修改的姓名,然后重新输入

{

int ret = find(q);

if(ret != -1)

{

printf("输入修改的姓名:\n");

scanf("%s",(*q).person[ret].name);

printf("输入修改的性别:\n");

scanf("%s",(*q).person[ret].sex);

printf("输入修改的年龄:\n");

scanf("%d",&((*q).person[ret].age));

printf("输入修改的电话:\n");

scanf("%s",(*q).person[ret].tel);

printf("输入修改的地址:\n");

scanf("%s",(*q).person[ret].addr);

}

else

{

printf("你丫的我班没这个人\n");

}

return 0;

}

int show(p q) //显示全部联系人

{

int i = 0;

printf("姓名\t性别\t年龄\t电话\t地址\4t\n");

for(i = 0;i < (*q).n;i++)

{

printf("%s\t",(*q).person[i].name);

printf("%s\t",(*q).person[i].sex);

printf("%d\t",(*q).person[i].age);

printf("%s\t",(*q).person[i].tel);

printf("%s\4t\n",(*q).person[i].addr);

}

printf("\n");

return 0;

}

int clear(p q) //清除所有人,直接让成员个数变为0

{

(*q).n = 0 ;

return 0;

}

int main()

{

int n=1;

struct Contact people; //调用通讯录结构体

people.n = 0; //初始化n

while(n)

{

menu();

printf("请选择你的骚操作:\n");

scanf("%d",&n);

switch(n) //switch case语句分支选择不同函数实现不同作用

{

case 1:

{

add(&people);

break;

}

case 2:

{

delete(&people);

break;

}

case 3:

{

find(&people);

break;

}

case 4:

{

modify(&people);

break;

}

case 5:

{

show(&people);

break;

}

case 6:

{

clear(&people);

break;

}

default:

{

return 0;

break;

}

}

}

return 0;

}

这样就实现了一个简单的通讯录。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值