第17周任务1(二进制文件的操作)
来源:互联网 发布:数据库系统原理教程 编辑:程序博客网 时间:2024/06/08 14:44
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称: * 作 者: 臧鹏 * 完成日期: 2012 年 6月 11 日* 版 本 号: 001 * 对任务及求解方法的描述部分* 输入描述: * 问题描述: ASCLL文件score.dat中保存的是100名学生的姓名和C++课,英语课,高数课成绩。1,定义学生类,其中包括姓名,C++课,高数课和英语成绩及总成绩,均分数据成员,成员函数根据需要确定。2,读入学生的成绩,并求出总分,用对象数组进行储存。3,将所有的数据保存到一个二进制文件binary_score.dat中,最后在文件中写入你自己的各科成绩4,为验证输出的文件正确,再将binary_score.dat中的记录逐一读出到学生对象中并输出查看* 程序输出: * 程序头部的注释结束*/#include<iostream> #include <fstream> #include<string>using namespace std; class Student {public: Student(void){} Student(string nam, double c, double m, double e, double all, double avs):name(nam),cpp(c), math(m), english(e), total(all), averagescore(avs){total=c+m+e;} void show(); friend void cin_score(Student stud[]); //此处使用友元函数的作用是为了后面对私有数据成员的操作简便,不必多次调用get和set函数了 friend void out_score(Student stud[]); private: string name; double cpp; double math; double english; double total; //总分 double averagescore; //平均分}; void Student::show() { cout << name << '\t' << cpp << '\t' << math << '\t' << english << '\t' <<total<< '\t' << averagescore << endl; } void cin_score(Student stud[]) //进行读入操作{ ifstream infile("score.dat",ios::in); if(!infile) {cerr<<"open score.dat error!"<<endl; abort( ); } for(int i = 0; i < 101; i++) { if(i == 100) { stud[i].name= "臧鹏"; stud[i].cpp = 100; stud[i].math = 100; stud[i].english = 100; } else //并对其求总分和平均值 { infile >> stud[i].name >> stud[i].cpp >> stud[i].math >> stud[i].english; } stud[i].total = stud[i].cpp + stud[i].math + stud[i].english; stud[i].averagescore = stud[i].total / 3; } infile.close( ); } void out_score(Student stud[]) //读出操作{ ofstream outfile("binary_score.dat",ios::binary); if(!outfile) { cerr<<"open binary_score.dat error!"<<endl; abort( ); } for(int i = 0; i < 101; ++ i) { outfile.write((char *) &stud[i], sizeof(stud[i])); stud[i].show(); } outfile.close( ); } int main( ) { Student stud[101]; cin_score(stud); out_score(stud); system("pause"); return 0; }
经验积累:
整个程序的思路不过是读入,进行数据操作,然后读出。所以用课本中的一个程序,主函数中建一个对象后一个cin_score一个out_score就行了,程序中对私有数据成员又多次的访问,所以用多个set和get函数不是很方便,所以这可以利用友元函数的特点,把函数建成友元的,可以简化程序
- 第17周任务1(二进制文件的操作)
- 17周任务一 score 二进制文件
- 第14周任务1(建立专门的数组类处理有关数组的操作)
- 第14周-阅读项目1-二进制文件的读写
- 第14周-阅读项目4-二进制文件和字符串流操作的一般方法
- 图像二进制文件的操作(ASP.NET)
- C#的二进制文件操作
- 对二进制文件的操作
- C++------二进制文件的操作
- 二进制文件的IO操作
- C#的二进制文件操作
- 二进制文件的操作
- 二进制文件的读写操作
- 二进制文件的操作
- 文件操作(二进制文件)
- 第十七周实验报告(任务一)【二进制文件】
- 第15周 程序阅读-二进制文件及文件的读取1
- 二进制文件操作,自己参考的
- 通讯录的uri
- N元语法模型的数据稀疏问题解决方法之一:Good-Turing平滑
- Linux下常用的故障排查命令行
- ubuntu 12.04 x64 开启 root 登录,并解决root用户后没有声音的问题
- break return continue 区别
- 第17周任务1(二进制文件的操作)
- 生活角度学习数据库
- 从项目始末谈面向对象——领域分析、需求分析、分析模型、设计、实现
- web worker--学习笔记
- 20120611我是C++程序员吗
- 每天一点正则表达式积累(六)
- ViewPager的应用以及禁用滑向下一页
- Windows的消息机制
- 【ARM基础知识】ARM寻址方式