急求C++通信录原代码

急求C++通信录原代码,第1张

你可以修改使用!

#include"iostreamh"

#include"stringh"//用于字符串的比较

//定义保存通讯录数据的数据类型

class Address

{

public:

Address()

{

name=new char[25];

tel_num=new char[15];

e_addr=new char[25];

}

Address(char n,char tel,char ar,char eadr);

~Address()

{

delete []name;

delete []tel_num;

delete []e_addr;

}

void Modify();//编辑数据

private:

char name,tel_num,arch,e_addr;

friend istream& operator>>(istream &in,Address &a);//重载输入运算符

friend ostream& operator<<(ostream &out,Address &a);//重载输出运算符

friend bool operator>(Address &a,Address &b);//重载">"号

friend bool operator==(Address &a,Address &b);//重载等于号

friend class AddrBook;

};

Address::Address(char n,char tel,char ar,char eadr)

{

name=new char[25];

tel_num=new char[15];

e_addr=new char[25];

strcpy(name,n);

strcpy(tel_num,tel);

arch=ar;

strcpy(e_addr,eadr);

}

void Address::Modify()

{

char str=new char[25],a;

cout<<"请逐项输入新数据<不修改的数据请输入一个\"#\">:\n";

cout<<"……姓名:";

cin>>str;

if(strcmp(str,"#")!=0)

strcpy(name,str);

cout<<"…手机号:";

cin>>str;

if(strcmp(str,"#")!=0)

strcpy(tel_num,str);

cout<<"……归类:";

cin>>a;

if(a!='#')

arch=a;

cout<<"…E_mail:";

cin>>str;

if(strcmp(str,"#")!=0)

strcpy(e_addr,str);

}

istream& operator>>(istream &in,Address &a)

{

cout<<"……姓名:";

in>>aname;

cout<<"…手机号:";

in>>atel_num;

cout<<"……归类\n<A:办公类 B:个人类 C:商务类>:";

in>>aarch;//输入其它字符当作商务类处理

cout<<"…E_mail:";

in>>ae_addr;

return in;

}

ostream& operator<<(ostream &out,Address &a)

{

cout<<"……姓名: "<<aname<<endl;

cout<<"…手机号: "<<atel_num<<endl;

cout<<"……归类: ";

if(aarch=='A')cout<<"办公类";

else if(aarch=='B')cout<<"个人类";

else cout<<"商务类";

cout<<endl;

cout<<"…E_mail: "<<ae_addr<<endl;

return out;

}

bool operator>(Address &a,Address &b)

{

return strcmp(aname,bname)>0;

}

bool operator==(Address &a,Address &b)

{

return strcmp(aname,bname)==0;

}

//定义通讯录链表的节点

//由于数据需要反复的插入,删除以及调整顺序,所以用链表存放

class Terms

{

public:

Terms(){link=0;}

Terms(char n,char tel,char ar,char eadr);

Terms(char n,char tel,char ar,char eadr,Terms nxt);

Terms InsertAfter(char n,char tel,char ar,char eadr);//完成在后边插入

private:

Address term;//保存数据

Terms link;//指向下一节点

friend class AddrBook;

};

Terms::Terms(char n,char tel,char ar,char eadr):term(n,tel,ar,eadr)

{

link=NULL;

}

Terms::Terms(char n,char tel,char ar,char eadr,Terms nxt):term(n,tel,ar,eadr)

{

link=nxt;

}

Terms Terms::InsertAfter(char n,char tel,char ar,char eadr)

{

link=new Terms(n,tel,ar,eadr,link);//循环链表

return link;

}

//定义通讯录类——用三个代表头节点的循环链表分别存放三类数据

class AddrBook

