第14周 【项目2-用文件保存的学生名单】
来源:互联网 发布:孤岛危机1优化补丁 编辑:程序博客网 时间:2024/05/01 17:11
【项目2-用文件保存的学生名单】
文件score.dat中保存的是若干名学生的姓名和C++课、高数和英语成绩。
(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员。
(2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。
讨论:学生人数和总分的另外一种解决方法是用全局变量。但这两种信息与学生有关,是学生类的“属性”,成为学生类的数据成员合适;这两种信息由学生整体决定,用作静态数据成员合适。如不理解这样设计的理由,复习课程前面的相关内容。
代码:
#include <iostream>#include <fstream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;class Student{public: //声明必要的成员函数 Student(){}; ~Student(){ total_sum-=total; stu_num--; } friend istream& operator>>(istream& in,Student& a); friend ostream& operator<<(ostream& out,Student& a); static int get_stu_num(){return stu_num;} static double get_total_sum(){return total_sum;} double get_total(){return total;} 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; a.pass=(a.cpp>=60&&a.math>=60&&a.english>=60); 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<<'\12';}int main(){ Student stud[200],t; //stud[200]为保存数据的对象数组 string sname; double total_avg; int i=0; //从文件score.dat中读入数据,保存到对象数组中 fstream myfile("score.dat",ios::in); if(!myfile){ cerr<<"open error!\n"; exit(1); } while(!myfile.eof()){ myfile>>stud[i++]; } myfile.close(); total_avg=Student::get_total_sum()/Student::get_stu_num(); ofstream outfile("pass.dat",ios::out); if(!outfile){ cerr<<"open error!"<<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(); cout<<"运行完成请到相关文件查看!\n"; //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中 return 0;}
运行结果:
0 0
- 第14周项目2用文件保存的学生名单
- 第14周项目2-用文件保存的学生名单
- 第14周 【项目2-用文件保存的学生名单】
- 第14周项目2-用文件保存的学生名单
- 第14周项目2-用文件保存的学生名单
- 第14周项目2-用文件保存的学生名单
- 第13周-项目2-用文件保存的学生名单
- 第14周-输入输出流,文本文件-项目2-用文件保存的学生名单
- 第14周上机实践项目2——用文件保存的学生名单
- 2015-第14周项目2-用文件保存的学生名单
- 第15周 项目二 用文件保存的学生名单
- 第14周 项目二-用文件保存学生名单
- 第15周 项目2 用文件保存学生名单
- 第16周-项目2-用文件保存学生名单
- 第16周项目2-用文件保存学生名单
- 项目2 - 用文件保存的学生名单
- C++第15周(春)项目2 - 用文件保存的学生名单
- 15周【项目2-用文件保存的学生名单】
- Android StateMachine解析( 1 )
- 预测
- LeetCode 107 Binary Tree Level Order Traversal II
- objective-c集合类
- stm32库函数学习篇---NVIC与外部中断
- 第14周 【项目2-用文件保存的学生名单】
- Shiro的helloword
- WAMPServer自拟定端口号
- 面对死亡
- IOS的forin循环和for循环
- 看了极光推送技术原理的几点思考
- FaceBook/infer-分析C项目
- DSP中两个延时函数的区别(转)
- TCP连接的建立与释放