📄 3.1.cpp
字号:
else
{
cout<<"主叫"<<me.fromNumber<<"发送短信给"<<me.toNumber<<":"<<endl;
cout<<me.shortmessage<<endl;
ofstream infile("介质.txt",ios_base::out);
strcpy(back.fromNumber,me.toNumber);
strcpy(back.toNumber,me.fromNumber);
strcpy(back.shortmessage,"$message$");
infile<<back.toNumber<<setw(15)<<back.fromNumber<<setw(15)<<back.shortmessage<<endl;
}
}
}
}
}
//定义类:MyPhone作为电话本的类
class MyPhone
{
public:
char name[length];
char m_Number[length];
char f_Number[length];
void print();
};
//MyPhone类中电话本的打印函数
void MyPhone::print()
{
cout<<setiosflags(ios_base::left)<<setw(15)<<name<<setw(20)<<m_Number<<setw(20)<<f_Number<<endl;
}
//声明两个函数用于查找和输入用户
void input();
void search();
//主函数的实现:
void CellPhone::phoneBook()
{
int i=1,key;
cout<<"欢迎使用电话本,请输入希望的操作:(正整数)"<<endl;
cout<<"(1-查询电话 2-添加电话 0-退出号码本)"<<endl;
cin>>key;
while (key!=0) //////////////////////
{ //通过用一个选择函数//
switch (key) //来确定操作,然后再//
{ //分别调用相应的函数//
case 1: //////////////////////
search();
break;
case 2:
input();
break;
case 0:
cout<<"退出!"<<endl;
break;
default:
cout<<"错误的输入,请重新输入:(正整数)"<<endl;
break;
}
cout<<"请继续输入操作:"<<endl; //再次输入需要的操作
cout<<"(1-查询电话 2-添加电话 0-退出号码本)"<<endl;
cin>>key;
}
}
//////////////////////////////////////////
//查找函数的实现: //
// 此函数用于查找已存电话本里面的电话//
//号码,除此以外,本函数还可以在已查找的电//
//话基础上对其进行操作:即修改该号码,或者//
//删除该号码 //
//////////////////////////////////////////
void search()
{
int key=1,choice; //定义key用于控制循环,choice用于存放选项
MyPhone me; //声明me这个对象用于临时存放输入
list <MyPhone> Link; //声明列表Link用于将电话本存入内存
ifstream infile("电话本1.txt",ios_base::in); //打开电话本文件
while (infile) //将其内容读入内存
{
infile>>me.name>>me.m_Number>>me.f_Number;
Link.push_back(me);
} ////////////////////////////////////
list <MyPhone> ::iterator p=Link.end(),q; //问题:读入会把最后一个对象读入2次//
q=p; // 因此只能再次将其清除 //
q--; ////////////////////////////////////
Link.erase(q);
cout<<"请输入需要查询的用户名:"<<endl; //输入需要查找的用户名
cin>>me.name;
p=Link.begin();
while(p!=Link.end()&&key!=0) //用while循环查找
{
if(strcmp((*p).name,me.name)==0) //如果存在则打印该用户
{
cout<<"您所查找的电话如下:"<<endl;
(*p).print();
key=0;
}
else
{
p++;
}
}
if(key==1) //如果不存在则打印"不存在"
{
cout<<"对不起,不存在你所查找的电话"<<endl;
}
else //如果存在则进入对该用户的操作
{
cout<<"请输入需要对此号码的操作:(正整数)"<<endl;
cout<<"(1-修改该用户 2-删除该用户 其他-返回)"<<endl;
cin>>choice;
switch (choice) //以switch选择输入的操作
{
case 1: //选择修改,则将新内容复制给原对象
cout<<"请输入修改后的用户名:"<<endl;
cin>>me.name;
strcpy((*p).name,me.name);
cout<<"请输入修改后的手机号:"<<endl;
cin>>me.m_Number;
strcpy((*p).m_Number,me.m_Number);
cout<<"请输入修改后的座机号:"<<endl;
cin>>me.f_Number;
strcpy((*p).f_Number,me.f_Number);
cout<<"修改已成功!"<<endl;
break;
case 2: //选择删除,则将当前对象删除
q=p;
Link.erase(q);
cout<<"该用户已被成功删除!"<<endl;
break;
default:
cout<<"返回初始页面"<<endl;
break;
}
ofstream infile("电话本1.txt",ios_base::out);//完成操作后,将列表存入文件
list <MyPhone> ::iterator p=Link.begin();
while (p!=Link.end())
{
infile<<setiosflags(ios_base::left)<<setw(15)<<(*p).name
<<setw(20)<<(*p).m_Number<<setw(20)<<(*p).f_Number<<endl;
p++;
}
}
infile.close(); //最后关闭文件
}
//输入用户函数的实现
void input()
{
int i=1; //定义i用于控制循环
MyPhone me; //声明me用于临时存放输入
list <MyPhone> Link; //声明Link列表,将文件读入内存
ifstream infile("电话本1.txt",ios_base::in); //打开文件
while(infile) //将其读入内存
{
infile>>me.name>>me.m_Number>>me.f_Number;
Link.push_back(me);
}
infile.close();
cout<<"请输入需要添加的用户名:"<<endl; //输入需要添加的用户名
cin>>me.name;
list <MyPhone> ::iterator p=Link.begin();
while(p!=Link.end()&&i!=0) //察看列表中是否有同名的对象
{
if(strcmp((*p).name,me.name)==0)
{
i=0;
}
else
{
p++;
}
}
if(i==0)
{
cout<<"对不起,已经有同名的用户存在"<<endl;//如果有则打印已有同名
}
else //否则继续输入手机号和座机号
{
cout<<"请输入需要添加的用户的手机号码:"<<endl;
cin>>me.m_Number;
cout<<"请输入需要添加的用户的座机号码:"<<endl;
cin>>me.f_Number;
ofstream infile("电话本1.txt",ios_base::app);//将输入追加到文件后
infile<<setiosflags(ios_base::left)<<setw(15)<<me.name
<<setw(20)<<me.m_Number<<setw(20)<<me.f_Number<<endl;
cout<<"用户已添加成功!"<<endl;
infile.close(); //关闭文件
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -