文档库 最新最全的文档下载
当前位置:文档库 › 简单个人电话号码查询系统

简单个人电话号码查询系统

简单个人电话号码查询系统
简单个人电话号码查询系统

/**********************************************************/

/*人们在日常生活中经常需要查找某个人或某个单位的电话号码, */

/*本程序将实现一个简单的个人电话号码查询系统,根据用户输入*/

/*的信息(例如姓名等)进行快速查询。 */

/**********************************************************/

#include

#include

#include

using namespace std;

int x=0;

char a;

int j=1;

struct TeleNumber //电话号码类

{

char name[10]; //姓名

int phoneNumber; //固定电话号码

int mobileNumber; //移动电话号码

char email[10]; //电子邮箱

int s;

TeleNumber * Next; //下一指针

void ReadFile(istream & in); //读取数据文件

void input(); //数据输入函数

void display(); //数据显示函数

} ;

void TeleNumber::ReadFile(istream & in) //从文件把数据读入到程序{

in>>name>>phoneNumber>>mobileNumber>>email; //将文件信息读到相关变量里面}

void TeleNumber::input() //信息输入

{

cout<<"请输入姓名"<

cin>>name;

cout<<"请输入固定电话号码"<

cin>>phoneNumber;

cout<<"请输入移动电话号码"<

cin>>mobileNumber;

cout<<"请输入电子邮箱"<

cin>>email;

s=j++; //记录插入的人的信息的数量

}

void TeleNumber::display() //信息输出

{

cout<<"姓名:"<

<<"移动电话号码:"<

}

class TeleMessage //功能类

{

public:

TeleMessage(); //构造数据结构

~TeleMessage(); //释放单链表析构函数

void Save(); //数据保存到文件

TeleNumber * Search(char *); //信息查找

void Sort(); //排序

void Insert(); //插入

void Remove(); //删除

void Change(); //更改

void Show(); //显示

void Swap(TeleNumber *,TeleNumber *); //两个TeleNumber对象交换数据域private:

TeleNumber * End,* Head;

ifstream in; //定义读,写文件对象

ofstream out;

};

TeleMessage::TeleMessage() //构造函数初始化

{

Head=new TeleNumber; //头插法建立单链表

Head->Next=new TeleNumber;

End=Head->Next;

in.open("TeleNumber.text"); //打开外存文件,看是否有数据存在

if(!in)

cout<<"电话系统中没有任何号码,请输入号码"<

else

{

while(!in.eof()) //如果有,则打开,并将数据读取到程序

{

End->ReadFile(in);

if(End->name[0]=='\0')break; //如果名字为空

End->Next=new TeleNumber; //为下一个指针分配内存

End=End->Next; //指针下移

}

in.close(); //in对象关闭

cout<<"读取电话号码系统成功!"<

}

cout<<"输入任意字母继续"<

cin>>a;

TeleMessage::~TeleMessage() //析构函数释放单链表

{

TeleNumber * temp; //定义一个当前的指针

while(Head->Next!=End)

{

temp=Head->Next;

Head=Head->Next;

delete temp; //逐个释放内存空间}

delete Head,End; //删除头尾指针

}

void TeleMessage::Save() //保存文件

{

out.open("TeleNumber.txt"); //建立外存文件TeleNumber.txt for(TeleNumber *p=Head->Next;p!=End;p=p->Next)

out<name<<"\t"<phoneNumber<<"\t"<mobileNumber<<"\t"<email<

out.close();

cout<<"保存成功!"<

}

void TeleMessage::Swap(TeleNumber *p1,TeleNumber *p2) //两个类对象数据域进行交换{

TeleNumber * temp=new TeleNumber; //定义一个中转指针

strcpy(temp->name,p1->name); //将当前要交换指针中间的

一个的name值赋值给中间变量

strcpy(temp->email,p1->email);

temp->mobileNumber=p1->mobileNumber;

temp->phoneNumber=p1->phoneNumber;

temp->s=p1->s;

strcpy(p1->name,p2->name);

strcpy(p1->email,p2->email);

p1->mobileNumber=p2->mobileNumber;

p1->phoneNumber=p2->phoneNumber;

p1->s=p2->s;

strcpy(p2->name,temp->name);

strcpy(p2->email,temp->email);

p2->mobileNumber=temp->mobileNumber;

p2->phoneNumber=temp->phoneNumber;

p2->s=temp->s; //将p1,p2的各个成员变量

交换

}

void TeleMessage::Sort() //起泡排序

TeleNumber *p=NULL,*q=NULL;

int exchange=j-1; //要排序的电话号码的条数int bound; //

int i;

while(exchange)

{

bound=exchange;

exchange=0;

for(p=Head->Next,i=1;iNext)

if(p->mobileNumber>p->Next->mobileNumber)

{

Swap(p,p->Next); //调用交换函数

exchange=p->s;

}

}

Show();

}

void TeleMessage::Insert() //插入

{

End->input(); //从单链表尾部插入

End->Next=new TeleNumber;

End=End->Next;

cout<

}

void TeleMessage::Remove() //删除

{

char name[20];

TeleNumber * p=new TeleNumber,*temp=NULL;

cout<<"请输入要删除人的姓名:"<

cin>>name;

p->Next=Search(name); //先进行查找,找到所要删除的结点

if(Search(name))

{

temp=p->Next;

p->Next=p->Next->Next; //摘链

delete temp;

cout<<"\t\t删除成功!"<

}

else

{

cout<<"\t\t没有找到!"<

}

}

TeleNumber * TeleMessage::Search(char * name)

{

for(TeleNumber *p=Head->Next;p!=End;p=p->Next)

if(!strcmp(p->name,name))

{

if(x==4)

{

p->display();

return p;

}

else

return p;

}

if(x==4)

cout<<"查无此人"<

return 0;

}

void TeleMessage::Change() //修改信息

{

char name[20];

cout<<"请输入要修改的人的姓名:";

cin>>name;

if(Search(name))

{

cout<<"\t\t已找到个人的信息,请输入新的信息!"<

Search(name)->input();

cout<<"修改成功!"<

}

else

{

cout<<"\t\t没有找到!"<

}

}

void TeleMessage::Show()

{

for(TeleNumber * p=Head->Next;p!=End;p=p->Next)

p->display();

}

int main()

{

bool flag=true;

TeleMessage tele;

char name[20];

while(flag)

{

system("cls");

cout<<"简单个人电话号码查询系统"<

cout<<"1.增加信息"<

cout<<"2.显示信息"<

cout<<"3.排序个人电话号码"<

cout<<"4.查找号码"<

cout<<"5.删除信息"<

cout<<"6.修改信息"<

cout<<"7.保存信息"<

cout<<"0.退出系统"<

cout<<"请选择服务:";

cout<<"\n\t\t\n\t\t请选择:";

cin>>x;

switch(x)

{

case 0:flag=false;break;

case 1:tele.Insert();break;

case 2:tele.Show();break;

case 3:tele.Sort();break;

case 4:

cout<<"请输入欲查找认得姓名"<

cin>>name;

tele.Search(name);break;

case 5:tele.Remove();break;

case 6:tele.Change();break;

case 7:tele.Save();break;

}

cout<<"输入任意字母返回"<

cin>>a;

}

return 0;

}

相关文档