{

public:

AddrBook();

bool Delete();//删除指定名字的通讯录

bool Edit();//编辑指定名字的通讯录

bool Dial();//拨指定名字的人的电话

private:

Terms ab[3];

Terms Search(char nam);//在通讯录里查找指定名字的通讯录,返回指向该数据的指针的地址

bool Insert(istream& in);//插入数据

void Output(ostream& out)const;//输出指定的一类数据

bool Delete(char nam);

bool Edit(char nam);

bool Dial(char nam);

friend ostream& operator<<(ostream& out,const AddrBook& r);//重载输出

friend istream& operator>>(istream& in,AddrBook& r);//重载输入

};

AddrBook::AddrBook()

{

for(int i=0;i<3;i++){

ab[i]=new Terms("\0","\0",NULL,"\0");//初始化表头节点

ab[i]->link=ab[i];//循环链表

}

}

bool AddrBook::Delete()

{

char nam=new char[25];

cout<<"请输入要删除的通讯录的姓名:";

cin>>nam;//指定名字

return Delete(nam);

}

bool AddrBook::Edit()

{

char nam=new char[25];

cout<<"请输入要编辑的通讯录的姓名:";

cin>>nam;//指定名字

return Edit(nam);

}

bool AddrBook::Dial()

{

char nam=new char[25];

cout<<"请输入要拨号码所属人的姓名:";

cin>>nam;//指定名字

return Dial(nam);

}

Terms AddrBook::Search(char nam)

{

Terms p,q;

for(int i=0;i<3;i++){//逐类查找

q=ab[i];

for(p=q->link;p!=ab[i];p=p->link){

if(!strcmp(p->termname,nam))//比较名字

return &q->link;//相同时返回地址

q=p;//用q保存前一个指针

}

}

return &ab[i];//搜索失败时返回表头节点

}

//本搜索函数在不同类里便有相同名字的数据时只找出第一个数据,是一个缺陷

bool AddrBook::Insert(istream& in)

{

Terms q,p;

Address temp;

int i;

cout<<"输入一个通讯录数据:\n";

in>>temp;//调用运算符的重载输入要插入的数据

if(temparch=='A')i=0;

else if(temparch=='B')i=1;

else i=2;//定类

p=ab[i];

for(q=p->link;q!=ab[i]&&temp>q->term;q=q->link)p=q;//指针定位,保证按顺序插入

if(q->term==temp){

cout<<"地址已存在!\n";

return false;

}//本类里已经有同名字的人时,插入失败

else//在适当位置插入数据到链表

p->InsertAfter(tempname,temptel_num,temparch,tempe_addr);

return true;

}

//本函数在不同类里有相同名字的数据时仍然可以插入,造成了搜索时的缺陷

void AddrBook::Output(ostream& out)const

{

char c;int i,n=0;

cout<<"请选择输出数据的类型<A:办公类 B:个人类 C:商务类>:";

cin>>c;

if(c=='A')i=0;

else if(c=='B')i=1;

else i=2;

if(ab[i]->link==ab[i])cout<<"此类为空!\n";//为空时提示

else

for(Terms p=ab[i]->link;p!=ab[i];p=p->link){//逐个输出

cout<<"……编号: "<<++n<<endl;//输出编号

cout<<p->term<<endl;//调用重载的运算符输出

}

}

bool AddrBook::Delete(char nam)

{

Terms q,p=Search(nam);

if(!(p)->termarch){

cout<<"所找地址不存在!\n";

return false;

}//指定的名字不存在时删除失败

q=p;

p=(p)->link;//处理链表中原来指向该节点的指针

delete q;//删除

cout<<"删除成功!\n";

return true;

}

//由于搜索时的缺陷,函数也只能删除找到的第一个指定名字的数据

bool AddrBook::Edit(char nam)

