c语言实现通讯录

12人阅读 评论(1) 收藏 举报
分类:

      动态分配内存版本实现的通讯录。

      没什么好说的,就只是增删查改之类的功能,直接上代码了微笑

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>     
#include<string.h>    
#include<Windows.h>
#define MAXN 20
#define MAXS 5
#define MAXA 15
static count = 1;
static int peocnt = 1;
typedef struct
{
	char name[MAXN];
	char sex[MAXS];
	char addr[MAXA];
	char num[11];
	int age;
}stu;
enum optin//枚举类型(用在main函数的switch分支语句中,免得写出挫挫的case 1之类的代码)
{
	EXIT,//0
	ADD,//1
	DEL,//2
	SEARCH,//3
	MODIFY,//4
	SHOW,//5
	EMPTY,//6
};
void menu()
{
	printf("*************************************************************\n");
	printf("******   1增加通讯录人数      2删除通讯录人数         *******\n");
	printf("******   3查找通讯录          4修改通讯录             *******\n");
	printf("******   5显示通讯录          6清空通讯录             *******\n");
	printf("******   0退出通讯录                                  *******\n");
	printf("*************************************************************\n");
}
void Add(stu* p)
{
	if (count > peocnt)
	{
		stu *p1 = realloc(p,count*sizeof(stu));
		if (p1 != NULL)
			p = p1;
		printf("增容成功!\n");
	}
	printf("请输入姓名:\n");
	scanf("%s", p[count-1].name);
	printf("请输入性别:\n");
	scanf("%s", p[count - 1].sex);
	printf("请输入地址:\n");
	scanf("%s", p[count - 1].addr);
	printf("请输入电话:\n");
	scanf("%s", p[count - 1].num);
	printf("请输入年龄:\n");
	scanf("%d", &p[count - 1].age);
	count++;
}
void Del(stu* p)
{
	int i = 0;
	char tmp[MAXN] = { 0 };
	printf("请输入你要删除的名字:\n");
	scanf("%s", tmp);
	for (i = 0; i < count-1; i++)
	{
		if (strcmp(tmp, p[i].name) == 0)
		{
			strcpy(p[i].name, p[count - 2].name);
			strcpy(p[i].sex, p[count - 2].sex);
			strcpy(p[i].addr, p[count - 2].addr);
			strcpy(p[i].num, p[count - 2].num);
			p[i].age = p[count - 2].age;
			count--;
			return;
		}
	}
	if (i == count-1)
		printf("查无此人\n");
}
void Search(stu* p)
{
	char tmp[MAXN] = { 0 };
	int i = 0;
	printf("请输入你要查找的人:\n");
	scanf("%s", tmp);
	for (i = 0; i < count-1; i++)
	{
		if (strcmp(tmp, p[i].name) == 0)
		{
			printf("姓名  年龄   性别   地址   电话\n");
			printf("%5s %5d %5s %5s %5s", p[i].name, p[i].age, p[i].sex, p[i].addr, p[i].num);
			printf("\n");
			break;
		}
	}
	if (i == count-1)
		printf("查无此人\n");
}
void Modify(stu* p)
{
	int i = 0;
	char tmp[MAXN] = { 0 };
	printf("请输入你要修改的人名;\n");
	scanf("%s", tmp);
	for (i = 0; i < count-1; i++)
	{
		if (strcmp(tmp, p[i].name) == 0)
		{
			printf("请输入姓名:\n");
			scanf("%s", p[i].name);
			printf("请输入性别:\n");
			scanf("%s", p[i].sex);
			printf("请输入地址:\n");
			scanf("%s", p[i].addr);
			printf("请输入电话:\n");
			scanf("%s", p[i].num);
			printf("请输入年龄:\n");
			scanf("%d", &p[i].age);
		}
	}
	if (i == count-1)
		printf("查无此人\n");
}
void Show(stu* p)
{
	int i = 0;
	printf("姓名  年龄   性别   地址   电话\n");
	for (i = 0; i < count-1; i++)
	{
		printf("%5s %5d %5s %5s %5s", p[i].name, p[i].age, p[i].sex, p[i].addr, p[i].num);
		printf("\n");
	}

}
void Empty(stu* p)
{
	count = 0;
}
int main()
{
	int input = 1;
	stu *p = NULL;
	stu *p1 = malloc(peocnt*sizeof(stu));
	if (p1 != NULL)
		p = p1;
	else
		perror("malloc:\n");
	memset(p, 0, peocnt*sizeof(stu));
	while (input)
	{
		menu();
		printf("请输入选项>");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			Add(p);
			break;
		case DEL:
			Del(p);
			break;
		case SEARCH:
			Search(p);
			break;
		case MODIFY:
			Modify(p);
			break;
		case SHOW:
			Show(p);
			break;
		case EMPTY:
			Empty(p);
			break;
		case EXIT:
			break;
		default:
			printf("选择有误!\n");
			break;
		}
	}
	system("pause");
	return 0;
}

查看评论

iOS开发精品课程—通讯录

本课程由扣丁学堂教学总监郭宏志讲授,主要讲解iOS开发中的通讯录这一专题,课程内容包含通讯录中的全部核心知识点。让学员更好的了解和学习通讯录这一专题。
  • 2015年11月26日 15:18

C语言实现简易通讯录

实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址**提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人...
  • Quinn0918
  • Quinn0918
  • 2017-05-14 10:47:47
  • 5168

用C语言实现一个通讯录

实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1.    添加联系人信息 2.    删除指定联系人信息 3. ...
  • persistence_s
  • persistence_s
  • 2016-12-01 23:23:40
  • 3780

【C语言】实现一个简单的通讯录

#include #include"contact.h" void print_menu() { printf("*******************************\n"); pri...
  • sunshine552
  • sunshine552
  • 2015-05-20 14:14:02
  • 1585

用c语言链表实现通讯录

 #include #include #include #define F -1 #define T 1 struct Address {     char name[20]...
  • wzx104104104
  • wzx104104104
  • 2017-05-24 18:39:37
  • 964

c语言实现通讯录(动态内存开辟)

运用动态内存开辟,实现通讯录基本功能(增删改查排序等)。。。
  • WRNGT
  • WRNGT
  • 2017-03-02 21:09:47
  • 283

类似手机的手机通讯录(C语言实现,运用到了C语言的图形库做界面)

  • 2014年11月12日 22:01
  • 942KB
  • 下载

C语言实现简单的电子通讯录2

这两天学完系统调用和标准IO,之前的通讯录可以进行一些改进(图我这里就不发了)。原理:每次启动程序时先从预设文件中以只读的形式读取保存的通讯录信息,然后将读取到的信息导入到结构体中;每次执行退出时,先...
  • believe_s
  • believe_s
  • 2017-08-14 00:12:41
  • 252

用C语言做的一个简单的通讯录

实现一个通讯录: 通讯录可以用来存个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供功能: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联...
  • My_heart_
  • My_heart_
  • 2016-05-13 23:34:04
  • 3158

C语言实现简单的电子通讯录

A)用户输入INSERT命令后,让用户输入好友信息。添加成功或失败都需提示 B)用户输入DISPLAY命令后,好友信息升序排列 C)用户输入SEARCH命令后,让用户输入将要搜索好友姓名查询。如果未搜...
  • believe_s
  • believe_s
  • 2017-07-27 00:04:37
  • 409
    个人资料
    等级:
    访问量: 192
    积分: 134
    排名: 116万+
    文章分类
    文章存档
    最新评论