C++试题精选----I/O----NO.3
Posted 敲代码的xiaolang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++试题精选----I/O----NO.3相关的知识,希望对你有一定的参考价值。
希望c++的入门者们闲暇之余,可以浏览思考,有什么问题欢迎留言或者私信。
I/O----NO.3
建立某班同学通讯录二进制文件,文件中的每个记录包括姓名、电话号码、QQ号、E-mail和家庭住址
代码演示
#include<iostream>
#include<fstream>//文件流头文件
#include<string>
#include <iomanip>
using namespace std;
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;//得到地点
}
};
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();//关闭文件
}
return 0;
}
本代码写的比较失败,虽然演示示例里数据都做到了对齐,
但是当输入的位数比较多时,就会出现错位,笔者才疏学浅,希望大佬们能找到解决方法。
运行结果
有问题私聊博主或者在下面留言,如果有更好的解法也请留言,欢迎大家讨论,共同进步,一起学习。
“C++是面向对象编程,我也想面向对象编程。”
以上是关于C++试题精选----I/O----NO.3的主要内容,如果未能解决你的问题,请参考以下文章
华为OD机试 - 最小施肥机能效(Java) | 机试题+算法思路+考点+代码解析 2023