【C语言】C语言实现通讯录

通过C语言实现有一个通讯录
通讯录具有以下的功能1.手机用户添加 、2.手机用户删除、3.手机用户查找 、4.手机用户修改、
5.手机用户查看 、6.手机用户清空、7.手机用户排序 、8.手机用户保存、0.退出程序

代码如下:
text.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"

void menu()
{
	printf("***************************************\n");
	printf("**********1.手机用户添加        2.手机用户删除***********\n");
	printf("**********3.手机用户查找        4.手机用户修改********\n");
	printf("**********5.手机用户查看        6.手机用户清空*********\n");
	printf("**********7.手机用户排序        8.手机用户保存**********\n");
	printf("**********0.退出程序                          **********\n");
	printf("***************************************\n");
}
void text()
{
	int input=0;
	contact con;
	InitContact(&con);
	do
	{
		menu();
		printf("请输入选择:>");
		scanf("%d", &input);
		switch (input)
		{
			case ADD:
				AddContact(&con);
				break;
			case DEL:
				DelContact(&con);
				break;
			case SEARCH:
				SearchContact(&con);
				break;
			case MODIFY:
				ModifyContact(&con);
				break;
			case SHOW:
				ShowContact(&con);
				break;
			case EMPTY:
				EmptyContact(&con);
				break;
			case SORT:
				SortContact(&con);
				break;
			case EXIT:
				Destroy(&con);
				printf("退出通讯录");
				break;
			case 8:
				Save(&con);
				printf("手机用户保存");
				break;
			default:
				printf("选择错误\n");
				break;
		}
	} while (input);
}
int main()
{
	text();
	system("pause");
	return 0;
}

contact.c

#define _CRT_SECURE_NO_WARNINGS 1

#include"contact.h"

void InitContact(contact*pcon)
{
	pcon->data = (peolnfo*)malloc(sizeof(peolnfo)* 1);
	pcon->size = 0;
	pcon->capticty = 1;
	printf("初始化成功!\n");
}

void AddContact(contact*pcon)
{
	assert(pcon != NULL);
	if (pcon->size == pcon->capticty)
	{
		Capticty(pcon);
	}
	printf("请输入姓名:>");
	scanf("%s", pcon->data[pcon->size].name);
	printf("请输入电话号码:>");
	scanf("%s", pcon->data[pcon->size].tele);
	printf("请输入分类:>");
	scanf("%d", &pcon->data[pcon->size].type);
	printf("请输入电子邮件地址:>");
	scanf("%s", pcon->data[pcon->size].email);
	printf("请输入条目编号:>");
	scanf("%d", &pcon->data[pcon->size].num);
	pcon->size++;
	printf("添加成功\n");
}

void ShowContact( contact*pcon)
{
	int i = 0;
	printf("%-10s\t%-5s\t%-5s\t%-12s\t%-20s\n", "姓名", "电话号码", "分类", "电子邮件地址", "条目编号");
	for (i = 0; i < pcon->size; i++)
	{
		
		printf("%-10s\t%-12s\t%-5d\t%-12s\t%-5d\n",
		pcon->data[i].name,
		pcon->data[i].tele,
		pcon->data[i].type,
		pcon->data[i].email,
		pcon->data[i].num);
	}
	
}
int Search(contact*pcon, char name[])
{
	int i = 0;
	for (i = 0; i < pcon->size; i++)
	{
		if (strcmp(pcon->data[i].name,name)==0)
		{
			return i;
		}
	}
	return -1;
}

void DelContact(contact*pcon)
{
	if (pcon->size == 0)
	{
		printf("通讯录已空无法删除\n");
	}
	else
	{
		char name[MAX] = { 0 };
		printf("请输入姓名:>");
		scanf("%s", name);
		int t = Search(pcon, name);
		if (t == -1)
		{
			printf("输入姓名有误无法删除\n");
		}
		else
		{
			int i = 0;
			for (i = t; i < pcon->size - 1; i++)
			{
				pcon->data[i] = pcon->data[i + 1];
			}
			pcon->size--;
			printf("删除成功\n");
		}

	}
	
}

void SearchContact( contact*pcon)
{
	char name[MAX] = { 0 };
	printf("请输入姓名:>");
	scanf("%s", name);
	int t=Search(pcon, name);
	if (t == -1)
	{
		printf("输入有误查无此人\n");
	}
	else
	{
		printf("查找成功\n");
		printf("%-10s\t%-5s\t%-5s\t%-12s\t%-20s\n", "姓名", "电话号码", "分类", "电子邮件地址", "条目编号");
		printf("%-10s\t%-12s\t%-5d\t%-12s\t%-5d\n",
			pcon->data[t].name,
			pcon->data[t].tele,
			pcon->data[t].type,
			pcon->data[t].email,
			pcon->data[t].num);
	}

}

void ModifyContact(contact*pcon)
{
	char name[MAX] = { 0 };
	printf("请输入姓名:>");
	scanf("%s", name);
	int t = Search(pcon, name);
	if (t == -1)
	{
		printf("输入有误查无法修改\n");
	}
	else
	{
		printf("请重新输入姓名:>");
		scanf("%s", pcon->data[t].name);
		printf("请重新输入电话号码:>");
		scanf("%s", pcon->data[t].tele);
		printf("请重新输入分类:>");
		scanf("%d", &pcon->data[t].type);
		printf("请重新输入电子邮件地址:>");
		scanf("%s", pcon->data[t].email);
		printf("请重新输入条目编号:>");
		scanf("%d", &pcon->data[t].num);
	}
	printf("修改成功\n");
}

void EmptyContact(contact*pcon)
{
	pcon->size = 0;
	printf("清空成功\n");
}

void SortContact(contact*pcon)
{
	int i = 0;
	for (i = 0; i < pcon->size; i++)
	{
		int t = 0;
		for (t = 1; t < pcon->size; t++)
		{

			int ret=strcmp(pcon->data[i].name, pcon->data[t].name);
			if (ret<0)
			{	
				char tmp[NAME_MAX];
				strcpy(tmp, pcon->data[i].name);
				strcpy(pcon->data[i].name, pcon->data[t].name);
				strcpy(pcon->data[t].name, tmp);
			}

		}
	}
	printf("排序成功\n");
	ShowContact(pcon);
}

void Capticty(contact*pcon)
{
	int x = pcon->capticty;
	assert(pcon != NULL);
	if (pcon->size == pcon->capticty)
	{
		pcon->data = (peolnfo*)realloc(pcon->data, sizeof(peolnfo)*((x)* 2));
	}
	pcon->capticty = x * 2;
	printf("增容成功!\n");
}

void Destroy(contact*pcon)
{
	assert(pcon != NULL);
	pcon->size = 0;
	pcon->capticty = 0;
	free(pcon->data);
	pcon = NULL;
}

void Save(contact*pcon)
{
	contact *p;
	FILE*fp;
	p = pcon;
	fp = fopen("C:\\Desktop\\bookslist.txt", "w");
	fprintf(fp,"%-10s\t%-5s\t%-5s\t%-8s\t%-8s\n", "姓名", "电话号码", "分类", "电子邮件地址", "条目编号");

	for (int i = 0; i < pcon->size; i++)
	{

		fprintf(fp,"%-10s\t%-5s\t%-5d\t%-12s\t%-20d\t\n",
			pcon->data[i].name,
			pcon->data[i].tele,
			pcon->data[i].type,
			pcon->data[i].email,
			pcon->data[i].num);
	}
	fclose(fp);
	printf("保存成功!\n");
}

contact.h

#ifndef __CONTACT_H__
#define __CONTACT_H__

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
#include<malloc.h>

enum Option
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW,
	EMPTY,
	SORT
};
#define MAX 1000
#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 20
typedef struct peolnfo
{
	char name[NAME_MAX];
	char tele[TELE_MAX];
	int type;
	char email[ADDR_MAX];
	int num;
}peolnfo;

typedef struct contact
{
	peolnfo*data;
	int size ;
	int capticty;
}contact;

void InitContact(contact*pcon);
void AddContact(contact*pcon);
void ShowContact(contact*pcon);
void DelContact(contact*pcon);
void SearchContact(contact*pcon);
void ModifyContact(contact*pcon);
void EmptyContact(contact*pcon);
void SortContact(contact*pcon);
void Capticty(contact*pcon);
void Destroy(contact*pcon);
void Save(contact*pcon);

#endif //__CONTACT_H__
发布了28 篇原创文章 · 获赞 71 · 访问量 1903

猜你喜欢

转载自blog.csdn.net/famur/article/details/104987228