因为复制会有格式错误,所以word文本版请下载

百度云链接:https://pan.baidu.com/s/1v4h158ybyIHCOIe5_k8vOA 密码:crve

源代码:#include

#include

#include

#include

#include

using namespace std;

bool vis; //移动复制是否有重复数据的标志

/*****************************界面菜单类*****************************************/

class menu

{

public:

void mainmenu(); //主菜单

void intmenu(); //介绍菜单

void addmenu(); //添加菜单

void delmenu(); //删除菜单

void modmenu(); //修改菜单

void inqmenu(); //查询菜单

void dismenu(); //显示菜单

void mocomenu(); //移动复制菜单

void sortmenu(); //排序菜单

void filemenu(); //文件操作菜单

};

void menu::mainmenu()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}

void menu::addmenu()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}

void menu::delmenu()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}

void menu::modmenu()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}

void menu::inqmenu()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}

void menu::dismenu()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}

void menu::mocomenu()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}

void menu::sortmenu()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}

void menu::filemenu()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

}

menu m; //创建全局菜单对象,便于调用

/***************************手机联系人类*****************************************/

class Phone_contact

{

protected:

string name,tel;

public:

Phone_contact(string i="无姓名",string j="无电话号码")//构造函数

{

name=i;tel=j;

}

//Phone_contact(){}

int set(string i,string j);//成员赋值函数

int modify();//修改成员函数

friend ostream&operator <

friend istream&operator >>(istream&in, Phone_contact&p); //重载>>

string getname(); //获得姓名

string gettel(); //获得电话号码

};

int Phone_contact::set(string i,string j)

{

name=i;tel=j;

return 0;

}

istream&operator >>(istream&in,Phone_contact&p)

{

cout<>p.name;

cout<>p.tel;

return in;

}

ostream&operator <

{

out<

out<

return out;

}

string Phone_contact::getname()

{

return name;

}

string Phone_contact::gettel()

{

return tel;

}

int Phone_contact::modify()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

char choice;

while(cin>>choice)

{

switch(choice)

{

case '1':

{

string ss;

cout<

cin>>ss;

name=ss;

cout<

break;

}

case '2':

{

string ss;

cout<

cin>>ss;

tel=ss;

cout<

break;

}

case '3':

{

string ss;

cout<

cin>>ss;

name=ss;

cout<

cin>>ss;

tel=ss;

cout<

break;

}

case '4':{cout<

default:

cout<

}

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

if(choice=='4') break;

}

return 0;

}

/***************************手机卡联系人类*****************************************/

class SIM_contact:public Phone_contact //手机卡联系人类

{

string origo,qq;

public:

SIM_contact(string i="无姓名",string j="无电话号码",string a="无籍贯",string b="无qq"):Phone_contact(i,j) //构造函数

{

Phone_contact::set(i,j);origo=a;qq=b;

}

int set(string i,string j,string a,string b);//成员赋值函数

int modify();//修改成员函数

friend ostream&operator <

friend istream&operator >>(istream&in, SIM_contact&s); //重载>>

string getorigo();

string getqq();

};

int SIM_contact::set(string i,string j,string a,string b)

{

Phone_contact::set(i,j);origo=a;qq=b;

return 0;

}

int SIM_contact::modify()