{

Terms p=Search(nam);

if(!(p)->termarch){

cout<<"所找地址不存在!\n";

return false;

}//指定的名字不存在时编辑失败

char str=new char[25],ch;

strcpy(str,(p)->termname);

ch=(p)->termarch;//保存原来通讯录中的名字和类别

(p)->termModify();//编辑数据

if(strcmp(str,(p)->termname)||(p)->termarch!=ch){//名字或类别有变时调整链表

Terms q=p,q1,p1;

int i;

p=(p)->link;//调整原来指向该节点的指针

if(q->termarch=='A')i=0;

else if(q->termarch=='B')i=1;

else i=2;//区分新的类别

p1=ab[i];

for(q1=p1->link;q1!=ab[i]&&q->term>q1->term;q1=q1->link)p1=q1;//指针定位

if(q1->term==q->term){

cout<<"地址已存在!\n";

return false;

}//该类相同数据已存在时插入失败

else

p1->InsertAfter(q->termname,q->termtel_num,q->termarch,q->terme_addr);

delete q;

}

return true;

}

//本函数还有两个缺陷:1,在编辑失败时,原数据被删除

//2,由于搜索时的缺陷,函数也只能找到并编辑第一个指定名字的数据

bool AddrBook::Dial(char nam)

{

Terms p=Search(nam);

if((p)->termarch){

char c;int i=0;

c=(p)->termtel_num[i];

do{

for(unsigned long int j=0;j<19999999;j++);

cout<<c;

c=(p)->termtel_num[++i];

}while(c!='\0'&&i<15);

cout<<"……拨号中>>"<<endl;

return true;

}//找到时拨号

cout<<"地址不存在!\n";

return false;//指定的名字不存在时拨号失败

}

ostream& operator<<(ostream& out,const AddrBook& r)

{

rOutput(out);

return out;

}

istream& operator>>(istream& in,AddrBook& r)

{

rInsert(in);

return in;

}

//补足现在函数的缺陷会很大程度的加大函数的复杂性,所以暂时不加以改正

void main()

{

AddrBook adrbk;

int i;

cout<<"-----------------通讯录管理系统-----------------\n";

cout<<"功能菜单:\n";

cout<<"添加通讯录……………………1\n";

cout<<"删除通讯录……………………2\n";

cout<<"编辑通讯录……………………3\n";

cout<<"查看通讯录……………………4\n";

cout<<"拨号……………………………5\n";

cout<<"退出……………………………6\n";

cout<<endl;

for(;;){

cout<<"请选择功能:";

cin>>i;

switch(i){

case 1:cin>>adrbk;break;

case 2:adrbkDelete();break;

case 3:adrbkEdit();break;

case 4:cout<<adrbk;break;

case 5:adrbkDial();break;

case 6:

cout<<"--------------------谢谢使用--------------------\n";

default:return;

}

cout<<endl;

}

}

《世界妖怪事典》由日本作家水木茂编著,日文版由东京堂出版,中文版由星光出版社、晨星出版社出版。该书收录了诸如“矮妖精拉不列康”、“水怪伏贾诺”、“蝶化身”等希腊神话、斯拉夫神话及日本民间传说等故事。

