C语言实现通讯录的方法(包括静态版本和动态版本)

目录
  • 1.静态通讯录的实现
    • 实现的方法:
  • 2.动态通讯录的实现
    • 实现的方法:
  • 3.总结

1.静态通讯录的实现

实现的方法:

我们采用的方法就是工程形势,实现将功能和定义以及测试分成三个文件,其中定义放在.h文件,实现和测试放在.c文件当中。

(1)contact.h文件的基本实现:

#pragma once//防止头文件重复定义

#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30
#define MAX 1000  //静态通讯录,最大为1000

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

struct PeoInfo
{
	char name[NAME_MAX];
	int age;
	char sex[SEX_MAX];
	char tele[TELE_MAX];
	char addr[ADDR_MAX];
};

//静态的版本
struct Contact
{
	struct PeoInfo data[MAX];//容量为1000的通讯录
	int sz; //已经使用了多少个通讯录
};

//初始化通讯录
void InitContact(struct Contact* pc);

//通讯录的增加
void PushContact(struct Contact* pc);

//通讯录的删除:
void PopContact(struct Contact* pc);

//通讯录的打印
void ShowContact(const struct Contact* pc);

//通过名字来查找,找到返回下标,找不到返回-1。
int FindContactByName(const struct Contact* pc, const char* name);

//通讯的查找并打印
void SearchContact(const struct Contact* pc);

//修改联系人的信息
void ModContact(struct Contact* pc);

//以名字排序
void SortByNameContact(struct Contact* pc);

//清空所有联系人
void DestroyContact(struct Contact* pc);

(2)contact.c文件的基本实现

#include"contact.h"

//通讯录的初始化
void InitContact(struct Contact* pc)
{
	pc->sz = 0;
	memset(pc->data, 0, sizeof(struct PeoInfo) * MAX);
}

//通讯录增加
void PushContact(struct Contact* pc)
{
	if (pc->sz >= MAX)
	{
		printf("This contact is full!\n");
	}
	printf("please input name:>");
	scanf("%s", &pc->data[pc->sz].name);
	printf("please input age:>");
	scanf("%d", &pc->data[pc->sz].age);
	printf("please input sex:>");
	scanf("%s", pc->data[pc->sz].sex);
	printf("please input tele:>");
	scanf("%s", pc->data[pc->sz].tele);
	printf("please input addr:>");
	scanf("%s", pc->data[pc->sz].addr);
	printf("Add successful\n");
	pc->sz++;
}

//通过名字来查找,找到返回下标,找不到返回-1。
int FindContactByName(const struct Contact* pc, const char* ThisName)
{
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		if (strcmp(ThisName, pc->data[i].name) == 0)
		{
			return i;
		}
	}
	return -1;
}

//通讯录的打印
void ShowContact(const struct Contact* pc)
{
	printf("%15s\t%5s\t%8s\t%15s\t%20s\n", "name", "age","sex","tele","addr");
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		printf("%15s\t%5d\t%8s\t%15s\t%20s\n", pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data[i].addr);
	}
}

//通讯录的删除:
void PopContact(struct Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("Address book is empty. Can Not be deleted\n");
		return;
	}
	char name[NAME_MAX] = { 0 };
	printf("Please enter the name of the person you want to delete:>");
	scanf("%s", name);
	//1.查找
	int pos = FindContactByName(pc, name);
	if ( pos == -1)
	{
		printf("There's no one by that name!\n");
	}
	else
	{
		//2.删除
		int j = 0;
		for (j = pos; j < pc->sz - 1; j++)
		{
			pc->data[j] = pc->data[j + 1];
		}
		printf("Delection successful\n");
	}
	pc->sz--;

}

//通讯的查找
void SearchContact(const struct Contact* pc)
{
	char name[NAME_MAX] = { 0 };
	printf("please input name of you want to search:>");
	scanf("%s", name);
	int pos = FindContactByName(pc, name);
	if (pos == -1)
	{
		printf("No this one!\n");
	}
	else
	{
		printf("%15s\t%5s\t%8s\t%15s\t%20s\n", "name", "age", "sex", "tele", "addr");
		printf("%15s\t%5d\t%8s\t%15s\t%20s\n",
		pc->data[pos].name,
		pc->data[pos].age,
		pc->data[pos].sex,
		pc->data[pos].tele,
		pc->data[pos].addr);
	}
}

