获取通讯录源码(获取通讯录源码双端)

今天给各位分享获取通讯录源码的知识,其中也会对获取通讯录源码双端进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

跪求大神给份用Android做的手机通讯录的完整源码,能够打电话,发短信,创建等等,谢谢了。

Android通讯录管理(获取联系人、通话记录、短信消息)

用这个地址

Android快速获取联系人

获取联系人在Android开发中经常会遇到,最近项目需要用到获取手机联系人的功能,于是写了一个先查询联系人id然后再根据id查询手机号demo,结果慢到怀疑人生(亲测联系人数据1500+)。最后经过优化查询方式后,查询时间在200ms左右(亲测联系人数据1500+)在这里分享给大家,以方便自己好直接拿来用。国际惯例,注:以下测试只查询名字和手机号码

1、查询所有联系人

2、通过姓名获取联系人

3、通过手机号码查询联系人

最后附上源码:

C++通讯录的源代码

#includeiostream

#includestring

#includeiomanip

#includelist

#includefstream

#includealgorithm

#define SPACE "\t\t\t"

using namespace std;

struct Record{

string name;

string tel;

public:

friend ostream operator(ostream os,const Record *rec){

return osrec-nameSPACErec-telendl;

};

friend istream operator(istream is,Record *rec){

isrec-name;

isrec-tel;

return is;

}

static bool comp(string patten,int type,Record *rec){

switch(type){

case 0: {return rec-name==patten;}break;

case 1: {return rec-tel==patten;}break;

}

return false;

}

static bool isvan(Record *rec){

return (rec-name==""rec-tel=="");

}

};

class RecordList:public listRecord*

{

public:

friend ostream operator(ostream os,const RecordList c_rl){

RecordList::const_iterator it=c_rl.begin();

while(it!=c_rl.end()){

os*it;

it++;

}

return os;

}

friend istream operator(istream is,RecordList rl){

RecordList::const_iterator it;

while(!is.eof()){

Record *prec=new Record;

isprec;

if(Record::isvan(prec)) continue;

rl.listRecord*::push_back(prec);

}

return is;

}

void clear();

iterator erase(iterator pos);

~RecordList(){

this-clear();

}

};

void RecordList::clear(){

RecordList::const_iterator it=this-begin();

while(it!=this-end()){

delete(*it);

it++;

}

this-listRecord*::clear();

}

RecordList::iterator RecordList::erase(iterator pos){

delete(*pos);

return listRecord*::erase(pos);

}

class AddressList{

protected:

RecordList recList;

public:

typedef RecordList::iterator Iterator;

//从通信录中寻找一个记录

virtual Iterator findRecord(string patten,int type,Iterator from);

virtual void addRecord(Record* rec);

virtual void removeRecord(Iterator it);

virtual void editRecord(Record* rec,Iterator it);

virtual void saveRecords(ostream os);

virtual void loadRecords(istream is);

virtual void addRecords(istream is);

virtual ~AddressList();

const int size() const{return (int)recList.size();}

const void clear(){recList.clear();}

Iterator begin(){return recList.begin();}

Iterator end() {return recList.end();}

};

AddressList::Iterator AddressList::findRecord(string patten,int type,Iterator from){

Iterator it;

it=from;

while(it!=recList.end()){

if(Record::comp(patten,type,*it)){

return it;

}

it++;

}

return it;

}

void AddressList::addRecord(Record* rec){

recList.push_back(rec);

}

void AddressList::removeRecord(Iterator it){

recList.erase(it);

}

void AddressList::editRecord(Record* rec,Iterator it){

delete(*it);

*it=rec;

}

void AddressList::saveRecords(ostream os){

osrecList;

}

void AddressList::loadRecords(istream is){

isrecList;

}

void AddressList::addRecords(istream is){

}

AddressList::~AddressList(){

recList.clear();

}

class AddressBook : public AddressList{

protected:

bool isModified;//通信录是否已被修改还未保存

public:

AddressBook();

virtual ~AddressBook();

//开始通信录的用户界面操作

virtual void start();

//菜单处理函数管理程序的用户界面操作

virtual void handleMenu();

//显示记录

virtual void displayRecords();

//查询记录

virtual void queryRecord();

//添加记录

virtual void addRecord();

//保存记录

virtual void saveRecords();

//读取记录

virtual void loadRecords();

//结束程序

virtual void quit();

//清空当前记录信息

virtual void clear();

protected:

//菜单选择函数

char menuSelect();

//显示表头

void dispTable();

};

AddressBook::AddressBook(){

}

AddressBook::~AddressBook(){;}

char AddressBook::menuSelect(){

char a=0;

cina;

if(a=='y'||a=='Y'){a='1';}

if(a=='n'||a=='N'){a='2';}

return a;

}

void AddressBook::start(){

cout "\n\t***** 欢迎使用sjb版通讯录 *****";

handleMenu();

}

void AddressBook::handleMenu(){

cout "\n\n\t\t\t-- 菜单管理 --\n\n";

cout "\tA -- 添加人员纪录 (Add Record)\n"

"\tF -- 查询纪录 (Find Record)\n"

"\tD -- 显示纪录 (Display Records)\n"

"\tL -- 从文本或标准输入流中加载纪录 (Load Records)\n"

"\tC -- 清空当前记录信息\n"

"\tS -- 保存记录 (Save Records)\n"

"\tQ -- 结束程序 (QUIT)\n";

switch(menuSelect()){

case 'A':

case 'a':addRecord();break;

case 'F':

case 'f':queryRecord();break;

case 'D':

case 'd':displayRecords();break;

case 'L':

case 'l':loadRecords();break;

case 'C':

case 'c':clear();break;

case 'S':

case 's':saveRecords();break;

case 'Q':

case 'q':quit();break;

}

handleMenu();

}

