第14周项目2-用文件保存的学生名单
来源:互联网 发布:淘宝实拍保护怎么授权 编辑:程序博客网 时间:2024/05/01 14:53
问题描述:
文件score.dat中保存的是若干名学生的姓名和C++课、高数和英语成绩。
(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员。
[cpp] view plaincopyprint?
1. //定义学生类
2. class Student{
3. public:
4. //声明必要的成员函数
5. private:
6. string name;
7. double cpp;
8. double math;
9. double english;
10. double total;
11. static int stu_num; //学生人数,处理为类的静态成员合适
12. static double total_sum; //学生总分和
13. };
(2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。
[cpp] view plaincopyprint?
1. int main( )
2. {
3. Student stud[200],t; //stud[200]为保存数据的对象数组
4. string sname;
5. double total_avg;
6. int i=0;
7. //从文件score.dat中读入数据,保存到对象数组中
8.
9.
10. //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中
11. return 0;
12. }
代码:
#include <iostream>#include <fstream>#include<cstdlib>using namespace std;//定义学生类class Student{public: //声明必要的成员函数 Student() {} ~Student(); void input(); friend ostream& operator<<(ostream &out,Student &s); friend istream& operator>>(istream &in,Student &s); double gettotal() { return total; } static int getnum() { return stu_num; } static double getsum() { return total_sum; } bool pass() { if(cpp>=60&&math>=60&&english>=60) return true; else return false; }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(){ stu_num-=1; total_sum-=total;}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"; out<<s.cpp<<"\t"; out<<s.math<<"\t"; out<<s.english<<"\t"; out<<s.total; return out;}int main( ){ Student stud[200],t; //stud[200]为保存数据的对象数组 string sname; double total_avg; int i=0; //从文件score.dat中读入数据,保存到对象数组中 ifstream input; input.open("score.dat",ios::in); if(input.eof()) {cout<<"error:"<<endl; exit(1);} while(!input.eof()) input>>stud[i++]; input.close(); //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中 double ave=Student::getsum()/Student::getnum(); ofstream outfile("pass_score.dat"); if(!outfile) { cout<<"error"<<endl; exit(0); } else for(i=0;i<Student::getnum();i++) { if(stud[i].gettotal()>ave&&stud[i].pass()) outfile<<stud[i]<<endl; } outfile.close(); cout<<"ok"<<endl; return 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-用文件保存的学生名单】
- 第三章(TypedefList>
- android ctrl +鼠标左键直接打开xml文件
- 修改linux shell登陆欢迎信息
- Struts2 校验框架
- 事件/委托机制(event/delegate)(Unity3D开发之十七)
- 第14周项目2-用文件保存的学生名单
- 计算机图形学(二)中点画圆算法讲解与源代码
- 世界上第一台电子计算机为英国人发明
- 相关关系、因果关系、回归关系的区别
- Data Access Pattern - Knowledge Level Definition
- linux服务器下发送邮件
- 系统分析与设计课程项目总结
- 欢迎使用CSDN-markdown编辑器
- 每天一个linux命令(23):Linux 目录结构