静态通讯录,电话本,两种方法,一种变量,一种类型

这是一个使用C语言编写的简单通讯录管理系统,通过结构体和枚举操作实现添加、删除、查找、修改和显示联系人信息,并具备按名字排序功能。
摘要由CSDN通过智能技术生成
1,直接用变量

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//姓名、性别、年龄、电话、住址
typedef struct Stu
{
char name[10];
char sex[5];
int age;
char tele[10];
char addr[20];
}S;

typedef struct contact
{
S human[1000];
int count;
}Stu;

enum OP
{
Exit,
add,
drop,
check,
modify,
show,
empty,
sort
};

void menu()
{
printf(" 1.添加联系人信息 2.删除指定联系人信息\n 3.查找指定联系人信息 4.修改指定联系人信息\n 5.显示所有联系人信息 6.清空所有联系人\n 7.以名字排序所有联系人\n");
}

int _add(Stu stu1)
{
if (stu1.count == 1000)
{
printf("通讯录已满!");
return -1;
}
else
{
printf("请输入名字:");
scanf("%s", stu1.human[stu1.count].name);
printf("请输入性别:");
scanf("%s", stu1.human[stu1.count].sex);
printf("请输入年龄:");
scanf("%d", stu1.human[stu1.count].age);
printf("请输入电话:");
scanf("%s", stu1.human[stu1.count].tele);
printf("请输入地址:");
scanf("%s", stu1.human[stu1.count].addr);
stu1.count++;
}
return 0;

}

int _check(Stu stu1)
{
int i;
char name[10];
printf("请输入要查找的名字:");
scanf("%s", name);

for (i = 0; i<stu1.count; i++)
{
if (strcmp(stu1.human[i].name, name) == 0)
{
printf("\tname\tsex\tage\ttel\tadd\n");
printf("%10s", stu1.human[i].name);
printf("%5s", stu1.human[i].sex);
printf("%10d", stu1.human[i].age);
printf("%10s", stu1.human[i].tele);
printf("%10s\n", stu1.human[i].addr);
return 1;
}
}
return -1;
}

int _drop(Stu stu1)
{
int i = 0;
int rel = _check(stu1);
if (rel != -1)
{
for (i = rel; i<stu1.count - 1; i++)
{
stu1.human[i] = stu1.human[i + 1];
}
stu1.count--;
return 1;
}
else
{
printf("不存在!");
return -1;
}
}

int _modify(Stu stu1)
{
int rel = _check(stu1);
if (rel != -1)
{
printf("请输入姓名:");
scanf("%s", stu1.human[rel].name);
printf("请输入性别:");
scanf("%s", stu1.human[rel].sex);
printf("请输入年龄:");
scanf("%d", &stu1.human[rel].age);
printf("请输入电话:");
scanf("%s", stu1.human[rel].tele);
printf("请输入地址:");
scanf("%s", stu1.human[rel].addr);
return 1;
}
else
{
printf("输入错误!");
return -1;
}
}

int _show(Stu stu1)
{
int i;
printf("\tname\tsex\tage\ttel\tadd\n");
for (i = 0; i< stu1.count; i++)
{
printf("%10s", stu1.human[i].name);
printf("%5s", stu1.human[i].sex);
printf("%10d", stu1.human[i].age);
printf("%10s", stu1.human[i].tele);
printf("%10s\n", stu1.human[i].addr);
}
printf("\n");
return 0;
}

int _empty(Stu stu1)
{
stu1.count = 0;
return 1;
}

void _sort(Stu stu1)
{
int i = 0;
for (i = 0; i < stu1.count - 1; i++)    //这里采用冒泡排序  
{
for (int j = 0; j< stu1.count - 1 - i; j++)
{
int min = 0;
if (strcmp(stu1.human[j].name, stu1.human[j + 1].name)>0)
{
S temp = stu1.human[j];
stu1.human[j] = stu1.human[j + 1];
stu1.human[j + 1] = temp;
}
}
}
printf("排序完成\n");
_show(stu1);
}

int main()
{
int num = 0;
Stu stu1;
stu1.count = 0;
menu();
while (1)
{
scanf("%d", &num);
switch (num)
{
case add:
_add(stu1);
break;
case drop:
_drop(stu1);
break;
case check:
_check(stu1);
break;
case modify:
_modify(stu1);
break;
case show:
_show(stu1);
break;
case empty:
_empty(stu1);
break;
case sort:
_sort(stu1);
break;
case Exit:
exit(0);
}
}
system("pause");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值