通讯录的实现(一)静态实现

实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1.添加联系人信息
2.删除指定联系人信息
3.查找指定联系人信息
4.修改指定联系人信息
5.显示所有联系人信息
6.清空所有联系人
7.以名字排序所有联系人
以下提供第一种方法:
1.静态实现:

#define _CRT_SECURE_NO_WARNINGS 1

#ifndef __CONTACT_H__
#define __CONTACT_H__

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

enum OP
{
EXIT,
ADD,
DEL,
MODIFY,
SEARCH,
DISPLAY,
SORT,
CLEAR
};

#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 25
#define MAX 1000

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

typedef struct Contact
{
PeoInfo data[MAX];
int size;
}Contact,*Pcon;

void init_contact(Pcon pcon);
void _add_contact(Pcon pcon);
void _display_contact(Pcon pcon);
void _del_contact(Pcon pcon);
void _search_contact(Pcon pcon);
void _modify_contact(Pcon pcon);
void _sort_contact(Pcon pcon);
void _clear_contact(Pcon pcon);
#endif //__CONTACT_H__

函数实现部分

#define _CRT_SECURE_NO_WARNINGS 1
#include "Contact.h"
//
//git
//svn
//
void init_contact(Pcon pcon)
{
memset(pcon->data, 0, MAX*sizeof(PeoInfo));
pcon->size = 0;
}
void _add_contact(Pcon pcon)
{
if(pcon->size >= MAX)
{
printf("电话本满了\n");
return;
}
printf("请输入名字:>");
scanf("%s",pcon->data[pcon->size].name);
printf("请输入年龄:>");
scanf("%d",&(pcon->data[pcon->size].age));
printf("请输入性别:>");
scanf("%s",pcon->data[pcon->size].sex);
printf("请输入电话:>");
scanf("%s",pcon->data[pcon->size].tele);
printf("请输入地址:>");
scanf("%s",pcon->data[pcon->size].addr);
pcon->size++;
printf("添加成功\n");
}
void _display_contact(Pcon pcon)
{
int i = 0;
printf("%9s\t%3s\t%4s\t%11s\t%10s\n","name","age","sex","tele","addr");
for(i = 0;i<pcon->size;i++)
{
printf("%9s\t%3d\t%4s\t%11s\t%10s\n",
pcon->data[i].name,
pcon->data[i].age,
pcon->data[i].sex,
pcon->data[i].tele,
pcon->data[i].addr);
}
}
static int find_entry(Pcon 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 _del_contact(Pcon pcon)
{
int pos = 0;
int index = 0;
char name[NAME_MAX];
if(pcon->size == 0)
{
printf("电话本空\n");
return;
}
printf("请输入要删除人的名字:>");
scanf("%s",name);
pos = find_entry(pcon, name);
if(pos == -1)
{
printf("找不到要删除的人\n");
return;
}
//
for(index = pos; index < pcon->size; index++)
{
pcon->data[index] = pcon->data[index+1];
}
pcon->size--;
printf("删除成功\n");
}
void _search_contact(Pcon pcon)
{
char  name[NAME_MAX] = {0};
int pos = 0;
printf("请输入要查找人的名字:>");
scanf("%s",name);
pos = find_entry(pcon, name);
if(pos == -1)
{
printf("指定联系人不存在\n");
return;
}
else
{
printf("%9s\t%3s\t%4s\t%11s\t%10s\n","name","age","sex","tele","addr");
printf("%9s\t%3d\t%4s\t%11s\t%10s\n",
pcon->data[pos].name,
pcon->data[pos].age,
pcon->data[pos].sex,
pcon->data[pos].tele,
pcon->data[pos].addr);
}
}
void _modify_contact(Pcon pcon)
{
char  name[NAME_MAX] = {0};
int pos = 0;
printf("请输入要修改人的名字:>");
scanf("%s",name);
pos = find_entry(pcon, name);
if(pos == -1)
{
printf("指定联系人不存在\n");
return;
}
else
{
printf("请输入名字:>");
scanf("%s",pcon->data[pos].name);
printf("请输入年龄:>");
scanf("%d",&(pcon->data[pos].age));
printf("请输入性别:>");
scanf("%s",pcon->data[pos].sex);
printf("请输入电话:>");
scanf("%s",pcon->data[pos].tele);
printf("请输入地址:>");
scanf("%s",pcon->data[pos].addr);
}
}
//volatile
void _sort_contact(Pcon pcon)
{
int i = 0;
int j = 0;
for(i = 0;i<pcon->size-1; i++)//控制排序趟数
{
for(j = 0; j<pcon->size-1-i; j++)
{
if(strcmp(pcon->data[j].name,pcon->data[j+1].name) > 0)
{
PeoInfo tmp = {0};
tmp = pcon->data[j];
pcon->data[j] = pcon->data[j+1];
pcon->data[j+1] = tmp;
}
}
}
}
void _clear_contact(Pcon pcon)
{
pcon->size = 0;
}
时间: 2024-08-13 21:03:50

通讯录的实现(一)静态实现的相关文章

(一〇一)集成静态库RHAddressBook实现OC访问通讯录

使用官方的AddressBook框架仅能使用C语言访问通讯录,十分不便,这里介绍集成第三方框架RHAddressBook的方法,该框架可以通过OC访问和操作通讯录. 该框架是一个静态库,集成比较复杂. 首先下载该框架:RHAddressBook,下面有关于集成的一些介绍,下面简单的介绍一下集成的过程. ①首先把静态库工程直接拖入自己的工程: ②选中自己的工程,工程配置中选择Build Phases,按照下图导入两个文件,点击左侧的加号添加即可. ③选择Build Settings,搜索Heade

Android逆向之旅---静态方式破解微信获取聊天记录和通讯录信息

一.猜想数据存放路径 微信现在是老少皆宜,大街小巷都在使用,已经替代了传统的短信聊天方式了,只要涉及到聊天就肯定有隐私消息,那么本文就来讲解如何获取微信的聊天记录以及通讯录信息. 首先我们在没有网络的时候,打开微信同样可以查看聊天记录,说明微信会把聊天记录保存到本地,那么这么多信息肯定会保存在数据库中,所以我们可以去查看微信的databases目录看看内容: 可惜的是,我们在这个里面并没有发现一些有用的数据,所以这时候就了解到了微信因为把重要信息的数据库存在其他目录下面,我们可以直接把微信的整个

通讯录--(适配iOS7/8/9)

导入库#import <AddressBook/AddressBook.h> #import <AddressBookUI/AddressBookUI.h> #pragma mark  点击 弹出通讯录 - (IBAction)contactClicked:(id)sender { //1. 创建联系人选择控制器 ABPeoplePickerNavigationController *picker = [ABPeoplePickerNavigationController new]

AngularJS + Node.js + MongoDB开发的基于位置的通讯录(by vczero)

一.闲扯 有一天班长说了,同学们希望我开发一个可以共享位置的通讯录,于是自己简单设计了下功能.包括用户角色.发表微博.共享位置等等.这次也是有点私心的,为了锻炼最近看的angularjs,于是果断选择Node.js + MongoDB + angular.js的方案.当然,开发Node.js的体会越来越深刻.记得,去年leader告诉我说尽量让node的每一个服务只支撑一个业务功能,这样才能更方便的维护.当时特别想把一个Node服务做的特别强大.现在看来leader的做法是对的,我更加倾向于把n

通讯录的实现(三)文件版本

我们再做通讯录这个小项目的时候,前边已经实现过静态版本和动态版本了,今天我来实现一下文件版本的,文件版本会将你以前录入的信息保存起来,这样方便以后的查询和操作. 文件版本实现起来并不难,只需在动态版本上稍作修改即可.下面是我的源码: "Contact.h" #ifndef __CONTACT_H__ #define __CONTACT_H__ #include <stdio.h> #include <string.h> #include<stdlib.h&

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

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

iOS开发之--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook功能开发汇总

前言 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: 目录 系统应用 系统服务 2.1. 短信与邮件 2.2. 通讯录 2.3. 蓝牙 2.4. 社交 2.5. Game Center 2.6. 应用内购买 2.7. iCloud 2.8. Passbook 1. 系统应用 在开发某些应用时可能希望能够调用iOS系统内置的电话.短信.邮件.浏览

iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: 调用系统应用 使用系统服务 短信与邮件 通讯录 蓝牙 社交 Game Center 应用内购买 iCloud Passbook 系统应用 在开发某些应用时可能希望能够调用iOS系统内置的电话.短信.邮件.浏览器应用,此时你可以直接使用UIApplication的OpenUR

iOS开发系列通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开

--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务:http://www.jinhusns.com/Products/Download/?type=xcj 调用系统应用 使用系统服务 短信与邮件 通讯录 蓝牙 社交 Game Center 应用内购买 iCloud Passbook 目 录 系统应用 在开发某些应用时可能希望能