第十四周项目二:用文件保存的学生名单
2015-06-04 17:21
309 查看
问题及代码:
运行结果:
学习心得:
这个代码纠结了好久,文件是score.dat的时候,怎么都运行不出来,改成score.txt就运行出来了。
/* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: 用文件保存的学生名单 .cpp *作 者:白云飞 *完成日期:2015年6月8日 *版 本 号:v1.0 * *问题描述: (1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员。 (2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。 *程序输入:文件输入姓名、C++课、高数和英语成绩 *程序输出:写入文件及格的同学信息 */ #include <iostream> #include <cstdlib> #include <fstream> #include <cstring> using namespace std; class Student { public: //声明必要的成员函数 Student() {}; ~Student() { total_sum-=total; stu_num--; } double get_total() { return total; } static int get_stu_num() { return stu_num; } static double get_total_sum() { return total_sum; } friend istream& operator>>(istream &in, Student &a); friend ostream& operator<<(ostream &out, Student &a); 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; istream& operator>>(istream &in, Student &a) { in>>a.name>>a.cpp>>a.math>>a.english; a.total=a.cpp+a.math+a.english; Student::stu_num++; Student::total_sum+=a.total; return in; } ostream& operator<<(ostream &out, Student &a) { out<<a.name<<"\t"<<a.cpp<<"\t"<<a.math<<"\t"<<a.english<<"\t"<<a.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; //从文件score.dat中读入数据,保存到对象数组中 fstream file; file.open("score.txt",ios::in); if(!file) { cout<<"score.txt can’t open."<<endl; exit(1); } while(!file.eof()) { file>>stud[i++]; } file.close(); //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中 if(Student::get_stu_num()>0) { total_avg = Student::get_total_sum() / Student::get_stu_num(); ofstream outfile("pass_score.txt",ios::out); if(!outfile) { cerr<<"pass_score.txt can’t open."<<endl; exit(1); } 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(); } return 0; }
运行结果:
学习心得:
这个代码纠结了好久,文件是score.dat的时候,怎么都运行不出来,改成score.txt就运行出来了。
相关文章推荐
- sql 常用的 基础函数
- yii2总结
- 让query_posts() 或 wp_query()同时使用多个 meta_key与 meta_value 来查询多个自定义字段与值
- 通过JS语句判断WEB网站的访问端是电脑还是手机
- linux驱动之模块化驱动Makefile
- MFC拆分字符串
- 开源一个工作计划管理小项目
- epoll EPOLLONESHOT 事件
- ListView阻尼效果
- javascript核心概念
- RDIFramework.NETV2.9版本 Web新增至14套皮肤风格+三套界面组合(共42套皮肤组合)
- getopt函数
- C/C++中strlen和sizeof的深度认识
- 一眨眼已进入五月
- asp.net实现编辑器功能
- Linux学习笔记(一)
- C#中chart控件的用法
- Android Studio集成SVN报错:can't use subversion command line client : svn
- OpenGL ES2.0基础
- Gradle学习系列之三——读懂Gradle语法