C++试题精选----I/O----NO.4
Posted 敲代码的xiaolang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++试题精选----I/O----NO.4相关的知识,希望对你有一定的参考价值。
希望c++的入门者们闲暇之余,可以浏览思考,有什么问题欢迎留言或者私信。
I/O----NO.4(在NO.3的基础上进行扩展)
从键盘上输入学生的QQ号,再由NO.3所建立的通讯录文件中查找该同学的资料。查找成功时,显示其所有通迅信息。
代码演示
#include<iostream>
#include<fstream>//文件流头文件
#include<string>
#include <iomanip>
using namespace std;
static int n=0;
class student
{
private:
string QQ;
string name;
string phone;
string E_mail;
string location;
public:
void setQQ()
{
cout<<"输入QQ号:";
cin>>QQ;//输入QQ
}
void setname()
{
cout<<"输入名字:";
cin>>name;//输入名字
}
void setphone()
{
cout<<"输入电话号码:";
cin>>phone;//输入电话号码
}
void setE_mail()
{
cout<<"输入e_mail: ";
cin>>E_mail;//输入e_mail
}
void setlacation()
{
cout<<"输入地点:";
cin>>location;//输入地点
}
string getQQ()
{
return QQ;//得到QQ
}
string getname()
{
return name;//得到名字
}
string getphone()
{
return phone;//得到电话号码
}
string getE_mail()
{
return E_mail;//得到e_mail
}
string getlocation()
{
return location;//得到地点
}
void hanshu()
{
string _QQ;
ifstream file("student.dat",ios::binary);
if(!file)
{
cout<<"File cannot be opened"<<endl;
return;
}
student one;
file.seekg(0);
cout<<"输入查询QQ:"<<endl;
cin>>_QQ;
file.read((char*)&one,sizeof(one));
while(file)
{
if(one.QQ==_QQ)
cout<<" 邮箱:"<<one.E_mail<<" QQ: "<<one.getQQ() <<" 名字: "<<one.getname() <<" 手机号:"<<one.getphone() <<" 地点: "<<one.getlocation() <<endl;
file.read((char*)&one,sizeof(one));
}
file.close();
}
};
int main()
{
ofstream outfile("student.dat",ios::binary);
if(!outfile)
{
cout<<"File student.dat cannot be opened."<<endl;
return 0;
}
student stud[100];
char ch;
int i=0;
while(1)
{
cout<<"\\n你想输入更多记录吗?(y/n)?";
cin>>ch;
if(ch=='n'||ch=='N')
break;
i=i+1;
stud[i].setQQ();//输入QQ
stud[i].setname();//输入名字
stud[i].setphone();//输入电话号码
stud[i].setE_mail();//输入电子邮件
stud[i].setlacation();//输入地点
outfile.write((char*)&stud[i],sizeof(student));
}
outfile.close();//关闭文件
cout<<"******输入结束******"<<endl;
cout<<"\\n你想查看吗?(y/n)";
cin>>ch;
if(ch=='Y'||ch=='y')
{
ifstream infile("student.dat",ios::binary);
if(!infile)
{
cout<<"File student.dat cannot be opened."<<endl;
return 0;
}
cout<<"名字"<<"\\t"<<setw(20)<<"邮箱"<<"\\t"<<setw(20)<<"地点"<<"\\t"<<setw(20)<<"QQ"<<"\\t"<<setw(20)<<"手机号码"<<endl;
i=1;
infile.read((char*)&stud[i],sizeof(student));
while(infile)
{
cout<<stud[i].getname()<<"\\t";
cout<<setw(20)<<stud[i].getE_mail()<<"\\t";
cout<<setw(20)<<stud[i].getlocation()<<"\\t";
cout<<setw(20)<<stud[i].getQQ()<<"\\t";
cout<<setw(20)<<stud[i].getphone()<<endl;
i=i+1;
infile.read((char*)&stud[i],sizeof(student));
}
infile.close();//关闭文件
}
student s;
s.hanshu();
return 0;
}
运行结果
有问题私聊博主或者在下面留言,如果有更好的解法也请留言,欢迎大家讨论,共同进步,一起学习。
“C++是面向对象编程,我也想面向对象编程。”
以上是关于C++试题精选----I/O----NO.4的主要内容,如果未能解决你的问题,请参考以下文章
华为OD机试 - 最小施肥机能效(Java) | 机试题+算法思路+考点+代码解析 2023