//修改联系人的信息
void ModContact(struct Contact* pc)
{
	char name[NAME_MAX] = { 0 };
	printf(" Please enter the name of the person you want to modify : > ");
	scanf("%s", name);
	int pos = FindContactByName(pc, name);
	if (pos == -1)
	{
		printf("No this one\n");
	}
	else
	{
		printf("please input new name:>");
		scanf("%s", &pc->data[pos].name);
		printf("please input new age:>");
		scanf("%d", &pc->data[pos].age);
		printf("please input new sex:>");
		scanf("%s", pc->data[pos].sex);
		printf("please input new tele:>");
		scanf("%s", pc->data[pos].tele);
		printf("please input new addr:>");
		scanf("%s", pc->data[pos].addr);
		printf("Modify successful\n");
	}
}
//以名字排序
void SortByNameContact(struct Contact* pc)
{
	if (pc->sz == 0 || pc->sz == 1)
	{
		printf("Too few contacts to sort\n");
	}
	int i, j;
	for (i = 0; i < pc->sz ; i++)
	{
		int flag = 0;
		for (j = 0; j < pc->sz - 1 - i; j++)
		{
			if (strcmp(pc->data[j].name, pc->data[j + 1].name) > 0)
			{
				struct PeoInfo tmp = pc->data[j];
				pc->data[j] = pc->data[j + 1];
				pc->data[j + 1] = tmp;
				flag = 1;
			}
		}
		if (flag == 0)
		{
			break;
		}
	}
	printf("Sort successful\n");
}

//清空所有联系人
void DestroyContact(struct Contact* pc)
{
	pc->sz = 0;
	printf("Destroy successful\n");
}

(3)test.c文件的实现

#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
void menu()
{
	printf("************************************\n");
	printf("******   1.add      2.del    *******\n");
	printf("******   3.search   4.modify *******\n");
	printf("******   5.show     6.sort   *******\n");
	printf("******   7.destroy  0.exit   *******\n");
	printf("************************************\n");
}

enum Option//使用枚举,增加代码的可读性
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW,
	SORT,
	DESTROY,
};

int main()
{
	int input;
	struct Contact con;
	//初始化通讯录
	InitContact(&con);
	do
	{
		menu();
		printf("please select:>\n");
		scanf("%d", &input);
		switch (input)
		{
		case EXIT:
			printf("exit succseeful!\n");
			break;
		case ADD:
			PushContact(&con);
			break;
		case DEL:
			PopContact(&con);
			break;
		case SEARCH:
			SearchContact(&con);
			break;
		case MODIFY:
			ModContact(&con);
			break;
		case SHOW:
			ShowContact(&con);
			break;
		case SORT:
			SortByNameContact(&con);
			break;
		case DESTROY:
			DestroyContact(&con);
			break;
		default:
			printf("Select error, please select again!\n");
		}
	} while (input);
	return 0;
}

2.动态通讯录的实现

实现的方法:

和静态实现细节都差不多,只是静态使用的数组,所以固定了通讯录的大小,不能超出通讯录大小的限制,且没有使用完还会造成空间的浪费。所以使用动态内存分配来实现动态的通讯录。会节省空间并且是通讯录的大小变得灵活。

(1)contact.h文件的基本实现:

#pragma once//防止头文件重复定义

#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30
#define DEFINE_SZ  3

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

struct PeoInfo
{
	char name[NAME_MAX];
	int age;
	char sex[SEX_MAX];
	char tele[TELE_MAX];
	char addr[ADDR_MAX];
};

//动态的版本
struct Contact
{
	struct PeoInfo* data;
	int sz;//通讯录已经使用元素的个数
	int capacity; //当前的最大容量
};

