用c语言多文件编写1000人的通讯录

实现一个通讯录:

通讯录可以用来存储1000个人的信息,每个人的信息包括:

姓名,性别,年龄,电话,住址

提供方法:

1:                 添加联系人信息

2:                 删除指定联系人信息

3:                 查找指定联系人信息

4:                 修改指定联系人信息

5:                 显示所有联系人信息

6:                 清空所有联系人

#ifndef __CONTACT_H_
#define __CONTACT_H_
#define NAME_MAX 20
#define SEX_MAX 10
#define TEL_MAX 11
#define ADDR_MAX 20
#define PEO_MAX 1000
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct People
{
	char name[NAME_MAX];
	char sex[SEX_MAX];
	int age;
	char tel[TEL_MAX];
	char addr[ADDR_MAX];
}*peo;
typedef struct Contact
{
	int count;
	struct People people[PEO_MAX];
}*pCon;
void add_peo(pCon pcon);
void del_peo(pCon pcon);
void find_peo(pCon pcon);
void modify_peo(pCon pcon);
void show_peo(pCon pcon);
void clear_peo(pCon pcon);
#endif


#include "contact.h"
int search(pCon pcon,char *name)
{
	int i = 0;
	for(; i < pcon->count; i++)
	{
		if(strcmp(name,pcon->people[i].name) == 0)
			return i;
	}
	return -1;
}
void add_peo(pCon pcon)							//添加联系人
{
	if(pcon->count == PEO_MAX)
	{
		printf("The contact has fullen.");
		return ;
	}
	printf("please input name:  ");
	scanf("%s",(pcon->people[pcon->count]).name);
	printf("please input sex :  ");
	scanf("%s",(pcon->people[pcon->count]).sex);
	printf("please input age:  ");
	scanf("%d",&((pcon->people[pcon->count]).age));
	printf("please input tel:  ");
	scanf("%s",(pcon->people[pcon->count]).tel);
	printf("please input address:  ");
	scanf("%s",(pcon->people[pcon->count]).addr);
	pcon->count++;
}
void del_peo(pCon pcon)							//删除联系人
{
	int i;
	char name[NAME_MAX];
	printf("please input the people you want to delete:");
	scanf("%s",name);
	i = search(pcon,name);
	if( i == -1)
		printf("The people doesn't exsit.\n");
	else if(i == 1000)
		pcon->count--;
	else
	{
		for(; i < pcon->count; i++)
			pcon->people[i] = pcon->people[i+1];
		pcon->count--;
	}
}
void find_peo(pCon pcon)						//查找联系人
{
	int i;
	char name[NAME_MAX];
	printf("please input the people you want to find:");
	scanf("%s",name);
	i = search(pcon,name);
	if( i == -1)
		printf("The people doesn't exsit.\n");
	else
		printf("%s\t%s\t%d\t%s\t%s\n",
			pcon->people[i].name,
			pcon->people[i].sex,
			pcon->people[i].age,
			pcon->people[i].tel,
			pcon->people[i].addr);
}
void modify_peo(pCon pcon)						//修改联系人
{
	int i;
	char name[NAME_MAX];
	printf("please input the people you want to modify:");
	scanf("%s",name);
	i = search(pcon,name);
	if( i == -1)
		printf("The people doesn't exsit.\n");
	else
		printf("please input name:  ");
	scanf("%s",(pcon->people[i]).name);
	printf("please input sex :  ");
	scanf("%s",(pcon->people[i]).sex);
	printf("please input age:  ");
	scanf("%d",&((pcon->people[i]).age));
	printf("please input tel:  ");
	scanf("%s",(pcon->people[i]).tel);
	printf("please input address:  ");
	scanf("%s",(pcon->people[i]).addr);
}
void show_peo(pCon pcon)						//显示联系人
{
	int i = 0;
	for(; i < pcon->count; i++)
	{
		printf("%s\t%s\t%d\t%s\t%s\n",
			pcon->people[i].name,
			pcon->people[i].sex,
			pcon->people[i].age,
			pcon->people[i].tel,
			pcon->people[i].addr);
	}
}
void clear_peo(pCon pcon)						//清空联系人
{
	pcon->count = 0;
}
#include "contact.h"
void show_menu()							//显示界面
{
	printf("************************\n");
	printf("*  1:add     2:del     *\n");
	printf("*  3:find    4:modify  *\n");
	printf("*  5:show    6:clear   *\n");
	printf("************************\n");
}
int main()
{
	struct Contact my_contact;					//定义联系人类
	int input = 1;
	my_contact.count = 0;						//联系人数量初始化
	while(input)							//每次进行循环
	{
		show_menu();
		printf("please input:");
		scanf("%d",&input);
		switch(input)
		{
			case 1:
				add_peo(&my_contact);
				break;
			case 2:
				del_peo(&my_contact);
				break;
			case 3:
				find_peo(&my_contact);
				break;
			case 4:
				modify_peo(&my_contact);
				break;
			case 5:
				show_peo(&my_contact);
				break;
			case 6:
				clear_peo(&my_contact);
				break;
			default :
				break;
		}
	}
	return 0;
}

时间: 2024-10-07 10:12:41

用c语言多文件编写1000人的通讯录的相关文章

