/*
*Copyright (c) 2015,烟台大学计算机学院
*All rights reserved.
*文件名称:time.cpp
*作者:刘天恩
*完成时间:2015年3月14号
*版本号:v1.0
*问题描述:文件score.dat中保存的是若干名学生的姓名和C++课、高数和英语成绩。
定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员。
*输入描述:无
*程序输出:输出学生信息
*/
#include <fstream>
#include<iostream>
#include<string>
#include<cstdlib>
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);  //可以定义input函数替代
friend ostream& operator<<(ostream &out, Student &s); //可以定义display函数替代
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";
out<<s.cpp<<"\t";
out<<s.math<<"\t";
out<<s.english<<"\t";
out<<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;
//将文件中的数据读入到对象数组中
ifstream infile("score.dat",ios::in);  //以输入的方式打开文件
if(!infile)       //测试是否成功打开
{
cerr<<"open error!"<<endl;
exit(1);
}
while(!infile.eof())
{
infile>>stud[i++];   //读数据中,人数等信息自动地记录到静态成员中,见运算符重载的实现
}
infile.close();
//求总分平均并输出
if(Student::get_stu_num()>0)
{
total_avg = Student::get_total_sum() / Student::get_stu_num();
ofstream outfile("pass_score.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<<"请到文件pass_score.dat中查看名单:"<<endl;
}
return 0;
}

运行结果:

第十四周 项目2-用文件保存的学生名单相关推荐

  1. C++第15周(春)项目2 - 用文件保存的学生名单

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 本程序中须要的相关文件.请到http://pa ...

  2. 第十四周 【项目2-用文件保存的学生名单】若干名学生的学号 姓名和C++课、高数和英语成绩

    运行代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年6月3 ...

  3. 用文件保存的学生名单

    /* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作    者:李德彪 *完成时间:2016年6月23日 * ...

  4. 批量生成HTML文件,通过 学生名单(学号、姓名) 与 博客名单(姓名、网址)

    批量生成HTML文件,通过 学生名单(学号.姓名) 与 博客名单(姓名.网址) 构想 很早就想写这个程序了,知道开学3周多了,才下定决心写完. 功能:通过 学生名单(学号.姓名) 与 博客名单(姓名. ...

  5. Java读写txt文件案例-统计学生名单

    Java读写txt文件案例-统计学生名单,具体应用请看代码中的实现原理. package shuzu; import java.io.BufferedReader; import java.io.Bu ...

  6. 第二十四周项目4-猴子选大王(约瑟夫问题)

    一群猴子,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈.从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王.输入m和n, ...

  7. 项目class第十四周项目一:动物学叫

    在改章节中,我们主要介绍项目class的内容,自我感觉有个不错的建议和大家分享下 /* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * ...

  8. 第十四周 项目2 - 用哈希法组织关键字

    /* * Copyright (c)2017,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:项目2.cbp * 作 者:孙仁圆 * 完成日期:2017年12 ...

  9. 第十四周 项目1 - 验证算法

    /* * Copyright (c)2017,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:项目1.cbp * 作 者:孙仁圆 * 完成日期:2017年12 ...

  10. 第十四周项目2-带姓名的成绩单

    设score[8]数组中存储8名同学的C++成绩,增加一个数组string name[8]并赋初值,表示同学们的姓名.这两个数组中,每名同学的姓名与成绩的下标要始终保持一致. (1)输出按成绩排序后的 ...

最新文章

  1. java中separator_java - File.separator和路径中的斜杠之间的区别
  2. 在指定文件夹下打开Jupyter Notebook
  3. org.xml.sax.SAXParseException: Content is not allowed in trailing section
  4. 师从施一公,4年8篇CNS,西湖大学博士后获世界最具潜力女科学家奖
  5. Android实现自定义相册,在Android Gallery App中创建自定义相册
  6. ***经验谈之SA权限***的感悟
  7. lcl手术和飞秒区别_想知道自己适合哪种近视手术?Mark!
  8. java.lang.OutOfMemoryError内存溢出定位
  9. (转)ETL利器Kettle实战应用解析系列一【Kettle使用介绍】
  10. uboot研读笔记 | 14 - uboot启动流程分析(2016.03版本)
  11. html5妇女节游戏,适合妇女节玩的小游戏
  12. JavaScript编程精解(笔记1)
  13. 华为储存空间管理器可以删除吗_Cx File Explorer 免费清爽无广告的安卓手机文件管理器 (支持局域网共享/FTP/WebDAV)...
  14. dotnet OpenXML 读取 PPT 主序列进入退出强调动画
  15. PMCAFF转载——网易云课堂产品研习
  16. Win10 用户管理中无法删除唯一的administrators组用户
  17. 并发编程系列之AQS实现原理
  18. 你所需要的java基础提升篇大总结
  19. 【JQuery】使用JQuery实现城市两级或三级联动(下拉菜单)
  20. 噼里啪智能·财税产品技术 VP 张芳:DI 和 AI 双引擎为智能财税保驾护航

热门文章

  1. AddressBook/AddressBookUI
  2. 阿里八八“好记”测试报告
  3. linux教程试卷_linux基础教程试卷及答案.doc
  4. Java GUI实现简单弹珠游戏(新手入门练习项目)
  5. GNN教程:采样模型GraphSage理解(工业上图模型的雏形)
  6. 如何定制zencart模板
  7. SpringBoot——检索
  8. 3DMAX的vray自发光材质为什么渲出来是黑的?
  9. 各行业的英语术语(绝对精华 2)
  10. 时间开关的工作原理、安装方法及其应用特点