void AddressBook::displayRecords(){

cout"姓名"SPACE"电话"endl;

AddressList::saveRecords(cout);

cout"一共找到"size()"个对象。"endl;

cout"1"SPACE"返回"endl;

cout"2"SPACE"修改"endl;

cout"3"SPACE"删除"endl;

switch(menuSelect()){

case '1':break;

case '2':{

if(!size()){

cout"记录为0,无法修改。"endl;

break;

}

cout"要修改第几个?""1~"size()endl;

int i;

cini;

if(i1||isize()){

break;

}

Record *prec=new Record;

cout"姓名:"'\n'"电话:"'\n';

cinprec;

Iterator it=recList.begin();

while(i!=1){

it++;

i--;

}

editRecord(prec,it);

}break;

case'3':{

if(!size()){

cout"记录为0,无法修改。"endl;

break;

}

cout"要删除第几个?""1~"size()endl;

int i;

cini;

if(i1||isize()){

break;

}

Iterator it=recList.begin();

while(i!=1){

it++;

i--;

}

removeRecord(it);

}break;

}

}

void AddressBook::addRecord(){

string name,tel;

cout "\n输入名字: ";

cin name;

cout "输入电话: ";

cin tel;

Record* temp=new Record;

temp-name=name;

temp-tel=tel;

AddressList::addRecord(temp);

cout"是否继续(Y/N)"endl;

switch(menuSelect()){

case '1':addRecord();break;

case '2':break;

}

}

void AddressBook::queryRecord(){

cout"1"SPACE"按姓名查找"endl;

cout"2"SPACE"按电话查找"endl;

int type=-1;

string patten;

switch(menuSelect()){

case '1':{

type=0;

cout"请输入姓名"endl;

cinpatten;

}break;

case '2':{

type=1;

cout"请输入电话号码"endl;

cinpatten;

}break;

}

Iterator it=begin();

listIterator li;

cout"姓名"SPACE"电话"endl;

while((it=findRecord(patten,type,it))!=end()){

cout*it;

li.push_back(it);

it++;

}

cout"一共找到"li.size()"个对象。"endl;

cout"1"SPACE"返回"endl;

cout"2"SPACE"修改"endl;

cout"3"SPACE"删除"endl;

switch(menuSelect()){

case'1':break;

case'2':{

if(!li.size()){

cout"记录为0,无法修改。"endl;

break;

}

cout"要修改第几个?""1~"li.size()endl;

int i;

cini;

Record *prec=new Record;

cout"姓名:"'\n'"电话:"'\n';

cinprec;

listIterator::const_iterator it=li.begin();

while(i!=1){

it++;

i--;

}

editRecord(prec,*it);

}break;

case'3':{

if(!li.size()){

cout"记录为0,无法修改。"endl;

break;

}

cout"要删除第几个?""1~"li.size()endl;

int i;

cini;

listIterator::const_iterator it=li.begin();

while(i!=1){

it++;

i--;

}

removeRecord(*it);

}break;

}

}

void AddressBook::saveRecords(){

cout"1"SPACE"使用默认文件名。"endl;

cout"2"SPACE"使用自定义文件名。"endl;

cout"3"SPACE"返回"endl;

switch(menuSelect()){

case '1':{

ofstream file("default",ios::app);

AddressList::saveRecords(file);

file.close();

}break;

case '2':{

cout"请输入您定义的文件名:"endl;

string fname;

cinfname;

ofstream file(fname.c_str(),ios::app);

AddressList::saveRecords(file);

file.close();

}break;

case '3':break;

}

}

void AddressBook::loadRecords(){

cout"1"SPACE"使用默认文件。"endl;

cout"2"SPACE"使用自定义文件。"endl;

cout"3"SPACE"返回"endl;

switch(menuSelect()){

case '1':{

cout"1"SPACE"覆盖当前内容"endl;

cout"2"SPACE"追加到当前文件"endl;

switch(menuSelect()){

case '1':

AddressList::clear();break;

case '2':break;

}

ifstream file("default");

AddressList::loadRecords(file);

file.close();

}break;

case '2':{

cout"请输入文件名:"endl;

string fname;

cinfname;

ifstream file(fname.c_str());

AddressList::loadRecords(file);

file.close();

}break;

case '3':break;

}

}

void AddressBook::clear(){

cout"是否要清除内存中所有内容?(Y/N)"endl;

switch(menuSelect()){

case '1':AddressList::clear();break;

case '2':break;

}

}

void AddressBook::quit(){

cout"是否要保存文件?(Y/N)"endl;

switch(menuSelect()){

case'1':saveRecords();break;

case'2':break;

}

exit(0);

}

int main(int argc, char *argv[])

{

AddressBook a;

a.start();

system("PAUSE");

return EXIT_SUCCESS;

}

获取通讯录源码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于获取通讯录源码双端、获取通讯录源码的信息别忘了在本站进行查找喔。

1、本网站名称:源码村资源网
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » 获取通讯录源码(获取通讯录源码双端)

1 评论

您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论