C++第17周项目1 - 二进制学生成绩文件

简介: 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/9125337【项目1】学生成绩处理:保存为二进制文件ASCII文件score.dat中保存的是100名学生的学号、姓名和C++课、高数和英语成绩。(1)定

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/9125337


【项目1】学生成绩处理:保存为二进制文件
ASCII文件score.dat中保存的是100名学生的学号、姓名和C++课、高数和英语成绩。
(1)定义学生类,其中包含学号、姓名、C++课、高数和英语成绩及总分数据成员,成员函数根据需要确定。
(2)读入学生的成绩,并求出总分,用对象数组进行存储。
(3)将所有数据保存到一个二进制文件binary_score.dat中,最后通过键盘输入你的信息,并写入到文件中(咱不谦虚,三科全100分,也求个好运)。
(4)为验证输出文件正确,再将binary_score.dat中的记录逐一读出到学生对象中并输出查看。

参考解答:

#include <fstream>
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;

//(一)定义学生类
class Student
{
public:
	Student(){};
	Student(int n, string nam, double c, double m, double e):num(n),name(nam),cpp(c),math(m),english(e){total=c+m+e;}
	void set_value(int n,string nam, double c, double m, double e);
	string get_name(){return name;}
	double get_cpp(){return cpp;}
	double get_math(){return math;}
	double get_english(){return english;}
	double get_total(){return total;}
	void set_cpp(double c){cpp=c;}
	void set_math(double m){math=m;}
	void set_english(double e){english=e;}
	void set_total(double t){total=t;}
	friend  ostream& operator<<(ostream&, Student&);
private:
	int num;
	string name;
	double cpp;
	double math;
	double english;
	double total;
};

void Student::set_value(int n,string nam, double c, double m, double e)
{
	num=n;
	name=nam;
	cpp=c;
	math=m;
	english=e;
	total=c+m+e;
}

ostream& operator<<(ostream& out, Student& s)
{
	out<<s.num<<" "<<s.name<<" "<<s.cpp<<" "<<s.math<<" "<<s.english<<" "<<s.total<<endl;
	return out;
}

int main( )
{
	Student stud[100]; //stud[100]为保存数据的对象数组
	int i,n;
	string sname;
	double scpp, smath, senglish;

	//(二)读入学生的成绩,并求出总分,用对象数组进行存储。
	ifstream infile("score.dat",ios::in);  //以输入的方式打开文件,ASCII文件
	if(!infile)       //测试是否成功打开
	{
		cerr<<"open error!"<<endl;
		exit(1);
	}
	for(i=0;i<100;i++)
	{
		infile>>n>>sname>>scpp>>smath>>senglish;
		stud[i].set_value(n,sname, scpp, smath, senglish);
	}
	infile.close();

	//(三)将所有数据保存到一个二进制文件binary_score.dat中
	ofstream outfile("binary_score.dat",ios::out|ios::binary);
	if(!outfile)
	{
		cerr<<"open error!"<<endl;
		exit(1);
	}
	for(i=0;i<100;i++)
	{
		outfile.write((char*)&stud[i], sizeof(stud[i]));
	}
	//(三)最后在文件中写入你自己的各科成绩
	cout<<"输入你自己的信息:";
	cin>>n>>sname>>scpp>>smath>>senglish;
	Student me(n,sname, scpp, smath, senglish);
	outfile.write((char*)&me, sizeof(me));
	outfile.close();

	//(四)为验证输出文件正确,再将binary_score.dat中的记录逐一读出到学生对象中并输出查看。
	Student s;
	ifstream infile2("binary_score.dat",ios::in|ios::binary);
	if(!infile2)
	{
		cerr<<"open error!"<<endl;
		exit(1);
	}
	while(true)
	{
		infile2.read((char*)&s, sizeof(s));
		if(infile2.eof()) break;
		cout<<s;
	}
	infile2.close();
	return 0;
}

==================== 迂者 贺利坚 CSDN博客专栏=================

|==  IT学子成长指导专栏  专栏文章分类目录(不定期更新)    ==|

|== C++ 课堂在线专栏   贺利坚课程教学链接(分课程年级)   ==|

======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======


目录
相关文章
WK
|
10天前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
32 1
|
28天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
234 3
|
1月前
|
Linux C++
Linux c/c++文件的基本操作
在Linux环境下使用C/C++进行文件的基本操作,包括文件的创建、写入、读取、关闭以及文件描述符的定位。
19 0
Linux c/c++文件的基本操作
|
2月前
|
C++ 内存技术
[转]Visual C++内嵌swf文件并播放
[转]Visual C++内嵌swf文件并播放
|
2月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
39 3
|
1月前
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
42 0
|
1月前
|
Linux C++
Linux c/c++文件移动
这篇文章介绍了在Linux环境下,使用C/C++语言通过命令方式和文件操作方式实现文件移动的方法。
63 0
|
2月前
|
Linux API C++
超级好用的C++实用库之文件目录操作
超级好用的C++实用库之文件目录操作
28 0
|
2月前
|
JavaScript 前端开发 测试技术
一个google Test文件C++语言案例
这篇文章我们来介绍一下真正的C++语言如何用GTest来实现单元测试。
19 0
|
3月前
|
存储 算法 C++
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】
【C++】C++ QT实现Huffman编码器与解码器(源码+课程论文+文件)【独一无二】