静态通讯录 源码

目录

test.c主函数

contact.c函数实现

contact.c头文件


test.c主函数

#include"contact.h"


void menu()
{
	printf("****************************\n");
	printf("***1.add        2.del ******\n");
	printf("***3.search     4.modifi****\n");
	printf("***5.show       6.sort******\n");
	printf("***      0.quit          ***\n");
	printf("****************************\n");
}
enum Option
{
	QUIT,
	ADD,
	DEL,
	SEARCH,
	MODIFI,
	SHOW,
	SORT,
};
int main()
{
	int input = 0;
	menu();
	struct contact con;
	//初始化结构体
	Init_con(&con);
	do
	{
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			//添加联系人
			add_con(&con);
			break;
		case DEL:
			//删除联系人
			del_con(&con);
			break;
		case SEARCH:
			//搜索联系人
			search_con(&con);
			break;
		case MODIFI:
			//修改
			modifi_con(&con);
			break;
		case SHOW:
			//显示
			show_con(&con);
			break;
		case SORT:
			//按xx排序
			sort_con_name(&con);
			//sort_con_age(&con);
			break;
		case QUIT:
			printf("退出程序\n");
			break;
		default:
			printf("输入错误 请重新输入\n");
			break;
		}
	} while (input);
	return 0;
}

contact.c函数实现

#include"contact.h"



void Init_con(struct contact* con)
{
	con->sz = 0;
	memset(con, '0', sizeof(struct peoinf) * max);
}

void add_con(struct contact* con)
{
	if (con->sz == 100)
	{
		printf("联系人信息已满\n");
		return;
	}
	printf("请输入要录入的名字\n");
	scanf("%s", con->data[con->sz].name);
	printf("请输入要录入的性别\n");
	scanf("%s", con->data[con->sz].sex);
	printf("请输入要录入的年龄\n");
	scanf("%d", &con->data[con->sz].age);
	printf("请输入要录入的地址\n");
	scanf("%s", con->data[con->sz].addr);
	printf("请输入要录入的电话号码\n");
	scanf("%s", con->data[con->sz].phonenum);
	con->sz++;
	printf("成功录入联系人信息\n");
}

void show_con(struct contact* con)
{
	int i = 0;
	printf("%-12s\t%-6s\t%-5s\t%-30s\t%-13s\n", "姓名", "性别", "年龄", "地址", "电话号码");
	for (i = 0; i < con->sz; i++)
	{
		printf("%-12s\t%-6s\t%-5d\t%-30s\t%-13s\n",
			con->data[i].name,
			con->data[i].sex,
			con->data[i].age,
			con->data[i].addr,
			con->data[i].phonenum);

	}
}

//按名字查找联系人
int find_name(struct contact* con, char arr[])
{
	int i = 0;
	for (i = 0; i < con->sz; i++)
	{
		if (strcmp(con->data[i].name, arr) == 0)
			return i;
	}
	return -1;
}


void search_con(const struct contact* con)
{
	char arr[max_name];
	printf("请输入要查找联系人的名字\n");
	scanf("%s", arr);
	int ret = find_name(con, arr);
	if (-1 == ret)
	{
		printf("不存在该联系人\n");
	}
	else
	{
		printf("%-12s\t%-6s\t%-5d\t%-30s\t%-13s\n",
			con->data[ret].name,
			con->data[ret].sex,
			con->data[ret].age,
			con->data[ret].addr,
			con->data[ret].phonenum);
	}
}


void del_con(struct contact* con)
{
	char name[max_name];
	printf("请输入要删除的联系人\n");
	scanf("%s", name);
	int ret = find_name(con, name);
	if (-1 == ret)
	{
		printf("不存在该联系人\n");
	}
	else
	{
		for (int i = ret; i < con->sz - 1; i++)
		{
			con->data[i] = con->data[i + 1];
		}
		con->sz--;
		printf("成功删除该联系人\n");
	}
}


void modifi_con(struct contact* con)
{
	char name[max_name];
	printf("请输入要修改联系人姓名\n");
	scanf("%s", name);
	int ret = find_name(con, name);
	if (-1 == ret)
	{
		printf("不存在该联系人\n");
	}
	else
	{
		printf("请输入姓名");
		scanf("%s", con->data[ret].name);
		printf("请输入性别");
		scanf("%s", con->data[ret].sex);
		printf("请输入年龄");
		scanf("%d", &con->data[ret].age);
		printf("请输入地址");
		scanf("%s", con->data[ret].addr);
		printf("请输入手机号码");
		scanf("%s", con->data[ret].phonenum);
	}
}




int cmp_byage(const void* e1, const void* e2)
{
	return ((struct peoinf*)e1)->age - ((struct peoinf*)e2)->age;
}
int cmp_byname(const void* e1, const void* e2)
{
	return strcmp(((struct peoinf*)e1)->name , ((struct peoinf*)e2)->name);
}

void sort_con_age(struct contact* con)
{
	qsort(con->data, con->sz, sizeof(struct peoinf), cmp_byage);
}
void sort_con_name(struct contact* con)
{
	qsort(con->data, con->sz, sizeof(struct peoinf), cmp_byname);
}

contact.c头文件

#pragma once

#include<stdio.h>
#include<string.h>




#define max 100
#define max_name 12
#define max_sex 6
#define max_age 6
#define max_addr 30
#define max_phonenum 13




struct peoinf
{
	char name[max_name];
	char sex[max_sex];
	int age;
	char addr[max_addr];
	char phonenum[max_phonenum];
};
struct contact
{
	struct peoinf data[max];
	int sz;
};


void Init_con(struct contact* con);
void add_con(struct contact* con);
void show_con(const struct contact* con);
void search_con(const struct contact* con);
void del_con( struct contact* con);
void modifi_con(struct contact* con);
void sort_con(struct contact* con);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值