(C语言)通讯录

问题描述:

实现一个通讯录;

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

姓名、性别、年龄、电话、住址。实现增,删,查,找,清空这几个功能。

程序分析:

(1)基本思路:学完了结构体,我们必须通过不断地应用才能真正的掌握。这个通讯录是以两个结构体作为框架搭建的一个小型工程。如下所示:

typedef struct Peo

{

char name[NAME_LEN];

int age;

char sex[SEX_LEN];

char tele[TELE_LEN];

char addr[ADDR_LEN];

}PEO,*PPEO;

这个结构体类型是用来存储一个联系人的信息以个模型。只是定义了这样一个模型,还未定义具体的联系人的信息。

typedef struct Contact

{

PEO dhb[MAX_PEO];    //存储人的信息

int count;            //记录有效个数

}Con,*Pcon;

而上面这个结构体类型则是将每个联系人存储起来的一种结构。有了这两种结构体类型,接下来只需要在这个基础上对结构体的访问或者赋值来完成通讯录的各种功能。

(2)功能函数:知道了这个工程的规划思想后,主要任务是编写增,删,查,改,清空以及显示的一些函数,从而实现这个通讯录的编写。在这些函数中需要注意的地方有以下几点:

a.增加联系人的时候,千万不能忘记有效联系人数count++;

b.要删除的联系人是建立在查找到该联系人基础上的操作,从这个联系人开始,依次将后一个人的信息赋给前一个人。最后,将count-1;

c.修改联系人的信息,也是在查找到联系人的基础上的;

d.在写清空所有联系人这个函数的时候,要想到最简便的是将有效联系人的个数count赋为0;

(3)建立工程:在建立工程的时候应该注意,将函数的声明和一些宏定义写在头文件contact.h中,将这些函数的定义单独写在一个.c(.cpp)文件中。再建立一个.c(.cpp)文件用来调用这些函数。这样这个通讯录就能顺利地完成了!

代码如下:

/*头文件<span style="background-color: rgb(255, 0, 0);">contact.h</span>*/
#ifndef __CONTACT_H__
#define __CONTACT_H__

#include<stdio.h>
#define NAME_LEN 20
#define SEX_LEN  5
#define TELE_LEN 12
#define ADDR_LEN 20
#define	MAX_PEO  1000

/**定义一个结构体类型存储每个人的信息**/
typedef struct Peo
{
	char name[NAME_LEN];
	int age;
	char sex[SEX_LEN];
	char tele[TELE_LEN];
	char addr[ADDR_LEN];
}PEO,*PPEO;	   //PEO代表了上边所指的类型,PPEO是指向这个类型的结构指针

/*定义一个电话本使所有人(不超过1000)的信息可以存到里面*/
typedef struct Contact
{
	PEO dhb[MAX_PEO];	//存储人的信息
	int count;			//记录有效个数
}Con,*Pcon;

/**声明以下几个函数**/
void InitContact(Pcon contact);	//初始化有效联系人的人数
bool addContact(Pcon contact);	//增加联系人
void showContact(Pcon contact);	 //显示所有联系人
void print_menu();				 //打印菜单
int searchContact(Pcon contact);   //查找联系人
void deleteContact(Pcon contact);	//删除联系人
void clearContact(Pcon contact);   //清空所有联系人
bool modifyContact(Pcon contact);  //修改联系人信息

#endif

/*
*
在这个<span style="background-color: rgb(255, 0, 0);">contact.c</span>文件中将定义这几个函数**/
#include"contact.h"
#include<string.h>

