第13周-项目2-用文件保存的学生名单
来源:互联网 发布:720ccav新域名是什么 编辑:程序博客网 时间:2024/05/01 09:54
问题及代码:
/* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:File.cpp *作 者:单昕昕 *完成日期:2015年6月8日 *版 本 号:v1.0 *问题描述:文件score.dat中保存的是若干名学生的姓名和C++课、高数和英语成绩。(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员。 (2)用对象数组进行存储学生的成绩,读入成绩并计算总分;将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。*程序输入:文件读取。*程序输出:将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中。*/ #include <iostream>#include <cstdio>#include <cstdlib>//为了使用exit()#include <fstream>using namespace std;//定义学生类class Student{public: //声明必要的成员函数 Student() {}; double get_total(); static int get_stu_num(); static double get_total_sum(); bool pass(); friend istream& operator>>(istream &input, Student &s); friend ostream& operator<<(ostream &output, Student &s);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;double Student::get_total(){ return total;}int Student::get_stu_num(){ return stu_num;}double Student::get_total_sum(){ return total_sum;}bool Student::pass(){ return cpp>=60&&math>=60&&english>=60;}istream& operator>>(istream &input,Student &s){ input>>s.name>>s.cpp>>s.math>>s.english; s.total=s.cpp+s.math+s.english; s.stu_num++; s.total_sum+=s.total; return input;}ostream &operator<<(ostream &output,Student &s){ output<<s.name<<'\t'<<s.cpp<<'\t'<<s.math<<'\t'<<s.english<<'\t'<<s.total; return output;}int main( ){ Student stud[200],t; //stud[200]为保存数据的对象数组 string sname; double total_avg; int i=0,count=0; //从文件score.dat中读入数据,保存到对象数组中 ifstream infile("score.dat",ios::in); if(!infile) { cout<<"Can’t open the file."<<endl; abort(); } ofstream outfile("pass_score.dat",ios::out);//定义文件流对象,打开磁盘文件"pass_score.dat" if(!outfile) { cout<<"Can’t open the file."<<endl; abort(); } while(!infile.eof()) { infile>>stud[count]; count++; } infile.close(); total_avg=Student::get_total_sum()/Student::get_stu_num(); //总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中 for(i=0; i<count; i++) { if(stud[i].get_total()>total_avg&&stud[i].pass()) { outfile<<stud[i]<<endl; } } outfile.close(); cout<<"The datas have been writen to file. "<<endl; return 0;}
运行结果:
用文件保存的学生名单。
静态数据成员。
学习心得:
静态数据成员。。又。。忘。。了。。
成员函数很碎找不到头绪,还是参考贺老师的才有思路然后做出来的。。
0 0
- 第13周-项目2-用文件保存的学生名单
- 第14周项目2用文件保存的学生名单
- 第14周项目2-用文件保存的学生名单
- 第14周 【项目2-用文件保存的学生名单】
- 第14周项目2-用文件保存的学生名单
- 第14周项目2-用文件保存的学生名单
- 第14周项目2-用文件保存的学生名单
- 第15周 项目二 用文件保存的学生名单
- 第15周 项目2 用文件保存学生名单
- 第16周-项目2-用文件保存学生名单
- 第16周项目2-用文件保存学生名单
- 项目2 - 用文件保存的学生名单
- C++第15周(春)项目2 - 用文件保存的学生名单
- 第14周-输入输出流,文本文件-项目2-用文件保存的学生名单
- 第14周上机实践项目2——用文件保存的学生名单
- 2015-第14周项目2-用文件保存的学生名单
- 15周【项目2-用文件保存的学生名单】
- 第十五周项目2-用文件保存的学生名单
- Combination Sum II
- C#中static void Main(string[ ] args)中的作用及解释
- Android-TextView
- SQL Server ISNULL函数和Coalesce函数替换空值的区别
- iOS开发网络数据之AFNetworking使用2.0和2.5
- 第13周-项目2-用文件保存的学生名单
- Gabor变换
- shell中的${},##和%%的使用
- Spring AOP 详解
- YUM 和 RPM 总结
- Linux root直接登录
- char 型变量中能不能存贮一个中文汉字?为什么?
- hdu1050——Moving Tables
- 开源图计算框架GraphLab介绍