//初始化通讯录
void InitContact(struct Contact* pc);

//通讯录的增加
void PushContact(struct Contact* pc);

//通讯录的删除:
void PopContact(struct Contact* pc);

//通讯录的打印
void ShowContact(const struct Contact* pc);

//通过名字来查找,找到返回下标,找不到返回-1。
int FindContactByName(const struct Contact* pc, const char* name);

//通讯的查找并打印
void SearchContact(const struct Contact* pc);

//修改联系人的信息
void ModContact(struct Contact* pc);

//以名字排序
void SortByNameContact(struct Contact* pc);

//清空所有联系人
void DestroyContact(struct Contact* pc);

(2)contact.c文件的基本实现

#include"contact.h"

//通讯录的初始化

void InitContact(struct Contact* pc)
{
	pc->sz = 0;
	pc->data = (struct PeoInfo*)malloc(sizeof(struct PeoInfo) * DEFINE_SZ);
	if (pc->data == NULL)
	{
		printf("malloc fail\n");
		return;
	}
	pc->capacity = DEFINE_SZ;
}

//通讯录增加
void PushContact(struct Contact* pc)
{
	if (pc->sz == pc->capacity)
	{
		//增容:
		struct PeoInfo* ptr = (struct PeoInfo*)realloc(pc->data, sizeof(struct PeoInfo) * (pc->capacity + 2));
		if (ptr == NULL)
		{
			printf("realloc fail\n");
			return;
		}
		else
		{
			pc->data = ptr;
			pc->capacity += 2;
			printf("Compatibilization successful\n");
		}

	}
	//录入新增成员信息:
	printf("please input name:>");
	scanf("%s", &pc->data[pc->sz].name);
	printf("please input age:>");
	scanf("%d", &pc->data[pc->sz].age);
	printf("please input sex:>");
	scanf("%s", pc->data[pc->sz].sex);
	printf("please input tele:>");
	scanf("%s", pc->data[pc->sz].tele);
	printf("please input addr:>");
	scanf("%s", pc->data[pc->sz].addr);
	printf("Add successful\n");
	pc->sz++;
}

//通过名字来查找,找到返回下标,找不到返回-1。
int FindContactByName(const struct Contact* pc, const char* ThisName)
{
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		if (strcmp(ThisName, pc->data[i].name) == 0)
		{
			return i;
		}
	}
	return -1;
}

//通讯录的打印
void ShowContact(const struct Contact* pc)
{
	printf("%15s\t%5s\t%8s\t%15s\t%20s\n", "name", "age", "sex", "tele", "addr");
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		printf("%15s\t%5d\t%8s\t%15s\t%20s\n", pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data[i].addr);
	}
}

//通讯录的删除:
void PopContact(struct Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("Address book is empty. Can Not be deleted\n");
		return;
	}
	char name[NAME_MAX] = { 0 };
	printf("Please enter the name of the person you want to delete:>");
	scanf("%s", name);
	//1.查找
	int pos = FindContactByName(pc, name);
	if (pos == -1)
	{
		printf("There's no one by that name!\n");
	}
	else
	{
		//2.删除
		int j = 0;
		for (j = pos; j < pc->sz - 1; j++)
		{
			pc->data[j] = pc->data[j + 1];
		}
		printf("Delection successful\n");
	}
	pc->sz--;

}

//通讯的查找
void SearchContact(const struct Contact* pc)
{
	char name[NAME_MAX] = { 0 };
	printf("please input name of you want to search:>");
	scanf("%s", name);
	int pos = FindContactByName(pc, name);
	if (pos == -1)
	{
		printf("No this one!\n");
	}
	else
	{
		printf("%15s\t%5s\t%8s\t%15s\t%20s\n", "name", "age", "sex", "tele", "addr");
		printf("%15s\t%5d\t%8s\t%15s\t%20s\n",
			pc->data[pos].name,
			pc->data[pos].age,
			pc->data[pos].sex,
			pc->data[pos].tele,
			pc->data[pos].addr);
	}
}

