分为四大板块,感觉做的还可以吧,但还是有点小遗憾。
#include<iostream>
#include<cmath>
#include<cstring>
#include<iomanip>
#include<fstream>
#include<windows.h>
#include<ctime>
#include<cstdlib>
using namespace std;
//Sleep():睡眠函数 Sleep(3000);等待3s
//system("cls");清屏函数
char TEMP[2]=" ";//空格,不用NULL赋缺省值,要么很麻烦,程序很容易崩溃
/*------------------联系人类—------------------------------*/
/*--------------------------—------------------------------*/
class PhoneCard//手机卡类
{
protected:
char *name,*Phonenum;//姓名,手机号码
public:
PhoneCard(char *pname=TEMP,char *phonenum=TEMP);//构造,以空格作为缺省值
virtual ~PhoneCard();//虚析构
inline void set(char *pname=TEMP,char *phonenum=TEMP);//set函数。给对象赋值
inline void modify();//修改
PhoneCard & operator= (PhoneCard A);//重载赋值运算符,以防多次delete
PhoneCard(const PhoneCard & A);//复制构造防止因字符指针浅复制导致程序崩溃
friend istream & operator>> (istream &input,PhoneCard & A);
friend ostream & operator<< (ostream &out,PhoneCard &A);
friend class M_Card_AddressList;//定义M_Card_AddressList为PhoneCard的友元类,方便
friend class User;//定义友元,方便访问
};
#if(1)
PhoneCard::PhoneCard(char *pname,char *phonenum)
{
if(pname!=NULL)//new与strcpy不能对空指针操作
{
name=new char[strlen(pname)+1];
Phonenum=new char[strlen(phonenum)+1];
strcpy(name,pname);
strcpy(Phonenum,phonenum);
}
}
PhoneCard::~PhoneCard()//析构
{
delete []name;
delete []Phonenum;
}
PhoneCard::PhoneCard(const PhoneCard & A)//复制构造函数很重要!
{
name=new char[strlen(A.name)+1];
strcpy(name,A.name);
Phonenum=new char[strlen(A.Phonenum)+1];
strcpy(Phonenum,A.Phonenum);
}
void PhoneCard::set(char *pname,char *phonenum)
{
if(pname!=NULL)
{
delete []name;//防止越界,重新生成空间
delete []Phonenum;
name=new char[strlen(pname)+1];
Phonenum=new char[strlen(phonenum)+1];
strcpy(name,pname);
strcpy(Phonenum,phonenum);
}
}
void PhoneCard::modify()//修改函数
{
cout<<"1、修改姓名 2、修改号码 3、全部修改"<<endl;
int a;
cin>>a;
char cname[120];
char cnum[120];
switch(a)
{
case 1:
cout<<"请输入姓名 :"<<endl;
cin>>cname;
delete []name;
name=new char[strlen(cname)+1];
strcpy(name,cname);
cout<<"修改成功!"<<endl;
break;
case 2:
cout<<"请输入手机号码 :"<<endl;
cin>>cnum;
delete []Phonenum;
Phonenum=new char[strlen(cnum)+1];
strcpy(Phonenum,cnum);
cout<<"修改成功!"<<endl;
break;
case 3:
cout<<"请输入姓名 :"<<endl;
cin>>cname;
cout<<"请输入手机号码 :"<<endl;
cin>>cnum;
set(cname,cnum);
cout<<"修改成功!"<<endl;
break;
default :
cout<<"————输入无效————"<<endl;
}
}
istream & operator>> (istream &input,PhoneCard & A)//重载插入符
{
char cname[120];
char cnum[1000];
cout<<"请输入姓名 :"<<endl;
input>>cname;
cout<<"请输入手机号码 :"<<endl;
input>>cnum;
A.set(cname,cnum);
return input;
}
ostream & operator<< (ostream &out,PhoneCard &A)//重载提取符
{
out<<"姓名 :"<<A.name<<'\t'<<"手机号码 :"<<A.Phonenum<<endl;
return out;
}
PhoneCard & PhoneCard::operator= (PhoneCard A)//重载赋值号,类似深复制
{
delete []name;
delete []Phonenum;
name=new char[strlen(A.name)+1];
strcpy(name,A.name);
Phonenum=new char[strlen(A.Phonenum)+1];
strcpy(Phonenum,A.Phonenum);
return *this;
}
class Phone:public PhoneCard
{
protected:
char *Native,*Qnum;
public :
Phone(char *cname=TEMP,char *cpum=TEMP,char *native=TEMP,char *qnum=TEMP);//构造,赋空格为缺省值
virtual ~Phone();//虚析构
inline void set(char *cname=TEMP,char *cpnum=TEMP,char *native=TEMP,char *qnum=TEMP);//set函数,为对象赋值
inline void modify();//修改
Phone & operator= (Phone A);//重载赋值运算符,防止多次delete
Phone(const Phone & A);//复制构造以防对字符指针多次delete,防崩溃,很重要!!!
friend istream & operator>>(istream &input,Phone &A);
friend ostream & operator<<(ostream &out,Phone &A);
friend class Mobile_AddressList;//声明Mobile_AddressList为Phone友元类,方便访问
friend class User;//声明友元,方便访问
};
Phone::Phone(char *cname,char *cpnum,char *native,char *qnum):PhoneCard(cname,cpnum)
{
Native=new char[strlen(native)+1];strcpy(Native,native);
Qnum=new char[strlen(qnum)+1];strcpy(Qnum,qnum);
}
Phone::~Phone()
{
delete []Native;
delete []Qnum;
}
Phone::Phone(const Phone &A)//复制构造,很重要!!!
{
name=new char[strlen(A.name)+1];
strcpy(name,A.name);
Phonenum=new char[strlen(A.Phonenum)+1];
strcpy(Phonenum,A.Phonenum);
Native=new char[strlen(A.Native)+1];
strcpy(Native,A.Native);
Qnum=new char[strlen(A.Qnum)+1];
strcpy(Qnum,A.Qnum);
}
void Phone::set(char *cname,char *cpnum,char *native,char *qnum)//为对象赋值
{
PhoneCard::set(cname,cpnum);
if(native!=NULL&&qnum!=NULL)
{
if(Native!=NULL) delete []Native;
if(Qnum!=NULL) delete []Qnum;
Native = new char[strlen(native)+1];
strcpy(Native,native);
Qnum = new char[strlen(qnum)+1];
strcpy(Qnum,qnum);
}
}
void Phone::modify()//修改
{
cout<<"您需要修改姓名号码吗 ?"<<endl;
cout<<"1、需要 2、不需要"<<endl;
int a;
cin>>a;
if(a==1) PhoneCard::modify();
cout<<"您需要修改籍贯和QQ吗 ? "<<endl;
cout<<"1、需要 2、不需要 "<<endl;
int flag,k;
char native[122];
char qnum[122];
cin>>flag;
if(flag==1)
{
cout<<"修改 1、籍贯 2、QQ、3、以上都修改"<<endl;
cin>>k;
switch(k)
{
case 1:
cout<<"请输入籍贯 :"<<endl;
cin>>native;
delete []Native;
Native = new char[strlen(native)+1];
strcpy(Native,native);
cout<<"修改成功!"<<endl;
break;
case 2:
cout<<"请输入QQ :"<<endl;
cin>>qnum;
delete []Qnum;
Qnum = new char[strlen(qnum)+1];
strcpy(Qnum,qnum);
cout<<"修改成功!"<<endl;
break;
case 3:
cout<<"请输入籍贯 :"<<endl;
cin>>native;
delete []Native;
Native = new char[strlen(native)+1];
strcpy(Native,native);
cout<<"请输入QQ :"<<endl;
cin>>qnum;
delete []Qnum;
Qnum = new char [strlen(qnum)+1];
strcpy(Qnum,qnum);
default :
cout<<"————输入无效————"<<endl;
}
}
}
istream & operator>>(istream & in,Phone &A)//重载>>
{
char cname[120],cnum[120],cnative[120],cqnum[120];
cout<<"请输入姓名 :"<<endl;
in>> cname;
cout<<"请输入手机号码 :"<<endl;
in>>cnum;
cout<<"请输入籍贯 :"<<endl;
in>>cnative;
cout<<"请输入QQ :"<<endl;
in>>cqnum;
A.set(cname,cnum,cnative,cqnum);
return in;
}
ostream & operator<<(ostream &out,Phone &A)//重载<<
{
out<<"姓名 :"<<A.name<<endl;
out<<'\t'<<"手机号码 :"<<A.Phonenum<<endl;
out<<'\t'<<"籍贯 :"<<A.Native<<endl;
out<<'\t'<<"QQ :"<<A.Qnum<<endl;
return out;
}
Phone & Phone::operator= (Phone A)//重载赋值号
{
delete []name;//防止溢出,重新申请内存
delete []Phonenum;
delete []Native;
delete []Qnum;
name=new char[strlen(A.name)+1];
strcpy(name,A.name);
Phonenum=new char[strlen(A.Phonenum)+1];
strcpy(Phonenum,A.Phonenum);
Native=new char[strlen(A.Native)+1];
strcpy(Native,A.Native);
Qnum=new char[strlen(A.Qnum)+1];
strcpy(Qnum,A.Qnum);
return *this;
}
/*----------------------------通讯簿类----------------------------*/
/*----------------------------------------------------------------*/
class AddressList//通讯簿抽象类
{
public:
virtual void Add()=0;
virtual void Delete(int idx)=0;
virtual void Display()=0;
virtual void Updata(int idx)=0;
virtual void Query(int idx)=0;
};
class M_Card_AddressList:public AddressList//手机卡通讯簿
{
protected:
static int number;//记录联系人的数量
PhoneCard arr[1001];//手机卡联系人对象
public:
M_Card_AddressList();
virtual ~M_Card_AddressList();
void Add();//添加
void Delete(int idx);//删除
void Display();//展示
void Updata(int idx);//修改
void Query(int idx);//查询
friend class User;
};
M_Card_AddressList::M_Card_AddressList()//构造函数,从文件读取联系人
{
ifstream fin("PhoneCard.txt",ios::in);
if(!fin.is_open()) {
cerr<<"PhoneCard File could not be open."<<endl;
}
else {
char cname[120],cpnum[120];
while(fin>>cname>>cpnum)
{
arr[number++].set(cname,cpnum);
}
fin.close();
}
}
M_Card_AddressList::~M_Card_AddressList()//析构函数,把联系人信息输出文件中
{
ofstream fout("PhoneCard.txt",ios::out);
if(!fout.is_open()){
cerr<<"PhoneCard File could not be open."<<endl;
}
else {
for(int i=0;i<number;++i)
fout<<arr[i].name<<" "<<arr[i].Phonenum<<" ";
fout.close();
}
}
void M_Card_AddressList::Add()//添加一个联系人
{
if(number+1>1000) {
cout<<"很抱歉,您的手机内存已满^_^ 你可以尝试清理后再进行添加!"<<endl;
}
else {
cin>>arr[number++];
cout<<" 添加成功 ! "<<endl;
}
}
void M_Card_AddressList::Delete(int idx)//删除一个联系人
{
if(number-1<0) {
cout<<"您已经没有联系人了,3s后退出!"<<endl;
Sleep(3000);
}
for(int i=idx;i<number-1;++i)//移位
arr[i]=arr[i+1];
number--;//总人数减一
}
void M_Card_AddressList::Display()//输出所有联系人
{
for(int i=0;i<number;++i)
cout<<arr[i];
cout<<"总人数 : "<<number<<endl;
}
void M_Card_AddressList::Updata(int idx)//修改联系人
{
arr[idx].modify();
}
void M_Card_AddressList::Query(int idx)//查询一个联系人
{
cout<<arr[idx];
}
int M_Card_AddressList::number=0;//总人数初值为0
class Mobile_AddressList:public AddressList//手机通讯簿
{
protected:
static int number;//记录联系人的人数
Phone arr[1001];//对象数组
public:
Mobile_AddressList();
virtual ~Mobile_AddressList();
void Add();//添加
void Delete(int idx);//删除
void Display();//展示
void Updata(int idx);//修改
void Query(int idx);//查询
friend class User;
};
Mobile_AddressList::Mobile_AddressList()
{
ifstream fin("Phone.txt",ios::in);
if(!fin.is_open()) {
cerr<<"Phone File could not be open."<<endl;
}
else {
char cname[120],cpnum[120],cnative[120],cqnum[120];
while(fin>>cname>>cpnum>>cnative>>cqnum)
{
arr[number++].set(cname,cpnum,cnative,cqnum);
}
fin.close();
}
}
Mobile_AddressList::~Mobile_AddressList()
{
ofstream fout("Phone.txt",ios::out);
if(!fout.is_open()){
cerr<<"Phone File could not be open."<<endl;
}
else {
for(int i=0;i<number;++i)
fout<<arr[i].name<<TEMP<<arr[i].Phonenum<<TEMP<<arr[i].Native<<TEMP<<arr[i].Qnum<<endl;
fout.close();
}
}
void Mobile_AddressList::Add()
{
if(number+1>1000) {
cout<<"很抱歉,您的手机卡内存已满^_^ 你可以尝试清理后再进行添加!"<<endl;
}
else {
cin>>arr[number++];
cout<< " 添加成功 ! "<<endl;
}
}
void Mobile_AddressList::Delete(int idx)
{
if(number-1<0) {
cout<<"您已经没有联系人了,3s后退出!"<<endl;
Sleep(3000);
}
for(int i=idx;i<number-1;++i)
arr[i]=arr[i+1];
number--;
}
void Mobile_AddressList::Display()
{
for(int i=0;i<number;++i)
cout<<arr[i];
cout<<"总人数 : "<<number<<endl;
}
void Mobile_AddressList::Updata(int idx)
{
arr[idx].modify();
}
void Mobile_AddressList::Query(int idx)
{
cout<<arr[idx];
}
int Mobile_AddressList::number=0;
/*-------------------------------操作类---------------------------------*/
/*----------------------------------------------------------------------*/
#endif
#if(1)
class User
{
protected:
M_Card_AddressList P_CardList;//手机卡通讯簿对象
Mobile_AddressList PhoneList;//手机通讯簿对象
AddressList *inedx;//抽象类指针,多态实现成员函数
public:
inline void Add();//添加联系人
inline void Delete();//删除联系人
inline void Updata();//修改联系人
inline void Query();//查询联系人
inline void Scan();//输出所有联系人
inline void TransP_to_C();//将手机的联系人转移/复制到手机卡里
inline void TransC_to_P();//将手机的联系人转移/复制到手机卡里
};
void User::Add()
{
cout<<"请选择添加位置 1、本机 2、手机卡 "<<endl;
int flag;
cin>>flag;
if(flag==1){
inedx=&PhoneList;
inedx->Add();
}
else if(flag==2){
inedx=&P_CardList;
inedx->Add();
}
else {
cout<<"————您的输入无效————"<<endl;
}
}
void User::Delete()
{
cout<<"请输入您要删除联系人的号码。"<<endl;
char cnum[120];
cin>>cnum;
int k1,k2;
bool r1=1,r2=1;
for(int i=0;i<PhoneList.number;++i)//先查找
{
if(strcmp(PhoneList.arr[i].Phonenum,cnum)==0) {
k1=i;r1=0;break;
}
}
if(r1==0) {//如果有这个联系人
inedx=&PhoneList;
inedx->Delete(k1);
}
for(int i=0;i<P_CardList.number;++i)
{
if(strcmp(P_CardList.arr[i].Phonenum,cnum)==0) {
k2=i;r2=0;break;
}
}
if(r2==0) {
inedx=&P_CardList;
inedx->Delete(k2);
}
if(r1==1&&r2==1) {
cout<<"抱歉 ,没有找到联系人 !"<<endl;
}
else cout<<" 删除成功 !"<<endl;
}
void User::Updata()
{
cout<<endl<<"注: 因为可能在本机和手机卡中都有此联系人,所以可能多次需要您的输入哦 ~_~"<<endl;
cout<<endl;
cout<<"请输入您要修改联系人的号码。 "<<endl;
char cnum[120];
cin>>cnum;
int k1=-1,k2=-1;
for(int i=0;i<PhoneList.number;++i)//查找手机通讯簿
{
if(strcmp(PhoneList.arr[i].Phonenum,cnum)==0) {
k1=i;break;
}
}
if(k1!=-1) {
inedx=&PhoneList;
inedx->Updata(k1);
}
for(int i=0;i<P_CardList.number;++i)//查找手机卡通讯簿
{
if(strcmp(P_CardList.arr[i].Phonenum,cnum)==0) {
k2=i;break;
}
}
if(k2!=-1) {
inedx=&P_CardList;
inedx->Updata(k2);
}
if(k1==-1&&k2==-1) {
cout<<" 很抱歉 ,未找到联系人 !"<<endl;
}
}
void User::Query()
{
char cname[120];
cout<<"请输入您要查询联系人的姓名 :"<<endl;
cin>>cname;
cout<<"您要在哪个通讯簿查找该联系人呢? 1、本机 2、手机卡 "<<endl;
int flag;
cin>>flag;
bool r=1;
if(flag==1){
inedx=&PhoneList;
for(int i=0;i<PhoneList.number;++i)
{
if(strcmp(PhoneList.arr[i].name,cname)==0) {
inedx->Query(i);
r=0;
}
}
}
else if(flag==2){
inedx=&P_CardList;
for(int i=0;i<P_CardList.number;++i)
{
if(strcmp(P_CardList.arr[i].name,cname)==0){
inedx->Query(i);
r=0;
}
}
}
else cout<<"————输入无效————"<<endl;
if(r==1&&flag<=2) {
cout<<"不好意思 !_! 没查询到唉"<<endl;
}
}
void User::Scan()
{
cout<<"请输入您要查看的通讯簿:1、本机 2、手机卡通讯簿 "<<endl;
int flag;
cin>>flag;
if(flag==1) {
inedx=&PhoneList;
inedx->Display();
}
else if(flag==2) {
inedx=&P_CardList;
inedx->Display();
}
else cout<<"————输入无效————"<<endl;
}
void User::TransP_to_C()
{
cout<<"请问您要转移还是拷贝 : 1、转移 2、拷贝"<<endl;
int p;
cin>>p;
if(P_CardList.number+PhoneList.number>1000){
cout<<"您的手机卡内存好像储存不了这么多联系人呀!是否继续操作 1、继续 2、取消 "<<endl;
int flag;
cin>>flag;
if(flag==2) return ;
}
if(p==1)
{
int k=0;
int num=P_CardList.number;
for(int i=P_CardList.number;i<=1000;++i,P_CardList.number++)
{
if(PhoneList.number==0) {
cout<<"全部已转移完毕!"<<endl;return ;
}
bool r=1;
for(int j=0;j<=P_CardList.number;++j){//判重 等号按理说不取
if(strcmp(PhoneList.arr[k].name,P_CardList.arr[j].name)==0&&strcmp(PhoneList.arr[k].Phonenum,P_CardList.arr[j].Phonenum)==0)
{r=0;break;}
}
if(r==0){i--;k++;P_CardList.number--; continue;}
P_CardList.arr[i].set(PhoneList.arr[k].name,PhoneList.arr[k].Phonenum);
PhoneList.Delete(k);//调用删除函数,k位置的值被后面覆盖,所有不用下面的k++语句
//k++;//有delete函数,画蛇添足
}
}
else {
int k=0;//一个指针,指向手机通讯簿对象数组的的位置
int num=P_CardList.number;
for(int i=P_CardList.number;i<=1000;++i,P_CardList.number++)
{
if(k==PhoneList.number) break;
bool r=1;
for(int j=0;j<=P_CardList.number;++j){//判重
if(strcmp(PhoneList.arr[k].name,P_CardList.arr[j].name)==0&&strcmp(PhoneList.arr[k].Phonenum,P_CardList.arr[j].Phonenum)==0)
{ r=0;break;}
}
if(r==0){k++;i--;P_CardList.number--; continue;}//若有重复的话
P_CardList.arr[i].set(PhoneList.arr[k].name,PhoneList.arr[k].Phonenum);
k++;
}
cout<<"复制完成 !"<<endl;
}
}
void User::TransC_to_P()
{
cout<<"请问您要转移还是拷贝 : 1、转移 2、拷贝"<<endl;
int p;
cin>>p;
if(P_CardList.number+PhoneList.number>1000){
cout<<"您的手机内存好像储存不了这么多联系人呀!是否继续操作 1、继续 2、取消 "<<endl;
int flag;
cin>>flag;
if(flag==2) return ;
}
if(p==1)
{
int k=0;//一个指针,指向手机卡通讯簿对象数组的的位置
int num=PhoneList.number;
for(int i=PhoneList.number;i<=1000;++i,PhoneList.number++)
{
if(P_CardList.number==0) {
cout<<"全部已转移完毕!"<<endl;return ;
}
bool r=1;
for(int j=0;j<=PhoneList.number;++j){//判重
if(strcmp(PhoneList.arr[j].name,P_CardList.arr[k].name)==0&&strcmp(PhoneList.arr[j].Phonenum,P_CardList.arr[k].Phonenum)==0)
{r=0;break;}
}
if(r==0) {
i--;k++;PhoneList.number--; continue;
}
PhoneList.arr[i].set(P_CardList.arr[k].name,P_CardList.arr[k].Phonenum,(char *)"No",(char *)"No");
P_CardList.Delete(k);//删除掉,调用删除函数,k位置的值被后面覆盖,所有不用下面的k++语句
// k++;//有delete,不用k++;
}
}
else {
int k=0;
int num=P_CardList.number;//
for(int i=PhoneList.number;i<=1000;++i,PhoneList.number++)
{
if(k==P_CardList.number) break;
bool r=1;
for(int j=0;j<=P_CardList.number;++j){//判重
if(strcmp(PhoneList.arr[j].name,P_CardList.arr[k].name)==0&&strcmp(PhoneList.arr[j].Phonenum,P_CardList.arr[k].Phonenum)==0)
{r=0;break;}
}
if(r==0) {
k++;i--;PhoneList.number--; continue;
}
PhoneList.arr[i].set(P_CardList.arr[k].name,P_CardList.arr[k].Phonenum,(char *)"No",(char *)"No");
k++;
}
cout<<"复制完成 !"<<endl;
}
}
/*-----------------------------菜单类---------------------------*/
/*--------------------------------------------------------------*/
class Menu//递归加嵌套实现菜单功能
{
protected:
User user;//用户类的对象
static int Record;//记录最优的成绩
public:
inline void display();//主菜单
inline void scan();//中转界面
inline void operate();//开机界面
inline void game();
};
void Menu::scan()//中转界面
{
cout<<"***********************************************************************************"<<endl;
cout<<"-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|"<<endl;
cout<<"-|-----------------------------------------------------------------------------|-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| Adress Book |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| 进入: 1 退出 2 |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-|-----------------------------------------------------------------------------|-|"<<endl;
cout<<"-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|"<<endl;
cout<<"**********************************************************************************"<<endl;
cout<<endl<<"请输入您的选择 :"<<endl;
int choose;
cin>>choose;
system("cls");
if(choose==1) display();//调用通讯簿主菜单
else operate() ;//回到开机界面
}
void Menu::display()//主菜单
{
cout<<"**********************************************************************************"<<endl;
cout<<"-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|"<<endl;
cout<<"-|-----------------------------------------------------------------------------|-|"<<endl;
cout<<"-| 注: 中途退出通讯录可能会丢失数据哦! |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| Adress Book |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| * 1、New Contact /*新建*/ |-|"<<endl;
cout<<"-| | |-|"<<endl;
cout<<"-| * 2、Delete Contact /*删除*/ |-|"<<endl;
cout<<"-| | |-|"<<endl;
cout<<"-| * 3、Modify Contact /*修改*/ |-|"<<endl;
cout<<"-| | |-|"<<endl;
cout<<"-| * 4、Query Contact /*查询*/ |-|"<<endl;
cout<<"-| | |-|"<<endl;
cout<<"-| * 5、 Browse All Contact /*查看*/ |-|"<<endl;
cout<<"-| | |-|"<<endl;
cout<<"-| * 6、Transfer MobileCard Contact to Moblie Contact /*手机卡到手机*/ |-|"<<endl;
cout<<"-| | |-|"<<endl;
cout<<"-| * 7、Transfer Mobile Contact to MobileCard Contact /*手机到手机卡*/ |-|"<<endl;
cout<<"-| | |-|"<<endl;
cout<<"-| * 0、Return To The upper level /*返回上一次层*/ |-|"<<endl;
cout<<"-|-----------------------------------------------------------------------------|-|"<<endl;
cout<<"-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|"<<endl;
cout<<"**********************************************************************************"<<endl;
cout<<endl<<"您想进行什么操作呢 ? 请输入 : "<<endl;
int flag;
cin>>flag;
system("cls");
switch(flag)
{
case 1:
user.Add();
cout<<endl<<"请稍等 ~_~"<<endl;
Sleep(3000);
system("cls");
display();//递归
break;
case 2:
user.Delete();
cout<<endl<<"请稍等 ~_~"<<endl;
Sleep(3000);
system("cls");
display();//递归
break;
case 3:
user.Updata();
cout<<endl<<"请稍等 ~_~"<<endl;
Sleep(3000);
system("cls");;
display();//递归
break;
case 4:
user.Query();
cout<<endl<<"按任意键返回 ~_~"<<endl;
getchar();//作用:吃掉回车
getchar();
system("cls");
display();//递归
break;
case 5:
user.Scan();
cout<<endl<<"按任意键返回 ~_~"<<endl;
getchar();//作用:吃掉回车
getchar();
system("cls");
display();//递归
break;
case 6:
user.TransC_to_P();
cout<<endl<<"请稍等 ~_~"<<endl;
Sleep(3000);
system("cls");
display();//递归
break;
case 7:
user.TransP_to_C();
cout<<endl<<"请稍等 ~_~"<<endl;
Sleep(3000);
system("cls");
display();//递归
break;
case 0:
scan();//回到中转界面
}
}
void Menu::operate()//开机界面
{
cout<<"***********************************************************************************"<<endl;
cout<<"-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|"<<endl;
cout<<"-|-----------------------------------------------------------------------------|-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| 您的手机已开机,请选择您想要的功能 |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| 1、通讯录 2、猜字游戏 3、关机 |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-|-----------------------------------------------------------------------------|-|"<<endl;
cout<<"-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|"<<endl;
cout<<"**********************************************************************************"<<endl;
cout<<endl<<"请输入您的操作 : "<<endl;
int flag;
cin>>flag;
if(flag==1) {
system("cls");
scan();//进入中转界面
}
else if(flag==2) game();//游戏函数
else if(flag==3) return ;
else {
cout<<"您的输入无效呀!3s后返回主菜单"<<endl;
Sleep(3000);
system("cls");
operate();//递归调用
}
}
void Menu::game()//游戏函数
{
system("cls");
cout<<"***********************************************************************************"<<endl;
cout<<"-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|"<<endl;
cout<<"-|-----------------------------------------------------------------------------|-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| 欢迎来到猜数字游戏,你想挑战什么难度呢? |-|"<<endl;
cout<<"-| |-|"<<endl;
cout<<"-| 1、easy 2、mid 3、hard 4、返回 |-|"<<endl;
cout<<"-|-----------------------------------------------------------------------------|-|"<<endl;
cout<<"-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|"<<endl;
cout<<"**********************************************************************************"<<endl;
srand(time(0));
int flag;
int num;
cout<<"请输入 :"<<endl;
cin>>flag;
if(flag==1) {
num=rand()%11;int num=rand()%(n-m+1)+m;(产生[n,m]d的随机数)
}
else if(flag==2){
num=rand()%101;
}
else if(flag==3)
{
num=rand()%1001;
}
else if(flag==4) {
system("cls");
operate();//回到开机界面
}
int input;
int sum=0;
system("cls");
while(1)
{
cout<<"请输入数字 :"<<endl;
cin>>input;
if(input>num){
cout<<"大了 !"<<endl;
sum++;
}
else if(input<num){
cout<<"小了 !"<<endl;
sum++;
}
else {
if(sum>5) {
cout<<"还不错,再接再厉呀!"<<endl;break;
}
else cout<<"您真是太机智啦!"<<endl;break;
}
}
if(Record>sum) {//记录最优次数
Record=sum;
cout<<endl<<"恭喜你创造了新纪录 : "<<sum<<"!"<<endl;
}
cout<<endl<<"请按任意键继续 ~_~ "<<endl;
getchar();
getchar();
system("cls");
operate();//回到开机界面
}
int Menu::Record=1000000;//最优记录一开始是大值
#endif
int main()
{
Menu menu;
menu.operate();//调用菜单类开机界面函数
}