void InitContact(Pcon contact)
{
	contact->count = 0;
}
bool addContact(Pcon contact)
{
	  printf("name:");
	  scanf("%s",contact->dhb[contact->count].name);
	  printf("age:");
	  scanf("%d",&(contact->dhb[contact->count].age));
	  printf("sex:");
	  scanf("%s",contact->dhb[contact->count].sex);
	  printf("tele:");
	  scanf("%s",contact->dhb[contact->count].tele);
	  printf("addr:");
	  scanf("%s",contact->dhb[contact->count].addr);
	  contact->count++;
	  return true;
}
void showContact(Pcon contact)
{
	int i = 0;
	for(i = 0;i<contact->count;i++)
	{
		printf("%12s",contact->dhb[i].name);
		printf("%12d",contact->dhb[i].age);
		printf("%12s",contact->dhb[i].sex);
		printf("%12s",contact->dhb[i].tele);
		printf("%12s\n",contact->dhb[i].addr);

	}
}
int searchContact(Pcon contact)
{
	char name[NAME_LEN];
	printf("name:\n");
	scanf("%s",name);
	int ret = 0;
	for(ret = 0;ret<contact->count;ret++)
	{
		if(strcmp(name,contact->dhb[ret].name) == 0)
		{
			return ret;
		}
	}
	return -1;
}
void deleteContact(Pcon contact)
{
	int  ret = searchContact(contact);
	while(ret<contact->count-1)
	{
		contact->dhb[ret] = contact->dhb[ret+1];
		ret++;
	}
	(contact->count)--;

}
void clearContact(Pcon contact)
{
	  contact->count = 0;
}
bool modifyContact(Pcon contact)
{
	  int  ret = searchContact(contact);
	  printf("name:");
	  scanf("%s",contact->dhb[ret].name);
	  printf("age:");
	  scanf("%d",&(contact->dhb[ret].age));
	  printf("sex:");
	  scanf("%s",contact->dhb[ret].sex);
	  printf("tele:");
	  scanf("%s",contact->dhb[ret].tele);
	  printf("addr:");
	  scanf("%s",contact->dhb[ret].addr);

	  return true;
}
void print_menu()
{
	printf("***************************\n");
	printf("*[1]add:        [2]show:  *\n");
	printf("*[3]search:     [4]delete:*\n");
	printf("*[5]clear:      [6]modify:*\n");
	printf("***************************\n");
}
/**定义这几个函数**/
#include"contact.h"
#include<string.h>

void InitContact(Pcon contact)
{
	contact->count = 0;
}
bool addContact(Pcon contact)
{
	  printf("name:");
	  scanf("%s",contact->dhb[contact->count].name);
	  printf("age:");
	  scanf("%d",&(contact->dhb[contact->count].age));
	  printf("sex:");
	  scanf("%s",contact->dhb[contact->count].sex);
	  printf("tele:");
	  scanf("%s",contact->dhb[contact->count].tele);
	  printf("addr:");
	  scanf("%s",contact->dhb[contact->count].addr);
	  contact->count++;
	  return true;
}
void showContact(Pcon contact)
{
	int i = 0;
	for(i = 0;i<contact->count;i++)
	{
		printf("%12s",contact->dhb[i].name);
		printf("%12d",contact->dhb[i].age);
		printf("%12s",contact->dhb[i].sex);
		printf("%12s",contact->dhb[i].tele);
		printf("%12s\n",contact->dhb[i].addr);

	}
}
int searchContact(Pcon contact)
{
	char name[NAME_LEN];
	printf("name:\n");
	scanf("%s",name);
	int ret = 0;
	for(ret = 0;ret<contact->count;ret++)
	{
		if(strcmp(name,contact->dhb[ret].name) == 0)
		{
			return ret;
		}
	}
	return -1;
}
void deleteContact(Pcon contact)
{
	int  ret = searchContact(contact);
	while(ret<contact->count-1)
	{
		contact->dhb[ret] = contact->dhb[ret+1];
		ret++;
	}
	(contact->count)--;

}
void clearContact(Pcon contact)
{
	  contact->count = 0;
}
bool modifyContact(Pcon contact)
{
	  int  ret = searchContact(contact);
	  printf("name:");
	  scanf("%s",contact->dhb[ret].name);
	  printf("age:");
	  scanf("%d",&(contact->dhb[ret].age));
	  printf("sex:");
	  scanf("%s",contact->dhb[ret].sex);
	  printf("tele:");
	  scanf("%s",contact->dhb[ret].tele);
	  printf("addr:");
	  scanf("%s",contact->dhb[ret].addr);

	  return true;
}
void print_menu()
{
	printf("***************************\n");
	printf("*[1]add:        [2]show:  *\n");
	printf("*[3]search:     [4]delete:*\n");
	printf("*[5]clear:      [6]modify:*\n");
	printf("***************************\n");
}
/*
*
<span style="background-color: rgb(255, 0, 0);">main.c</span>中函数的调用*/
#include"contact.h"

int main()
{
	Con contact;
	InitContact(&contact);

	int input = 1;
	int ret;

	while(input)
	{
		print_menu();
		printf("please chose input:\n");
		scanf("%d",&input);
		switch(input)
		{
		case 1:
			addContact(&contact);
			break;
		case 2:
			showContact(&contact);
			break;
		case 3:
			ret = searchContact(&contact);
			if(ret != -1)
			{
				printf(" found it!\n");
			}
			else
			{
				printf("not exist!\n");
			}
			break;
		case 4:
		deleteContact(&contact);
			break;
		case 5:
		clearContact(&contact);
			break;
		case 6:
		modifyContact(&contact);
			break;
		default:
			break;
		}

	}
	return 0;
}

