手机号码本管理及来电显示模拟系统.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:8 大小:53KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

手机号码本管理及来电显示模拟系统.doc

手机号码本管理及来电显示模拟系统.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<iostream>#include<string>#include<iomanip>#include<fstream>usingnamespacestd;classPhone{//定义基类friendclasslist;//说明友元类protected:stringnum;//电话号码stringname;Phone*next;//链接节点staticPhone*ptr;public:Phone(stringn="",stringna=""){num=n;name=na;next=0;}virtualvoidprint(){cout<<left<<setw(15)<<num<<setw(10)<<name<<'\n';}};classlist{//定义链表类Phone*root;public:list(){root=0;}intinsert_Phone();//可以完成一个或多个节点数据的输入,构成链表voidread_Phone();//从已存储的电话本的数据文件中读取数据,赋给链表voidwrite_Phone();//将操作后的数据写入文件voidprint_list();voiddele(string);voidquery();//提供两种查询方式,按电话号码、姓名voidcity(string);//手机所在地查询,只做了河北省};Phone*Phone::ptr=0;//静态数据初始化//以下是关于list的函数intlist::insert_Phone(){Phone*node=0;//定义指向基类的指针,是插入的新节点Phone*curr_node=root;//为查找插入位置,动态前移的节点,Phone*previous=0;//curr_node前趋节点stringnum,name;cout<<"请输入电话号码(输入0表示结束输入):";cin>>num;if(num=="0")return0;cout<<"请输入姓名:"<<endl;cin>>name;node->ptr=newPhone(num,name);//以下while保证每插入一个节点,都是按电话号码顺序插入的while(curr_node!=0&&curr_node->num<num){previous=curr_node;curr_node=curr_node->next;}node->ptr->next=curr_node;if(previous==0){root=node->ptr;curr_node=root;}else{previous->next=node->ptr;curr_node=root;}return1;}//voidlist::read_Phone()//从数据文件中读取图书数据,赋给数组A_book{Phone*node=0;//定义指向基类的指针,是插入的新节点Phone*curr_node=root;//curr_node,Phone*previous=0;//前趋节点ifstreaminData;//注意inData要定义为局部变量,这样不影响在其它函数中打开另一个数据文件inData.open("in_Phone.dat");if(inData.fail()){cout<<"filenoexist!"<<endl;return;}if(inData.get()==-1){cout<<"文件为空"<<endl;return;}//判断文件是否为空inData.seekg(0,ios::beg);//重新将读指针置于文件头stringnum,name;inData>>num>>name;while(!inData.eof())//读到文件结束处{node=newPhone(num,name);if(root==0)//插入第一个点{root=node;node->next=0;curr_node=root;inData>>num>>name;continue;}//以下while保证每插入一个节点,都是按电话号码顺序插入的while(curr_node->next!=0&&num>curr_node->num){previous=curr_node;curr_node=curr_node->n