获取通讯录源码双端教程(获取通讯录源码搭建)

本篇文章给大家谈谈获取通讯录源码双端教程,以及获取通讯录源码搭建对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎样开启手机通讯录权限

开启手机通讯录权限就是允许第三方获取通讯录信息,开启步骤如下:

1.先找到手机中的设置项。

2.往下拉找到权限管理并点击。

3.权限管理中有个读取联系人选项,点击。

4.第三方软件以QQ为例子使用,往下拉找到QQ。

5.这时会弹出三个选项:允许、提示、禁止,按照所需选择允许就可以了。

获取通讯录源码双端教程(获取通讯录源码搭建),获取通讯录源码双端教程,信息,文章,源码,第1张

轰炸通讯录怎么做到的?这是网贷最厉害的地方!

;     5G时代马上来临,互联网发展速度越来越快,以后有更多的业务可以在网上办理,比如贷款,现在就可以实现足不出户轻松借钱。不过有很多高利贷也逐渐向网上转移,不少用户都借了这些产品,逾期后被无情的轰炸通讯录,到底是怎么做到的呢?

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、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » 获取通讯录源码双端教程(获取通讯录源码搭建)
您需要 登录账户 后才能发表评论