{

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

char choice;

while(cin>>choice)

{

switch(choice)

{

case '1':

{

string ss;

cout<

cin>>ss;

name=ss;

cout<

break;

}

case '2':

{

string ss;

cout<

cin>>ss;

tel=ss;

cout<

break;

}

case '3':

{

string ss;

cout<

cin>>ss;

origo=ss;

cout<

break;

}

case '4':

{

string ss;

cout<

cin>>ss;

qq=ss;

cout<

break;

}

case '5':

{

string ss;

cout<

cin>>ss;

name=ss;

cout<

cin>>ss;

tel=ss;

cout<

cin>>ss;

origo=ss;

cout<

cin>>ss;

qq=ss;

cout<

break;

}

case '6':{cout<

default:

cout<

}

cout<

cout<

cout.width(25);

cout.setf(ios::left);

cout<

cout<

cout.width(25);

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

if(choice=='6') break;

}

return 0;

}

istream&operator >>(istream&in,SIM_contact&s)

{

string pname,ptel;

cout<>pname;

cout<>ptel;

s.Phone_contact::set(pname,ptel);

cout<>s.origo;

cout<>s.qq;

return in;

}

ostream&operator <

{

out<

out.width(25);

out.setf(ios::left);

out<

out<

out.width(25);

out<

return out;

}

string SIM_contact::getorigo()

{

return origo;

}

string SIM_contact::getqq()

{

return qq;

}

/***************************通讯簿抽象类*****************************************/

class Book

{

public:

virtual int add()=0; //增加函数:增加一个联系人

virtual int del(string Tel)=0; //删除操作:删除一个联系人

virtual int display()=0; //Display:显示所有联系人的信息

virtual int modify(string Tel)=0; //修改某一联系人的信息:

virtual int inquire(string Name)=0; //查询并显示某一联系人的信息

virtual int read()=0; //读文件

virtual int write()=0; //读文件

virtual int save()=0; //保存文件

//virtual ~Book();

};

/***************************手机通讯簿类*****************************************/

bool cmp1( Phone_contact a, Phone_contact b) //按姓名升序排列函数

{

return a.getname()< b.getname();

}

class Phone_book:public Book

{

int sum; //手机联系人的数量,

vector p; //vector实现手机联系人动态数组

public:

Phone_book();

~Phone_book();

int add(); //增加函数:增加一个联系人

int del(string Tel); //删除操作:删除一个联系人

int display(); //Display:显示所有联系人的信息

int modify(string Tel); //修改某一联系人的信息:

int inquire(string Name); //查询并显示某一联系人的信息

int getsum(); //获取已有联系人数量

int moco(string sname,string stel); //移动复制操作

string getname(int i); //获取手机第i个姓名p[i].name

string gettel(int i); //获取手机卡第i个电话号码s[i].tel

int read(); //读取手机通讯录文件

int write(); //读取手机通讯录文件

int save(); //保存工作

int search(int low, int high, string x); //二分查找

int clear() ; //清空

};

Phone_book::Phone_book()

{

sum=-1; //vector从0开始

char s[100];

char pname[30],ptel[30];

Phone_contact t; //创建手机联系人临时对象

//ofstream out("d://Phone book.txt",ios::out);

ifstream in("d://Phone book.txt",ios::in); //读的方式打开文件,读取文本文件中的数据

if(!in)

{

cerr<

return ;

}

in.getline(s,100);

in.getline(s,100);

in.getline(s,100);

in.getline(s,100); //省略标题行

while(in>>pname>>ptel&&pname!="无姓名")

{

t.set(pname,ptel);

p.push_back(t);

sum++;

}

in.close();

}

Phone_book::~Phone_book()

{

ofstream out("d://Phone book.txt",ios::out); //写的方式打开文件

if(!out)

{

cerr<

return ;

}

out<

out<

out<

out<

for(int i=0;i<=sum;i++) //注意这里是小于等于

{

out<

}

out.close();

}

int Phone_book::read()

{

char s[100];

char pname[30],ptel[30];

ifstream in("d://Phone book.txt",ios::in); //读的方式打开文件,读取文本文件中的数据

if(!in)

{

cerr<

return 0;

}

in.getline(s,100);

in.getline(s,100);

in.getline(s,100);

in.getline(s,100); //省略标题行

cout.width(20);

cout.setf(ios::left);

cout<

cout<

while(in>>pname>>ptel&&pname!="无姓名")

{

cout.width(20);

cout<

}

}

int Phone_book::write()

{

Phone_contact t;

ofstream out("d://Phone book.txt",ios::app); //写的方式打开文件

if(!out)

{

cerr<

return 1;

}

cin>>t;

out<

p.push_back(t);

sum++;

out.close();

}

int Phone_book::save()

{

ofstream out("d://Phone book.txt",ios::out); //写的方式打开文件

if(!out)

{

cerr<

return 0 ;

}

out<

out<

out<

out<

for(int i=0;i<=sum;i++) //注意这里是小于等于

{

out<

}

out.close();

}

int Phone_book::add()

{

if(sum>999){cout<

Phone_contact t;

cin>>t;

cout<

cout<

string s;

cin>>s;

if(s[0]=='Y')

{

p.push_back(t);

sum++;

cout<

}

else if(s[0]=='N') cout<

else cout<

}

int Phone_book::del(string Tel)

{

if(sum<0) {cout<

bool flag=0;

while(1)

{

for(int i=0;i<=sum;i++) //注意这里是<=,sum从-1开始

{

if(p[i].gettel()==Tel)

{

flag=1;

cout<

cout<

cout<

string s;

cin>>s;

if(s[0]=='Y')

{

p.erase(p.begin()+i);

sum--;

cout<

cout<

cin>>s;

if(s[0]=='Y'){cout<

else if(s[0]=='N') break;

}

else

{

cout<

cin>>s;

if(s[0]=='Y'){cout<

else if(s[0]=='N') {break;}

}

}

cout<

}

if(flag==0) //容错性

{

cout<

string s;

cin>>s;

if(s[0]=='N')

break;

else if(s[0]=='Y')

{cout<>Tel;continue;}

else

{cout<

}

else break;

}

}

int Phone_book::modify(string Tel)

{

if(sum<0) {cout<

bool flag=0;

while(1)

{

for(int i=0;i<=sum;i++) //注意这里是<=,sum从-1开始

{

if(p[i].gettel()==Tel)

{

flag=1;

cout<

cout<

cout<

cout<

string ss;

cin>>ss;

if(ss[0]=='Y')

{

p[i].modify();

cout<

cout<

cout<

string sss;

cin>>sss;

if(sss[0]=='Y') {p[i].modify();}

cout<

cout<

cin>>ss;

if(ss[0]=='Y'){cout<

else if(ss[0]=='N') break;

}

else

{

cout<

cout<

cin>>ss;

if(ss[0]=='Y'){cout<

else if(ss[0]=='N') {break;}

}

}

cout<

}

if(flag==0) //容错性

{

cout<

cout<

string ss;

cin>>ss;

if(ss[0]=='N')

break;

else if(ss[0]=='Y')

{cout<>Tel;continue;}

else

{cout<

}

else break;

}

}

int Phone_book::inquire(string Name)

{

if(sum<0) {cout<

sort(p.begin(),p.end(),cmp1);//按姓名升序排列

while(1)

{

cout<

int i=search(0,sum,Name); //二分查找

if(i==-1) //容错性

{

cout<

cout<

cout<

string ss;

cin>>ss;

if(ss[0]=='N')

break;

else if(ss[0]=='Y')

{cout<>Name;continue;}

else

{cout<

}

else

{

int j=i-1;

for(;i

{

if(p[i].getname()==Name)

cout<

}

for(;j>=0;j--)

{

if(p[j].getname()==Name)

cout<

}

cout<

}

}

}

int Phone_book::display()

{

if(sum<0) {cout<

cout<

m.sortmenu();

char ch;

cin>>ch;

sort(p.begin(),p.end(),cmp1);//按姓名升序排列 ,一次就够,省时间

cout<

cout<

cout<

switch(ch)

{

case '2':

{

for(int i=0;i<=sum;i++)

cout<

break;

}

case '1':

{

for(int i=sum;i>=0;i--)

cout<

break;

}

case '3':break;

default:

cout<

}

}

int Phone_book::getsum()

{

return sum;

}

string Phone_book::getname(int i)

{

return p[i].getname();

}

string Phone_book::gettel(int i)

{

return p[i].gettel();

}

int Phone_book::moco(string sname,string stel)

{

for(int i=0;i<=sum;i++)

{

if(sname==p[i].getname()&&stel==p[i].gettel())

{

return 0;

}

}

Phone_contact t;

t.set(sname,stel);

p.push_back(t); //添加

sum++;

return 0;

}

int Phone_book::search(int low, int high, string x)

{

if(x==" ")

return -1;

while(low<=high)

{

int mid=low+(high-low)/2;

int t=mid;

while(p[t].getname()==" "&&t<=high)

t++;

if(t>high)

{

high=mid-1;

}

else

{

if(p[t].getname()==x)

return t;

else if(p[t].getname()>x)

high=mid-1;

else

low=t+1;

}

}

return -1;

}

int Phone_book::clear()

{

p.clear();

sum=-1;

}

/***************************手机卡通讯簿类*****************************************/

class SIM_book:public Book //手机卡通讯簿录基于手机通讯簿录 ,实现基本相同

{

int sum; //手机联系人的数量

vectors; //vector实现手机卡联系人动态数组

public:

SIM_book();

~SIM_book();

int add(); //增加函数:增加一个联系人

int del(string Tel); //删除操作:删除一个联系人

int display(); //Display:显示所有联系人的信息

int modify(string Tel); //修改某一联系人的信息:

int inquire(string Name); //查询并显示某一联系人的信息

int moco(string pname,string ptel); //复制移动函数

int getsum(); //获取已有联系人数量

string getname(int i); //获取手机卡第i个姓名s[i].name

string gettel(int i); //获取手机卡第i个电话号码s[i].tel

string getorigo(int i); //获取手机卡第i个籍贯s[i].origo

string getqq(int i); //获取手机卡第i个QQs[i].qq

int read(); //读取手机卡通讯录文件

int write(); //写入手机卡通讯录文件

int save(); //保存文件

int search(int low, int high, string x); //二分搜索

int clear(); //清空工作

};

SIM_book::SIM_book()

{

sum=-1;

char ss[100];

char sname[30],stel[30],sorigo[30],sqq[30];

SIM_contact t; //创建手机联系人临时对象

//ofstream out("d://SIM book.txt",ios::out);

ifstream in("d://SIM book.txt",ios::in); //读的方式打开文件,读取文本文件中的数据

if(!in)

{

cerr<

return ;

}

in.getline(ss,100);

in.getline(ss,100);

in.getline(ss,100);

in.getline(ss,100); //省略标题行

while(in>>sname>>stel>>sorigo>>sqq&&sname!="无姓名")

{

t.set(sname,stel,sorigo,sqq);

s.push_back(t);

sum++;

}

in.close();

}

SIM_book::~SIM_book()

{

SIM_contact t;

if(sum>999) {cout<

ofstream out("d://SIM book.txt",ios::out); //写的方式打开文件

if(!out)

{

cerr<

return ;

}

out<

out<

out<

out.setf(ios::left);

out.width(20);

out<

out.width(20);

out<

out.width(20);

out<

out<

for(int i=0;i<=sum;i++)

{

out.setf(ios::left);

out.width(20);

out<

out.width(20);

out<

out.width(20);

out<

out<

}

out.close();

}

int SIM_book::read()

{

char ss[100];

char sname[30],stel[30],sorigo[30],sqq[30];

ifstream in("d://SIM book.txt",ios::in); //读的方式打开文件,读取文本文件中的数据

if(!in)

{

cerr<

return 0;

}

in.getline(ss,100);

in.getline(ss,100);

in.getline(ss,100);

in.getline(ss,100); //省略标题行

cout.width(20);

cout.setf(ios::left);

cout<

cout.width(20);

cout<

cout.width(20);

cout<

cout.width(20);

cout<

while(in>>sname>>stel>>sorigo>>sqq&&sname!="无姓名")

{

cout.setf(ios::left);

cout.width(20);

cout<

cout.width(20);

cout<

cout.width(20);

cout<

cout.width(20);

cout<

}

in.close();

}

int SIM_book::write()

{

SIM_contact t;

ofstream out("d://SIM book.txt",ios::app); //写的方式打开文件

if(!out)

{

cerr<

return 1;

}

cin>>t;

out.setf(ios::left);

out.width(20);

out<

out.width(20);

out<

out.width(20);

out<

out.width(20);

out<

s.push_back(t);

sum++;

out.close();

}

int SIM_book::add()

{

if(sum>999){cout<

SIM_contact t;

cin>>t;

cout<

cout<

string ss;

cin>>ss;

if(ss[0]=='Y')

{

s.push_back(t);

sum++;

cout<

}

else if(ss[0]=='N') cout<

else cout<

}

int SIM_book::del(string Tel)

{

if(sum<0) {cout<

bool flag=0;

while(1)

{

for(int i=0;i<=sum;i++)

{

if(s[i].gettel()==Tel)

{ flag=1;

cout<

cout<

cout<

string ss;

cin>>ss;

if(ss[0]=='Y')

{

s.erase(s.begin()+i);

sum--;

cout<

cout<

cin>>ss;

if(ss[0]=='N') break;

if(ss[0]=='Y'){cout<

}

else

{

cout<

cin>>ss;

if(ss[0]=='Y'){cout<

else if(ss[0]=='N') break;

}

}

cout<

}

if(flag==0)

{

cout<

string ss;

cin>>ss;

if(ss[0]=='N')

break;

else if(ss[0]=='Y')

{cout<>Tel;continue;}

else

{cout<

}

else break;

}

}

int SIM_book::modify(string Tel)

{

if(sum<0) {cout<

bool flag=0;

while(1)

{

for(int i=0;i<=sum;i++) //注意这里是<=,sum从-1开始

{

if(s[i].gettel()==Tel)

{

flag=1;

cout<

cout<

cout<

cout<

string ss;

cin>>ss;

if(ss[0]=='Y')

{

s[i].modify();

cout<

cout<

cout<

string sss;

cin>>sss;

if(sss[0]=='Y') {s[i].modify();}

cout<

cout<

cin>>ss;

if(ss[0]=='Y'){cout<

else if(ss[0]=='N') break;

}

else

{

cout<

cout<

cin>>ss;

if(ss[0]=='Y'){cout<

else if(ss[0]=='N') {break;}

}

}

}

if(flag==0) //容错性

{

cout<

cout<

string ss;

cin>>ss;

if(ss[0]=='N')

break;

else if(ss[0]=='Y')

{cout<>Tel;continue;}

else

{cout<

}

else break;

}

}

int SIM_book::inquire(string Name)

{

if(sum<0) {cout<

int l=0,r=sum;

while(1)

{

sort(s.begin(),s.end(),cmp1);//按姓名升序排列

cout<

int i=search(l,r,Name);

if(i==-1) //容错性

{

cout<

cout<

cout<

string ss;

cin>>ss;

if(ss[0]=='N')

break;

else if(ss[0]=='Y')

{cout<>Name;continue;}

else

{cout<

}

else

{

int j=i-1;

for(;i

{

if(s[i].getname()==Name)

cout<

}

for(;j>=0;j--)

{

if(s[j].getname()==Name)

cout<

}

cout<

}

}

}

bool cmp2( SIM_contact &a, SIM_contact &b) //按姓名降序排列 函数 ?引用为什么不对

{

return a.getname()

}

int SIM_book::display()

{

if(sum<0) {cout<

cout<

m.sortmenu();

char ch;

cin>>ch;

sort(s.begin(),s.end(),cmp1);//按姓名升序排列 ,一次就够,省时间

cout<

cout<

cout<

switch(ch)

{

case '2':

{

for(int i=0;i<=sum;i++)

cout<

break;

}

case '1':

{

for(int i=sum;i>=0;i--)

cout<

break;

}

case '3':break;

default:

cout<

}

}

int SIM_book::getsum()

{return sum;}

int SIM_book::moco(string pname,string ptel)

{

for(int i=0;i<=sum;i++)

{

if(pname==s[i].getname()&&ptel==s[i].gettel())

{

return 0;

}

}

vis=1; //标记删除成功

SIM_contact t;

t.set(pname,ptel,"无籍贯","无QQ");

s.push_back(t); //添加

sum++;

return 0;

}

string SIM_book::getname(int i)

{

return s[i].getname();

}

string SIM_book::gettel(int i)

{

return s[i].gettel();

}

string SIM_book::getorigo(int i)

{

return s[i].getorigo();

}

string SIM_book::getqq(int i)

{

return s[i].getqq();

}

int SIM_book::save()

{

ofstream out("d://SIM book.txt",ios::out); //写的方式打开文件

if(!out)

{

cerr<

return 1;

}

out<

out<

out<

out.setf(ios::left);

out.width(20);

out<

out.width(20);

out<

out.width(20);

out<

out<

for(int i=0;i<=sum;i++)

{

out.setf(ios::left);

out.width(20);

out<

out.width(20);

out<

out.width(20);

out<

out<

}

out.close();

}

int SIM_book::search(int low, int high, string x)

{

if(x==" ")

return -1;

while(low<=high)

{

int mid=low+(high-low)/2;

int t=mid;

while(s[t].getname()==" "&&t<=high)

t++;

if(t>high)

{

high=mid-1;

}

else

{

if(s[t].getname()==x)

return t;

else if(s[t].getname()>x)

high=mid-1;

else

low=t+1;

}

}

return -1;

}

int SIM_book::clear()

{

s.clear();

sum=-1;

}

/*******************************用户类*******************************************/

class user

{

Phone_book p;

SIM_book s;

public:

user() ;

int add(); //添加联系人

int del(); //删除联系人

int modify(); //修改联系人

int inquire(); //查询联系人

int display(); //显示联系人

int moco(); //移动复制

int movp_s(); //把联系人信息从手机移动到手机卡

int movs_p(); //把联系人信息从手机卡移动到手机

int copyp_s(); //把联系人信息从手机移动到手机卡

int copys_p(); //把联系人信息从手机卡复制到手机

int file(); //文件操作

int save(); //保存工作

~user();

};

user::user()

{

cout<

cout<

cout<

cout<

}

user::~user()

{

cout<

cout<

cout<

cout<

}

int user::add()

{

char ch;

Book *q; //创建基类指针

while(cin>>ch)

{

switch(ch)

{

case '1':

q=&p; //基类指针指向派生类对象 ,实现多态

q->add();

break;

case '2':

q=&s;

q->add();

break;

case '3':

q=&p;

q->add();

q=&s;

q->add();

break;

case '4':

break;

default:

cout<

}

if(ch=='4') break;

m.addmenu();

}

return 0;

}

int user::del()

{

char ch;

Book *q; //创建基类指针

while(cin>>ch)

{

switch(ch)

{

case '1':

{

q=&p; //基类指针指向派生类对象 ,实现多态

string ss;

cout<

cin>>ss;

q->del(ss);

break;

}

case '2':

{

q=&s;

string ss;

cout<

cin>>ss;

q->del(ss);

break;

}

case '3':

{

q=&p;

string ss;

cout<

cin>>ss; //基类指针指向派生类对象 ,实现多态

q->del(ss);

q=&s;

q->del(ss);

break;

}

case '4':

break;

default:

cout<

}

if(ch=='4') break;

m.delmenu();

}

return 0;

}

int user::modify()

{

char ch;

Book *q; //创建基类指针

while(cin>>ch)

{

switch(ch)

{

case '1':

{

q=&p; //基类指针指向派生类对象 ,实现多态

string ss;

cout<

cin>>ss;

q->modify(ss);

break;

}

case '2':

{

q=&s;

string ss;

cout<

cin>>ss;

q->modify(ss);

break;

}

case '3':

{

q=&p;

string ss;

cout<

cin>>ss; //基类指针指向派生类对象 ,实现多态

q->modify(ss);

q=&s;

q->modify(ss);

break;

}

case '4':

break;

default:

cout<

}

if(ch=='4') break;

m.modmenu();

}

return 0;

}

int user::inquire()

{

char ch;

Book *q; //创建基类指针

while(cin>>ch)

{

switch(ch)

{

case '1':

{

q=&p; //基类指针指向派生类对象 ,实现多态

string ss;

cout<

cin>>ss;

q->inquire(ss);

break;

}

case '2':

{

q=&s;

string ss;

cout<

cin>>ss;

q->inquire(ss);

break;

}

case '3':

{

q=&p;

string ss;

cout<

cin>>ss; //基类指针指向派生类对象 ,实现多态

q->inquire(ss);

q=&s;

q->inquire(ss);

break;

}

case '4':

break;

default:

cout<

}

if(ch=='4') break;

m.inqmenu();

}

return 0;

}

int user::display()

{

char ch;

Book *q; //创建基类指针

while(cin>>ch)

{

switch(ch)

{

case '1':

{

q=&p; //基类指针指向派生类对象 ,实现多态

q->display();

break;

}

case '2':

{

q=&s;

q->display();

break;

}

case '3':

break;

default:

cout<

}

if(ch=='3') break;

m.dismenu();

}

return 0;

}

int user::moco()

{

char ch;

while(cin>>ch)

{

switch(ch)

{

case '1':

{

movp_s();

break;

}

case '2':

{

movs_p();

break;

}

case'3':

{

copyp_s();

break;

}

case'4':

{

copys_p();

break;

}

case '5':

break;

default:

cout<

}

if(ch=='5') break;

m.mocomenu();

}

return 0;

}

int user::movp_s()

{

cout<

if(p.getsum()<0){cout<

int sum=p.getsum(); //手机通讯录的联系人是变化的

for(int i=0;i<=sum;i++)

{

if(s.getsum()>999) {cout<

s.moco(p.getname(i),p.gettel(i)); //函数调用Phone_book中数组,这里p和Phone_book 中存放联系人vector的p是不一样的

}

p.clear();

sum=-1;

cout<

return 0;

}

int user::movs_p()

{

cout<

if(s.getsum()<0){cout<

int sum=s.getsum(); //手机卡通讯录的联系人是变化的

for(int i=0;i<=sum;i++)

{

vis=0; //标记是否成功移动

if(p.getsum()>999) {cout<

p.moco(s.getname(i),s.gettel(i)); //函数调用SIM_book中数组,这里s和PSIM_book 中存放联系人vector的s是不一样的

}

s.clear(); //清除全部

cout<

return 0;

}

int user::copyp_s()

{

cout<

if(p.getsum()<0){cout<

for(int i=0;i<=p.getsum();i++)

{

if(s.getsum()>999) {cout<

s.moco(p.getname(i),p.gettel(i)); //函数调用Phone_book中数组,这里p和Phone_book 中存放联系人vector的p是不一样的

}

cout<

return 0;

}

int user::copys_p()

{

cout<

if(s.getsum()<0){cout<

for(int i=0;i<=s.getsum();i++)

{

if(p.getsum()>999) {cout<

p.moco(s.getname(i),s.gettel(i)); //函数调用SIM_book中数组,这里s和PSIM_book 中存放联系人vector的s是不一样的

}

cout<

return 0;

}

int user::file()

{

char ch;

Book *q; //创建基类指针

while(cin>>ch)

{

switch(ch)

{

case '1':

q=&p; //基类指针指向派生类对象 ,实现多态

q->read();

break;

case '2':

q=&p;

q->write();

break;

case '3':

q=&s; //基类指针指向派生类对象 ,实现多态

q->read();

break;

case '4':

q=&s;

q->write();

break;

case '5':

break;

default:

cout<

}

if(ch=='5') break;

m.filemenu();

}

return 0;

}

int user::save()

{

Book *q; //创建基类指针

q=&p; //基类指针指向派生类对象 ,实现多态

q->save();

q=&s; //基类指针指向派生类对象 ,实现多态

q->save();

return 0;

}

/***************************主函数*****************************************/

int main()

{

user u;

m.mainmenu();

char ch;

while(cin>>ch)

{

switch(ch)

{

case '1':m.addmenu();

u.add();

break;

case '2':m.delmenu();

u.del();

break;

case '3':m.modmenu();

u.modify();

break;

case '4':m.inqmenu();

u.inquire();

break;

case '5':m.dismenu();

u.display();

break;

case '6':m.mocomenu();

u.moco();

break;

case '7':m.filemenu();

u.file();

break;

case '8':u.save();

break;

case '0':break;

default:

cout<

}

if(ch=='0') break;

m.mainmenu();

}

return 0;

}

通讯录Android的设计报告,通讯录管理系统 课程设计报告(上交版)相关推荐

  1. python工资管理系统课程设计_工资管理系统 课程设计 总结报告

    学生学号 080810129 姓名 傅荣真 专 业 信息管理与信息系统 班 级 08 信管( 1 ) 所属学期 2010-2011 学年第 1 学期 一.项目介绍与设计目的 项目介绍: 项目名称: 企 ...

  2. java酒店管理系统课程设计_JSP酒店管理系统课程设计.doc

    摘 要 ? 现代化的酒店组织庞大.服务项目多.信息量大,要想提高劳动生产.降低成本.提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理.酒店管理系统正是为此而设计的?毕业设 ...

  3. C语言课程信息管理系统课程设计,c语言课程设计学生信息管理系统.doc

    c语言课程设计学生信息管理系统 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 汤璞君 班级学号: BX1209 121003410937 指导教师: 吉顺如 完成日期: 2013.6. ...

  4. asp.net通讯录管理系统课程设计ASP.NET图像的检索技术毕业设计(源代码+论文+开题报告+外文翻译+文献综述+答辩PPT)

    第一章  前言 1.1引言 随着多媒体技术及 Internet网络的迅速发展,图像来源不断扩大,大容量高速存储系统为图像的海量存储提供了基本保障,各行各业对图像的使用越来越多,图像信息资源的管理和检索 ...

  5. c语言学生成员管理代码报告怎么写,C语言学生通信录管理系统课程设计报告

    <C语言学生通信录管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言学生通信录管理系统课程设计报告(18页珍藏版)>请在人人文库网上搜索. 1.实验名称 :学生通信 ...

  6. 物资管理系统 c语言,物资管理系统课程设计报告.doc

    物资管理系统课程设计报告 中 国 地 质 大 学 本科生课程论文封面 课程名称 c语 言 课 程 设 计课程设计评语2 目 录3 1.课程论文题目4 2.程序设计思路4 3.功能模块图5 4.数据结构 ...

  7. C语言课程学籍管理课程书面报告,C语言学籍管理系统课程设计报告书

    <C语言学籍管理系统课程设计报告书>由会员分享,可在线阅读,更多相关<C语言学籍管理系统课程设计报告书(30页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计课程设计报告学 ...

  8. java技术计算机机房管理系统文档,计算机机房管理系统课程设计报告

    计算机机房管理系统课程设计报告 课课 程程 设设 计计 题题 目目 计算机机房管理系统 学学 院院 专专 业业 信电分院计算机科学与技术 班班 级级 计算机 1101 姓姓 名名 指导教师指导教师 2 ...

  9. c语言航班管理系统报告,c航班管理系统课程设计报告.doc

    c航班管理系统课程设计报告 北华航天工业学院课程设计报告 PAGE 课程设计报告 报告(论文)题目: 1航班信息查询系统 2迷宫问题 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技 ...

  10. 图书馆系统c语言作业,C语言图书馆管理系统课程设计报告

    <C语言图书馆管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言图书馆管理系统课程设计报告(16页珍藏版)>请在人人文库网上搜索. 1.高级语言程序设计课程设计报告 ...

最新文章

  1. Python中的urllib.quote和Go中的url.QueryEscape关系探讨
  2. python在线课程-《Python程序设计与应用》在线课程使用说明
  3. AngularJS跨域问题 ajax 跨域
  4. idea 类注释,方法注释设置
  5. php中函数的默认值,参数的顺序
  6. 飞鸽传书举一个小例子
  7. css①字体颜色正常显示,背景透明②字体颜色与背景均为透明的设置方法
  8. 无法检测的新型 Linux 恶意软件利用 Dogecoin API 攻击 Docker 服务器
  9. 通过代码触发dropdownlist_SelectedIndexChanged事件。
  10. jpg/png格式图片转eps格式
  11. ★★iPhone越狱后必装软件和一些心得教程,送给广大的小白们,希望你们能从小白变成“小黑”★★
  12. htcd816+android密码,HTC816怎么解锁?HTC Desire 816刷机解锁教程图解
  13. Linux 的文件与目录(软连接和硬连接)
  14. excel英文自动翻译成中文教程
  15. 找回excel工作表保护密码
  16. 解决Minimum supported Gradle version is 7.0.2. Current version is 6.8.
  17. windows系统背景淡绿护眼色设置
  18. python泰坦尼克号数据预测_泰坦尼克号幸存者预测 python 详解
  19. python--webdriver驱动浏览器操作(基础知识)
  20. 实例分析SQL中除法的三种写法

热门文章

  1. 【转载】看懂通信协议:自定义通信协议设计之TLV编码应用
  2. Rust 中的基本数据类型——Rust语言基础06
  3. 漫谈程序员系列:3D打印能打印出程序猿吗
  4. Linux 线程之线程自杀
  5. Python的成长过程、语言特色和优势及应用领域
  6. python 新浪微博
  7. 英雄联盟轮播图自动轮播
  8. 50 个新酷的 jQuery 插件
  9. oracle如何查询临时表空间,Oracle查询临时表空间的占用
  10. python数学建模(四)微分方程模型