基本介绍 中文名 :世界妖怪事典 作者 :水木しげる 地区 :日本 出版 :东京堂 书籍目录,作者简介, 书籍目录 矮妖精拉不列康(Leprechaun)爱尔兰岛 半人马肯塔洛斯(Centaur、Kentauros)希腊神话 水怪伏贾诺(Vodianoi)斯拉夫神话 蝶化身(ちょうけしん)日本民间传说 蛇发女妖(Gorgon)希腊神话 海妖赛莲(Siren)希腊神话 食童女妖拉米亚(Lamia)希腊神话 海神格劳克斯(Glaucus)希腊神话 狮鹫葛利芬(Griffon、Griffin)希腊神话 圣艾摩之火(feu Saint-Elme)希腊神话 眼魔畸罗(Gilo)希腊神话 麝香豹偏索(Panther)欧洲民间传说 矮人(Dwarf)北欧‧日耳曼神话 女巫(Witch)欧洲民间传说 怨灵 拉尔瓦(Larva)欧洲民间传说 狼男 欧洲民间传说 冥蛾(Moth)欧洲民间传说 赫尔辛基(Harlethingi)欧洲民间传说 骚扰灵 波尔特‧贾斯特(Poltergeist)德国民间传说 暴风雨的妖精德国民间传说 食尸鬼咕噜(Ghoul)欧洲民间传说 梦*妖(Incubus)欧洲民间传说 守护灵柯宝(Kobold)德国民间传说 死池中的水精 德国民间传说 德国的怪龙 德国民间传说 土精普兹 澳洲民间传说 起司小矮人 凯斯曼特尔 澳洲民间传说 齿痛殿下 日本民间传说 蛇女美瑠姬奴(Melusine)法国民间传说 绿毛恶兽 法国民间传说 守护宝藏的妖精 斯普利坎(Spriggan)欧洲民间传说 丑妖精哥布林(Goblin)英国民间传说 橡树妖怪英国民间传说 坏心小矮人 德鲁加(Duerger)英国民间传说 棕色小妖精 亚雷利‧布朗(Yallery Brown)英国民间传说 苏格兰 精灵艾萨松(Ellyllon)英国民间传说 妖怪锡卜(Seeb)英国民间传说 妖怪波吉(Bogey)英国民间传说 地精穿着蓝短裤的老人 英国民间传说 爱捉弄人的恶魔 英国民间传说 蚂蚁妖精慕里安(Muryans)英国民间传说 骷髅 汤米(Tommy)英国民间传说 水车妖怪 布罗拉罕(Brollachan)英国民间传说 人面羊身怪 乌利休克(Urisks)英国民间传说 磨坊精灵 基尔慕里斯(Killmoulis)英国民间传说 妖怪法罕(Fachan)英国民间传说 报丧女妖(Bean-nighe)苏格兰传说 妖精(Fairy)英国民间传说 女妖精拉娜希(Leanan Sidhe) 爱尔兰妖精 艾珍英国民间传说 人鱼梅洛(Merrow)爱尔兰 水怪巴斯哈(Pastha)爱尔兰 飞龙库耶列布希(Cuelebre)西班牙 幽灵船欧洲民间传说 水男俄罗斯民间传说 俄罗斯的恶魔俄罗斯民间传说 地中老妖 乌克兰传说 毛怪守护灵(Domovoi)俄罗斯民间传说 森林精灵雷西(Lechies)俄罗斯民间传说 原野之灵波列维克(Polevik)俄罗斯民间传说 吸血病魔乌斯托尔(Ustrel)保加利亚民间传说 狼人(Werwolf)波兰民间传说 吸血鬼德古拉(Dracula) 罗马尼亚民间传说 魔火佛比 南斯拉夫民间传说 水魔 匈牙利民间传说 人鱼赛伦(Siren) 北欧、日耳曼神话 夜叉玛拉北欧民间传说 矮黑人北欧民间传说 食人烟魔卡尔曼 芬兰民间传说 水精涅奇(N&auml;kki)芬兰民间传说 僧鱼 挪威民间传说 巨人族(Giant)北欧神话 食人魔神 兹乌 阿拉伯民间传说 食人巨妖 伊姆拉克 阿拉伯民间传说 小矮人 克鲁皮(Curupira)拉丁美洲民间传说 鸟人 巴西民间传说;中国民间传说 非洲妖精 非洲民间传说 恶臭妖怪 蛾摩拉(Gommorah)非洲民间传说 恶灵 布多 (Bhut)印度民间传说 水牛魔印度民间传说 亡灵之王贝塔拉 印度民间传说 石女 印度民间传说 百头 印度民间传说 妖精王 马来西亚民间传说 山精萨那雷 印尼民间传说 变成兰花的女人 越南民间传说 山精与海精 越南民间传说 水稻精 越南民间传说 红河之龙 越南民间传说 龙马 朝鲜民间传说 作者简介 水木しげる,原名武良茂,一九二二年生于日本鸟取县境港市,武藏野美术学校肄业,战后从事多种职业,同时进行连环漫画的创作。之后,又进入漫画的创作世界。他是日本鬼怪漫画先驱,也是妖怪研究专家,现任民族艺术学会评议委员、世界妖怪协会会长。老少咸宜的鬼太郎系列卡通,将他的事业带到了巅峰。他希望有生之年能蒐集到一千只妖怪,因此仍持续不懈探索世界各地的妖怪,听说目前这个目标已经达成了。 代表作品: 《咯咯咯鬼太郎》讲谈社 《河童三平》 国小馆 水木茂短篇集三部曲:《筑摩书房》、《东西妖怪图绘》 读卖新闻社 《 妖怪事典(正)》 东京堂出版 《妖怪事典(续)》 东京堂出版 《中国妖怪事典》 东京堂出版 《世界妖怪事典(正)》 东京堂出版 《世界妖怪事典(续)》 东京堂出版 《黄泉事典》 东京堂出版

