通讯录

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
#include<assert.h>

struct stu
{
	char name[5];
	char sex[2];
	int age;
	char  phone[15];
	char add[20];
};
typedef struct info
{
	struct stu *n;
	int  size;
}stu_info;
void init_info(stu_info *p)
{
	assert(p);
	int i = 0;
	int j = 0;
	printf("请输入你要插入的联系人的个数:");
	scanf("%d", &i);
	if (i > 0 && i <= 1000)
	{
		for (;j < i;j++)
		{
			printf("请输入第%d个联系人的姓名:", j + 1);
			scanf("%s", &p->n[j].name);
			printf("请输入第%d个联系人的性别:", j + 1);
			scanf("%s", &p->n[j].sex);
			printf("请输入第%d个联系人的年龄:", j + 1);
			scanf("%d", &p->n[j].age);
			printf("请输入第%d个联系人的电话:", j + 1);
			scanf("%s", &p->n[j].phone);
			printf("请输入第%d个联系人的住址:", j + 1);
			scanf("%s", &p->n[j].add);
			p->size++;
		}
	}
}
void print_info(stu_info *p)
{
	assert(p);
	int i = 0;
	int j = p->size;
	printf("name\tsex\tage\tphone\tadd\n");
	while (j--)
	{
		printf("%s\t", p->n[i].name);
		printf("%s\t", p->n[i].sex);
		printf("%d\t", p->n[i].age);
		printf("%s\t", p->n[i].phone);
		printf("%s\n", p->n[i].add);
		i++;
	}
}
void insert_info(stu_info *p)
{
	assert(p);
	int j = 0;

	printf("请输入新添加的第%d个联系人的姓名:", j + 1);
	scanf("%s", &(p->n[p->size].name));
	printf("请输入新添加的第%d个联系人的性别:", j + 1);
	scanf("%s", &(p->n[p->size].sex));
	printf("请输入新添加的第%d个联系人的年龄:", j + 1);
	scanf("%d", &(p->n[p->size].age));
	printf("请输入新添加的第%d个联系人的电话:", j + 1);
	scanf("%s", &(p->n[p->size].phone));
	printf("请输入新添加的第%d个联系人的住址:", j + 1);
	scanf("%s", &(p->n[p->size].add));
	p->size++;

}
void delete_info(stu_info *p)
{
	int i = 0;
	int j = p->size;
	char name[20] = { 0 };
	assert(p);
	printf("请输入你要删除的联系人的姓名:");
	scanf("%s", &name);
	for (;i < j;i++)
	{
		if (strcmp(p->n[i].name, name) == 0)
		{
			for (;i < j - 1;i++)
			{
				p->n[i] = p->n[i + 1];
			}
			p->size--;
			return;
		}
	}
	printf("你输入的联系人不存在\n");
}
void search_info(stu_info *p)
{
	int i = 0;
	int j = p->size;
	char name[20] = { 0 };
	printf("请输入你要查找的联系人的姓名:");
	scanf("%s", &name);
	for (;i < j;i++)
	{
		if (strcmp(p->n[i].name, name) == 0)
		{
			printf("该联系人的信息如下:\n");
			printf("name\tsex\tage\tphone\tadd\n");
			printf("%s\t%s\t%d\t%s\t%s\n", p->n[i].name, p->n[i].sex, p->n[i].age, p->n[i].phone, p->n[i].add);
			return;
		}
	}
	printf("你要查找的联系人不存在");
}
void modify_info(stu_info *p)
{
	int i = 0;
	int j = p->size;
	char name[20] = { 0 };
	printf("请输入你要修改的联系人的姓名:");
	scanf("%s", &name);
	for (;i < j;i++)
	{
		if (strcmp(p->n[i].name, name) == 0)
		{
			printf("请输入该名联系人的姓名:\n");
			scanf("%s", &p->n[i].name);
			printf("请输入该名联系人的性别:\n");
			scanf("%s", &p->n[i].sex);
			printf("请输入该名联系人的年龄:\n");
			scanf("%d", &p->n[i].age);
			printf("请输入该名联系人的电话:\n");
			scanf("%s", &p->n[i].phone);
			printf("请输入该名联系人的住址:\n");
			scanf("%s", &p->n[i].add);
			printf("修改成功!\n");
		}
	}
}
void clear_info(struct stu a[], int len)
{
	memset(a, '0', len);
}
void sort_info(stu_info *p)
{
	int i = 0;
	int k = 0;
	int j = p->size;
	struct stu n = { 0 };
	printf("对联系人信息进行排序:\n");
	for (i=0;i < j - 1;i++)
	{
		for (k = 0;k < j - i - 1;k++)
		{
			if (p->n[k].name < p->n[k + 1].name)
			{
				n = p->n[k];
				p->n[k] = p->n[k + 1];
				p->n[k + 1] = n;

			}
		}
	}
}
int main()
{
	char ch = 0;
	struct stu a[1000] = { 0 };
	int len = sizeof(a);
	stu_info p;
	p.size = 0;
	p.n = a;
	init_info(&p); //初始化通讯录
	print_info(&p);//输出
	insert_info(&p);//增加联系人信息
	print_info(&p);
	delete_info(&p);//删除联系人信息
	print_info(&p);
	search_info(&p);//查询联系人信息
	modify_info(&p);//修改联系人信息
	print_info(&p);
	sort_info(&p);//对联系人信息排序
	print_info(&p);
	clear_info(a, len);//清空联系人信息
	system("pause");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值