//修改联系人的信息
void ModContact(struct Contact* pc)
{
	char name[NAME_MAX] = { 0 };
	printf(" Please enter the name of the person you want to modify : > ");
	scanf("%s", name);
	int pos = FindContactByName(pc, name);
	if (pos == -1)
	{
		printf("No this one\n");
	}
	else
	{
		printf("please input new name:>");
		scanf("%s", &pc->data[pos].name);
		printf("please input new age:>");
		scanf("%d", &pc->data[pos].age);
		printf("please input new sex:>");
		scanf("%s", pc->data[pos].sex);
		printf("please input new tele:>");
		scanf("%s", pc->data[pos].tele);
		printf("please input new addr:>");
		scanf("%s", pc->data[pos].addr);
		printf("Modify successful\n");
	}
}

//以名字排序
void SortByNameContact(struct Contact* pc)
{
	if (pc->sz == 0 || pc->sz == 1)
	{
		printf("Too few contacts to sort\n");
	}
	int i, j;
	for (i = 0; i < pc->sz; i++)
	{
		int flag = 0;
		for (j = 0; j < pc->sz - 1 - i; j++)
		{
			if (strcmp(pc->data[j].name, pc->data[j + 1].name) > 0)
			{
				struct PeoInfo tmp = pc->data[j];
				pc->data[j] = pc->data[j + 1];
				pc->data[j + 1] = tmp;
				flag = 1;
			}
		}
		if (flag == 0)
		{
			break;
		}
	}
	printf("Sort successful\n");
}

//清空所有联系人
void DestroyContact(struct Contact* pc)
{
	pc->sz = 0;
	pc->capacity = 0;
	free(pc->data);
	pc->data = NULL;
	printf("Destroy successful\n");
}

(3)test.c文件的实现

#include"contact.h"

void menu()
{
	printf("************************************\n");
	printf("******   1.add      2.del    *******\n");
	printf("******   3.search   4.modify *******\n");
	printf("******   5.show     6.sort   *******\n");
	printf("******   7.destroy  0.exit   *******\n");
	printf("************************************\n");
}

enum Option
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW,
	SORT,
	DESTROY,
};

int main()
{
	int input;
	struct Contact con;
	//初始化通讯录
	InitContact(&con);
	do
	{
		menu();
		printf("please select:>\n");
		scanf("%d", &input);
		switch (input)
		{
		case EXIT:
			DestroyContact(&con);
			printf("exit succseeful!\n");
			break;
		case ADD:
			PushContact(&con);
			break;
		case DEL:
			PopContact(&con);
			break;
		case SEARCH:
			SearchContact(&con);
			break;
		case MODIFY:
			ModContact(&con);
			break;
		case SHOW:
			ShowContact(&con);
			break;
		case SORT:
			SortByNameContact(&con);
			break;
		case DESTROY:
			DestroyContact(&con);
			break;
		default:
			printf("Select error, please select again!\n");
		}
	} while (input);
	return 0;
}

3.总结

其实通讯录的实现就是数据结构的一种体现,我们需要学的东西还有很多,请大家一起跟我努力吧!!
再就是有问题请大家及时指正!!!谢谢大家。