这个确实是用c写的,SqList是封装的一个数据结构,这个函数就是对这个数据结构进行的操作。

你只需要明白SqList这个封装的数据结构(一般是一个结构体),然后就会知道这个函数是怎么操作的啦。

1、打开visualC++60-文件-新建-文件-C++SourceFile。

2、输入预处理命令和主函数:

#include<stdioh>           /输入输出头文件/

voidmain()/空类型:主函数/

3、定义变量和数组的数据类型并输入一个十进制:

intb[16],x,k,r,i;/定义变量和数组的数据类型为整型/

printf("输入一个十进制:");/输出文字提示/

  scanf("%d",&x);         /输入一个十进制数字/

k=-1;/将-1赋给k/

4、用除R取余倒计法将十进制的数转化成二进制的数:

do/用循环将十进制的数转化成二进制的数/

{

r=x%2;/用除R取余倒计法计算二进制/

b[++k]=r;/将值赋给数组/

x/=2;/将原数除2/

  }while(x>=1);

5、输出结果:

  for(i=k;i>=0;i--)        /将上面倒计的数正回来/

printf("%d",b[i]);/输出结果/

printf("\n");

6、完整的源代码:

#include<stdioh>           /输入输出头文件/

voidmain()/空类型:主函数/

{

intb[16],x,k,r,i;/定义变量和数组的数据类型为整型/

printf("输入一个十进制:");/输出文字提示/

  scanf("%d",&x);         /输入一个十进制数字/

k=-1;/将-1赋给k/

do/用循环将十进制的数转化成二进制的数/

{

r=x%2;/用除R取余倒计法计算二进制/

b[++k]=r;/将值赋给数组/

x/=2;/将原数除2/

  }while(x>=1);

  for(i=k;i>=0;i--)        /将上面倒计的数正回来/

printf("%d",b[i]);/输出结果/

printf("\n");

}

三个方案供你选择:

1,采用型号为 A2TPMI的传感器(德国PerkinElme产品),内置TPS334L55热点堆传感器及相关电路并继承了硅透镜,i2C接口,视窗角度5度,TO39封装,但价格昂贵。淘宝有类似产品出售型号是A2TPMI334-L550AA120。

2,采用TPS334L55热点堆传感器(德国PerkinElme产品),搭配一个运放和一个基准电压源及少数相关阻容元件。传感器内置硅透镜和热敏电阻,透镜角度5度,TO39封装。这个方案比较灵活,增益大小可以自主,价格相对较低一些。

3,采用TPS334不带透镜的传感器(德国PerkinElme产品),这个方案成本最低,但要自己配置菲涅尔透镜才能聚焦,符合你使用的现成透镜可能找不到,而且还涉及透镜的固定架问题。

以上方案供选择。

以上就是关于急求C++通信录原代码全部的内容,包括:急求C++通信录原代码、世界妖怪事典详细资料大全、数据结构算法是什么语言写的,是c语言吗,看不懂啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:聚客百科

原文地址: http://juke.outofmemory.cn/life/3817575.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存