用文件保存的学生名单
2015-08-18 22:07
211 查看
输入代码:
运行结果:
![](http://img.blog.csdn.net/20150818220358445?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
后台文件读取编写情况
score.dat
![](http://img.blog.csdn.net/20150818220559320?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
pass_score
/* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:sum123.cpp *作 者:林海云 *完成日期:2015年8月18日 *版 本 号:v2.0 *问题描述: 文件score.dat中保存的是若干名学生的姓名和C++课、高数和英语成绩。 (1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员。 (2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。 *程序输入:文件读取。 *程序输出:将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。 */ #include <fstream>//文件使用的必备文件 #include<iostream> #include<string> #include<cstdlib>//为了使用exit() using namespace std; class Student { public: Student() {}; ~Student(); double get_total(); static int get_stu_num(); static double get_total_sum(); friend istream& operator>>(istream &in, Student &s); friend ostream& operator<<(ostream &out, Student &s); bool pass(); private: string name; double cpp; double math; double english; double total; static int stu_num; //学生人数,处理为类的静态成员合适 static double total_sum; //学生总分和 }; int Student::stu_num = 0; double Student::total_sum = 0; Student::~Student() { total_sum-=total; stu_num--; } double Student::get_total() { return total; } int Student::get_stu_num() { return stu_num; } double Student::get_total_sum() { return total_sum; } istream& operator>>(istream &in, Student &s) { in>>s.name>>s.cpp>>s.math>>s.english; s.total=s.cpp+s.math+s.english; Student::stu_num++; //人数增加 Student::total_sum+=s.total;//总分增加 return in; } ostream& operator<<(ostream &out, Student &s) { out<<s.name<<'\t'<<s.cpp<<'\t'<<s.math<<'\t'<<s.english<<'\t'<<s.total; return out; } //返回是否所有课程全过了 bool Student::pass() { return cpp>=60 && math>=60 && english>=60; } int main( ) { Student stud[200],t; //stud[200]为保存数据的对象数组 string sname; double total_avg; int i=0,count=0; ifstream infile("score.dat",ios::in);//以输入的方式打开文件 if(!infile)//测试是否成功打开 { cerr<<"open error!"<<endl; abort(); } ofstream outfile("pass_score.dat",ios::out);//定义文件流对象,打开磁盘文件"pass_score.dat" if(!outfile) { cerr<<"Can’t open the file."<<endl; abort(); } while(!infile.eof())//判断否达文件尾部防止现文件读取错误 { infile>>stud[count]; count++; } infile.close(); //求总分平均并输出 if(Student::get_stu_num()>0) { total_avg=Student::get_total_sum()/Student::get_stu_num(); //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中 ofstream outfile("pass_score.dat",ios::out); if(!outfile) { cerr<<"open error!"<<endl; abort(); } for(i=0; i<Student::get_stu_num(); i++) { if(stud[i].get_total()>total_avg&&stud[i].pass()) { outfile<<stud[i]<<endl; } } outfile.close(); cout<<"请到文件pass_score.dat中查看名单:"<<endl; } return 0; }
运行结果:
后台文件读取编写情况
score.dat
pass_score
相关文章推荐
- java.lang.AbstractMethodError: com.mysql.jdbc.PreparedStatement.setCharacterStream(ILjava/io/Reader;
- exeScope软件修改exe或dll文件资源-20150818
- UIP协议栈三
- 2010辽宁省赛 NBUT 1222 English Game【字典树+DP】
- Unity Shader 学习笔记 (七) 根据切线和法线方向设置模型颜色shader
- App工程结构搭建:几种常见Android代码架构分析
- 求两个用链表表示的整数的和
- App工程结构搭建:几种常见Android代码架构分析
- JAVA中实现加法器
- 数据库连接池
- 【GDOI 2013模拟】总结
- HDU 5402 (构造题) Travelling Salesman Problem
- 2015 7 3 java核心技术卷一 7-10章 图形,事件处理,Swing组件和应用程序部署
- spmio内网源部署
- date用法
- 利用Linux LiveCD迁移Windows到SSD硬盘
- 如何实现Siri中的波纹动画
- Android应用选择器针对指定Action屏蔽指定应用
- [leetcode] Binary Tree Paths
- android 用Canvas 编辑图片报java.lang.IllegalStateException错的解决办法