时间: 2024-07-30 13:36:42

(C语言)通讯录的相关文章

C语言 通讯录

实现一个通讯录: 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 main.c #include "contact.h" //查找联系人,返回下标: int find(pCon pcon,char *name) { int i=0; while(i < pcon->num) {

c 语言 通讯录 写入文本文件(含读取,删除某行,修改某行)

/*   实现一个通讯录: 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址   提供方法: 1.  添加联系人信息 2.  删除指定联系人信息 3.  查找指定联系人信息 4.  修改指定联系人信息 5.  显示所有联系人信息 6.  清空所有联系人  7.  显示文本电话簿信息  */ //头文件 #ifndef __PHONE_BOOK_H__ #define __PHONE_BOOK_H__ typedef struct phone_book { c

C语言通讯录系统——C语言单向链表实现

实现的通讯录功能有:查看通讯录.添加联系人.删除联系人.查询联系人.保存并退出. 通过txt文件保存和读取通讯录数据. #include <stdio.h> #include <string.h> #include <Windows.h> void showMenu(); void initL(); void addPerson(); void displayPersons(); void deletePerson(); void saveList(); void se

C语言做一个通讯录程序(在console里面运行)

最近复习C语言的时候看到网上有个C语言通讯录的小项目,于是看了下那个程序实现的大概的功能,然后自己也跟着做了个.代码还算简洁,贴上来给有需要的人. 1 // 2 // main.m 3 // AdressBook 4 // 5 // Created by bestkayle on 15/8/8. 6 // Copyright (c) 2015年 bestkayle. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h>

最新动态:开源项目 ionic3-awesome — 实现iframe嵌入外部网页

项目地址:https://github.com/alex-0407/ionic3-awesome 从零开始搭建一个ionic3 app,集成更多通用功能,通用组件. 让ionic开发more and more easy! 项目预览: ionic3-awesome 已完成内容: 基本框架搭建 页面懒加载 页面跳转 带logo的二维码生成组件,支持变换样式 多主题 九宫格 iframe嵌入外部网页 Todo: 多语言 通讯录 自定义扫一扫(二维码) 更多组件 更多功能 项目地址:https://gi

C语言编写—通讯录(小项目)

C语言的练习-通讯录,该通讯录主要实现最大存储1000个人信息,对通讯录中的个人信息能够进行增.删.查.改等基本功能,通过用c语言编写,能够极大程度上锻炼编程能力.程序主要使用数组的知识,创建1000大小的静态数组,在极端情况下,通讯录中元素较少,对空间的使用率较低,使得空间浪费.该程序能够再次进行改进,可以通过动态开辟数组,减少空间的浪费,也可以通过链表来实现. --下面程序主要是利用静态数组的方式,该程序有待改进. #define _CRT_SECURE_NO_WARNINGS 1 #inc

【简易通讯录】——C语言实现

------------------------------------------------------------------------------------------------------- 本通讯录实现了一个普通通讯录的所有功能:包括:联系人的添加,删除,修改,排序,以及清空等功能:采用结构体自定义类型实现:排序部分采用的是冒泡排序.界面比较友好,希望各位朋友批评指正. ------------------------------------------------------

【C语言】通讯录代码(一个文件下实现)

//[C语言]通讯录(一个文件实现) #include <stdio.h> #include <string.h> #define NAME_MAX 20 #define SEX_MAX 5 #define TEL_MAX 11 #define ADDR_MAX 20 #define PERSON_MAX 1000 typedef struct person { char name[NAME_MAX]; char sex[SEX_MAX]; int age; char tel[TE

C语言写郑州大学校友通讯录

1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #define LEN sizeof(struct address_list) 5 6 /* 7 *************************通讯录结构体*********************************** 8 */ 9 10 struct address_list 11 { 12 char name[30]; /

关于通讯录C语言版

一 题目简介:关于通讯录,主要记录了姓名,性别,名字: 性别:年龄邮编:  地址:手机号码:家庭电话号码:公司名称:电子邮件:QQ 号码:等 二 源码的github链接    https://github.com/marry1234/test/tree/maste 三.所设计的模块测试用例.测试结果截图 用例名称:验证输入的邮件地址是否正确 测试项:用户的电话号码 环境要求:Wingdos8和Microsoft C++ 优先级:高 层次:1 步骤:打开Microsoft C++; 开始运行程序后