使用C语言为python编写动态模块(1)--从底层深度解析python中的对象以及变量

楔子 我们知道可以通过使用C语言编写动态链接库的方式来给python加速,但是方式是通过ctypes来加载,通过类CDLL将动态链接库加载进来得到一个对象之后,通过这个对象来调用动态链接库里面的函数.那么问题来了,我们可不可以使用C语言为python编写模块呢?然后在使用的时候不使用ctypes加载动态库的方式,而是通过python的关键字import进行加载. 答案是可以的,我们知道可以通过编写py文件的方式来得到一个模块,那么也可以使用C语言来编写C源文件,然后再通过python解释器进行编

VHDL与Verilog硬件描述语言TestBench的编写

VHDL与Verilog硬件描述语言在数字电路的设计中使用的非常普遍,无论是哪种语言,仿真都是必不可少的.而且随着设计复杂度的提高,仿真工具的重要性就越来越凸显出来.在一些小的设计中,用TestBench来进行仿真是一个很不错的选择.VHDL与Verilog语言的语法规则不同,它们的TestBench的具体写法也不同,但是应包含的基本结构大体相似,在VHDL的仿真文件中应包含以下几点:实体和结构体声明.信号声明.顶层设计实例化.提供激励:Verilog的仿真文件应包括:模块声明.信号声明.顶层设

C语言头文件的使用(转载)

C语言头文件的使用 ——by janders 转载请注名作者和出处,谢谢! 原文:http://blog.csdn.net/janders/article/details/611081 C语言中的.h文件和我认识由来已久,其使用方法虽不十分复杂,但我却是经过了几个月的“不懂”时期,几年的“一知半解”时期才逐渐认识清楚他的本来面目.揪其原因,我的驽钝和好学而不求甚解固然是原因之一,但另外还有其他原因.原因一:对于较小的项目,其作用不易被充分开发,换句话说就是即使不知道他的详细使用方法,项目照样进行

C语言之文件操作08——总结

C程序的文件操作共涵盖7个例题,包含格式打印,文件读取,条件查找,矩阵的文件操作,数据格式输入及调用计算等内容. 文件操作使得程序有更强的拓展性,使其可以单独保存数据,这为程序的调试和优化打下了坚实的基础,为我们实现大规模计算提供了可能.至此,相信大家对文件操作也有了比较好的认识,无非是写入.读取.调用. 我们常常会听说C的强大,也是因为她有着文件操作的功能,而文件数据是可以方便重写和维护的. MATLAB数学软件是一款十分强大的工具型软件,它是通过C语言来表达算法的,作为面向过程的编程语言C,

(转) C语言头文件、库文件的查找路径

在程序设计中,文件包含是很有用的.一个大的程序可以分为多个模块,由多个程序员分别编程.有        些公    用的符号常量或宏定义等可单独组成一个文件,在其它文件的开头用包含命令包含该文件即可使        用.这样,可避免在每个文件开头都去书写那些公用量,从而节省时间,并减少出错. 对文件包含命令还要说明以下几点:1. 包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来.例如以下写法都是允许的:    #include"stdio.h"    #include   

C语言的文件的操作(一)

C语言的文件的操作(一) 一.文件定义及分类 概念:文件是指一组相关数据的有序集合,这个数据集有一个名称,即为文件名. §1 普通文件: 普通文件是驻留在磁盘或其他外部介质上的一个有序数据集,可以是源文件.目标文件.可执行程序,也可以是一组带输入的处理的原始独居或者是一组输出结果.对于源文件.目标文件.可执行程序可以称为程序文件,对输入输出程序可称作数据文件. §2 设备文件: 设备文件是指与主机相连的各外部设备,如串行通信接口.显示器.打印机.键盘等.在操作系统中把外部设备也看作一个文件来进行

C语言头文件、库文件的查找路径

在 程序设计中,文件包含是很有用的.一个大的程序可以分为多个模块,由多个程序员分别编程.有些公用的符号常量或宏定义等可单独组成一个文件,在其它文件的开头用包含命令包含该文件即可使用.这样,可避免在每个文件开头都去书写那些公用量,从而节省时间,并减少出错. 对文件包含命令还要说明以下几点:1. 包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来.例如以下写法都是允许的:    #include"stdio.h"    #include    但是这两种形式是有区别的:使用尖括号表

使用go语言复制文件

怎样使用go语言将文件复制成另一文件?go语言标准包io里提供一个简单的函数copy实现了这个功能,下面是一个例子. //////////// package main import (     "fmt"     "io"     "os" ) func main() {     CopyFile(os.Args[1], os.Args[2]) // os.Args[1]为目标文件,os.Args[2]为源文件     fmt.Println(

C语言对文件的基本操作

在C语言中,对于文件的操作是利用FILE结构体进行的. 几个常用的操作文件函数简介 1:打开文件 FILE *fopen( const char *filename, const char *mode );    第一个参数是指向文件名字符串常量的指针类型: 第二个参数指定文件打开的模式. 文件打开模式: r:读取,如果文件不存在,函数调用失败: w:为写入操作打开一个空文件.若文件不存在,则创建一个文件:若给定的文件已经存在,那么它的内容将被清空: a:为写入操作打开文件.若文件不存在,则首先