到此这篇关于C语言实现通讯录的方法(包括静态版本和动态版本)的文章就介绍到这了,更多相关C语言实现通讯录内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言实现个人通讯录管理系统

    如何用c语言制作简易的个人通讯录管理系统?想必这是每一位初步学习c语言的同学需要解决的一个大问题.如何将这些数据类型不完全相同的数据元素存储并访问呢?采用结构体便能轻松解决这个问题! #include<stdio.h> #include<string.h> #include<stdlib.h> #include<windows.h> struct stu //第一部分:声明结构体类型struct stu { char name[100];//姓名为字符串型

  • C语言实现通讯录系统

    C语言通讯录系统实现,供大家参考,具体内容如下 需求分析: 利用文件读,写的方法 实现增加通讯录联系人信息 实现删除通讯录联系人信息 实现查找通讯录联系人信息 实现修改通讯录联系人信息 实现查看现有通讯录联系人信息 代码实现: // main.c // C语言通讯录实现 // // Created by Brisinga on 15/10/14. // Copyright © 2015年 yan. All rights reserved. // #include <stdio.h> #incl

  • C语言通讯录管理系统课程设计

    本文实例为大家分享了C语言通讯录管理系统课程设计,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <windows.h> struct Sign{ char name[8]; char sex[4]; char birthday[12]; char phone[11]; char postcode[7]; char addr[30]; struct Sign *next; }pe; char Ph

  • C语言基于哈希表实现通讯录

    本文为大家分享了C语言基于哈希表实现通讯录的具体代码,供大家参考,具体内容如下 1.需求分析 本演示程序用C语言编写,完成哈希表的生成,电话号码的插入.以及查找等功能. (1)按提示输入相应的联系人的相关资料: (2)以相应的输出形式输出所存储的的联系人的资料: (3)程序可以达到建立.添加.查找.打印的功能: (4)程序可以判断用户输入的非法数据并引导正确的输入. 2.概要设计 存储电话号码的记录时,若在存储位置和其关键字之间建立某种确定的对应关系使得每个关键字和存储结构中一个唯一的存储位置相

  • 用C语言实现简易通讯录

    C语言实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 **提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人** 思路分析: 首先我们可以分三个模块来解决这个问题,第一个模块我们需要一个头文件,这个头文件里可以包含一些相应信息,当实现文件和测试文件包含自己定义的头文件时便可以获得一些相关的信息.所以头文件里

  • C语言实现简易通讯录

    本文实例为大家分享了C语言实现简易通讯录的具体代码,供大家参考,具体内容如下 功能描述: 1.存储联系人的相关信息,包括姓名.性别.电话号码.备注 2.可输出通讯录全部信息 3.清空通讯录的 4.用户交互界面 5.插入新联系人信息 6.查找联系人,包括"按姓名查找"和"按电话号查找"两种 7.删除联系人,包括"按姓名删除"和"按电话号删除"两种 8.按性别筛选联系人信息 在本次通讯录的编写代码中,涉及到了C高级和数据结构的一些

  • C语言通讯录管理系统完整版

    C语言实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能.. 完整的代码如下: #include <stdio.h> #include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针// #include <string.h> #include <stdlib.h> //标准库函数// #define NULL 0 #define LEN sizeof(struct address_list) //计算字节//

  • C语言实现通讯录的方法(包括静态版本和动态版本)

    目录 1.静态通讯录的实现 实现的方法: 2.动态通讯录的实现 实现的方法: 3.总结 1.静态通讯录的实现 实现的方法: 我们采用的方法就是工程形势,实现将功能和定义以及测试分成三个文件,其中定义放在.h文件,实现和测试放在.c文件当中. (1)contact.h文件的基本实现: #pragma once//防止头文件重复定义 #define NAME_MAX 20 #define SEX_MAX 5 #define TELE_MAX 12 #define ADDR_MAX 30 #defin

  • 纯js和css实现渐变色包括静态渐变和动态渐变

    说起"渐变色",你会想起什么? 当我开始搜索查找这个名词的时候,才发现它实际上是有两种理解或者说是两种形式的:动态渐变和静态渐变. 所谓动态渐变,举个简单的例子:他来了,她的脸渐渐红了...渐渐的,渐渐改变的,是不断在改变的:而静态渐变,也就更简单了:天上一到彩虹,赤橙黄绿青蓝紫啊...在当前展示的成品中,颜色从一部分到另一部分的颜色是不一样的,可能幅度比较小,是逐渐改变的,但有一点是至关重要的,它已经存在了,形成了变化的现状且无法再改变. 这样我们先来用javascript实现一下所

  • C语言通过三种方法实现属于你的通讯录

    目录 一.基础版本 1.1 通讯录的个人信息(结构体来实现) 1.2通讯录名单 1.3人员初始化 1.4菜单 1.5主函数 二.功能的实现 2.1.增加人数 2.2.删除人数 2.3.查找 2.4.展示 2.5.排序(这里我是通过名字) 三.通讯录进阶(设置动态存储) 3.1通讯录从静态改为动态 3.2通讯录的初始化 3.3通讯录的增加需要判断是否满了 四.文件的形式存储通讯录 4.1人员信息的保存 4.2人员信息的流入 一.基础版本 前提准备: 1.通讯录里面的人的个人信息(姓名.性别.年龄.

  • C语言之通讯录的模拟实现代码

    在C语言学习结束之际,谨以此篇文章来对C语言的学习告一段落. 纲要: 通讯录的静态版本 通讯录的动态版本 通讯录的带文件版本 因为三种实现方法除了储存形式不同,其他都基本相同,所以我们重点论述静态版本的实现,以及它们不同的储存方式. 一.通讯录的静态版本 为什么叫它为静态版本呢,因为在此部分的储存是以数组来储存的,那对于各种各样的信息,我们要拿什么数组来存放它呢?当然是结构体数组了,所以我们来定义一个结构体来表示个人信息: //采用宏的目的是方便日后修改 #define NAME_MAX 20

  • 30分钟入门Java8之默认方法和静态接口方法学习

    前言 上一篇文章30分钟入门Java8之lambda表达式,我们学习了lambda表达式.现在继续Java8新语言特性的学习,今天,我们要学习的是默认方法和静态接口方法. 这一Java8的新语言特性,在Android N中也得到了支持.至于如何在Android开发中配置Java8的开发环境,请查看上一篇文章30分钟入门Java8之lambda表达式. 默认方法 默认方法让我们能给我们的软件库的接口增加新的方法,并且能保证对使用这个接口的老版本代码的兼容性. 下面通过一个简单的例子来深入理解下默认

  • iOS获取手机通讯录方式方法(最新)

    最近学习了iOS获取手机通讯录方式方法,现在分享给大家.希望此文章对各位有所帮助. 一.iOS 9 以前的通讯录框架 AddressBookUI框架:提供了联系人列表界面.联系人详情界面.添加联系人界面等,一般用于选择联系人. AddressBook 框架:纯 C 语言的 API,仅仅是获得联系人数据.没有提供 UI 界面展示,需要自己搭建联系人展示界面. 二. iOS 9 以后最新通讯录框架 ContactsUI 框架:拥有 AddressBookUI 框架的所有功能,使用起来更加的面向对象.

  • Kotlin 语言中调用 JavaScript 方法实例详解

    Kotlin 语言中调用 JavaScript 方法实例详解 Kotlin 已被设计为能够与 Java 平台轻松互操作.它将 Java 类视为 Kotlin 类,并且 Java 也将 Kotlin 类视为 Java 类.但是,JavaScript 是一种动态类型语言,这意味着它不会在编译期检查类型.你可以通过动态类型在 Kotlin 中自由地与 JavaScript 交流,但是如果你想要 Kotlin 类型系统的全部威力 ,你可以为 JavaScript 库创建 Kotlin 头文件. 内联 J

  • C语言简易通讯录的实现代码

    本文实例为大家分享了C语言简易通讯录的具体代码,供大家参考,具体内容如下 通讯录的实现: 一.介绍: 运用C语言的数组.指针.结构体等相关知识:实现一个简易的通讯录: 此通讯录的大概内容为: 通讯录可存储1000个人的信息: 每个人的基本信息有:名字+ 年龄+性别 +  电话+ QQ + 地址 此通讯录所具有的功能:增加+ 删除 +  查询 + 修改 +  排序 + 退出 此通讯录在设计时:总共设计了三个文件: contact.h: 类型的声明和函数的声明 contact.c:函数功能的具体实现

  • C语言实现通讯录管理系统

    本文实例为大家分享了C语言实现通讯录管理系统的具体代码,供大家参考,具体内容如下 工具:Visual C++6.0 说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号.性别.籍贯.政治面貌.手机号.QQ号.宿舍等.主要用到了指针.结构体.遍历链表.文件读取等知识点. 运行效果: 代码: #include<stdio.h> #include<string.h> #inc

随机推荐