通讯录Android的设计报告,通讯录管理系统 课程设计报告(上交版)
因为复制会有格式错误,所以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的设计报告,通讯录管理系统 课程设计报告(上交版)相关推荐
- python工资管理系统课程设计_工资管理系统 课程设计 总结报告
学生学号 080810129 姓名 傅荣真 专 业 信息管理与信息系统 班 级 08 信管( 1 ) 所属学期 2010-2011 学年第 1 学期 一.项目介绍与设计目的 项目介绍: 项目名称: 企 ...
- java酒店管理系统课程设计_JSP酒店管理系统课程设计.doc
摘 要 ? 现代化的酒店组织庞大.服务项目多.信息量大,要想提高劳动生产.降低成本.提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理.酒店管理系统正是为此而设计的?毕业设 ...
- C语言课程信息管理系统课程设计,c语言课程设计学生信息管理系统.doc
c语言课程设计学生信息管理系统 课程设计报告 课程名称: 高级语言程序设计课程设计 姓 名: 汤璞君 班级学号: BX1209 121003410937 指导教师: 吉顺如 完成日期: 2013.6. ...
- asp.net通讯录管理系统课程设计ASP.NET图像的检索技术毕业设计(源代码+论文+开题报告+外文翻译+文献综述+答辩PPT)
第一章 前言 1.1引言 随着多媒体技术及 Internet网络的迅速发展,图像来源不断扩大,大容量高速存储系统为图像的海量存储提供了基本保障,各行各业对图像的使用越来越多,图像信息资源的管理和检索 ...
- c语言学生成员管理代码报告怎么写,C语言学生通信录管理系统课程设计报告
<C语言学生通信录管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言学生通信录管理系统课程设计报告(18页珍藏版)>请在人人文库网上搜索. 1.实验名称 :学生通信 ...
- 物资管理系统 c语言,物资管理系统课程设计报告.doc
物资管理系统课程设计报告 中 国 地 质 大 学 本科生课程论文封面 课程名称 c语 言 课 程 设 计课程设计评语2 目 录3 1.课程论文题目4 2.程序设计思路4 3.功能模块图5 4.数据结构 ...
- C语言课程学籍管理课程书面报告,C语言学籍管理系统课程设计报告书
<C语言学籍管理系统课程设计报告书>由会员分享,可在线阅读,更多相关<C语言学籍管理系统课程设计报告书(30页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计课程设计报告学 ...
- java技术计算机机房管理系统文档,计算机机房管理系统课程设计报告
计算机机房管理系统课程设计报告 课课 程程 设设 计计 题题 目目 计算机机房管理系统 学学 院院 专专 业业 信电分院计算机科学与技术 班班 级级 计算机 1101 姓姓 名名 指导教师指导教师 2 ...
- c语言航班管理系统报告,c航班管理系统课程设计报告.doc
c航班管理系统课程设计报告 北华航天工业学院课程设计报告 PAGE 课程设计报告 报告(论文)题目: 1航班信息查询系统 2迷宫问题 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技 ...
- 图书馆系统c语言作业,C语言图书馆管理系统课程设计报告
<C语言图书馆管理系统课程设计报告>由会员分享,可在线阅读,更多相关<C语言图书馆管理系统课程设计报告(16页珍藏版)>请在人人文库网上搜索. 1.高级语言程序设计课程设计报告 ...
最新文章
- Python中的urllib.quote和Go中的url.QueryEscape关系探讨
- python在线课程-《Python程序设计与应用》在线课程使用说明
- AngularJS跨域问题 ajax 跨域
- idea 类注释,方法注释设置
- php中函数的默认值,参数的顺序
- 飞鸽传书举一个小例子
- css①字体颜色正常显示,背景透明②字体颜色与背景均为透明的设置方法
- 无法检测的新型 Linux 恶意软件利用 Dogecoin API 攻击 Docker 服务器
- 通过代码触发dropdownlist_SelectedIndexChanged事件。
- jpg/png格式图片转eps格式
- ★★iPhone越狱后必装软件和一些心得教程,送给广大的小白们,希望你们能从小白变成“小黑”★★
- htcd816+android密码,HTC816怎么解锁?HTC Desire 816刷机解锁教程图解
- Linux 的文件与目录(软连接和硬连接)
- excel英文自动翻译成中文教程
- 找回excel工作表保护密码
- 解决Minimum supported Gradle version is 7.0.2. Current version is 6.8.
- windows系统背景淡绿护眼色设置
- python泰坦尼克号数据预测_泰坦尼克号幸存者预测 python 详解
- python--webdriver驱动浏览器操作(基础知识)
- 实例分析SQL中除法的三种写法