用文件保存的学生名单
- /*
- *Copyright (c) 2016,烟台大学计算机学院
- *All rights reserved.
- *文件名称:main.cpp
- *作 者:李德彪
- *完成时间:2016年6月23日
- *版 本 号:v1.0
- *
- *问题描述:项目-用文件保存的学生名单。
- *输入描述:无。
- *程序输出:无。
- */
- #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;
- }
用文件保存的学生名单相关推荐
- C++第15周(春)项目2 - 用文件保存的学生名单
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 本程序中须要的相关文件.请到http://pa ...
- 第十四周 【项目2-用文件保存的学生名单】若干名学生的学号 姓名和C++课、高数和英语成绩
运行代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年6月3 ...
- 批量生成HTML文件,通过 学生名单(学号、姓名) 与 博客名单(姓名、网址)
批量生成HTML文件,通过 学生名单(学号.姓名) 与 博客名单(姓名.网址) 构想 很早就想写这个程序了,知道开学3周多了,才下定决心写完. 功能:通过 学生名单(学号.姓名) 与 博客名单(姓名. ...
- Java读写txt文件案例-统计学生名单
Java读写txt文件案例-统计学生名单,具体应用请看代码中的实现原理. package shuzu; import java.io.BufferedReader; import java.io.Bu ...
- 在“D:/mydat“目录下有一个学生名单文件(文本)“student2018.txt“,里面记载了若干学生信息, 每个学生信息单独一行,每行信息共有五列,每列之间用逗号分开, 其每列含义按顺序是:学
在"D:/mydat"目录下有一个学生名单文件(文本)"student2018.txt",里面记载了若干学生信息, 每个学生信息单独一行,每行信息共有五列,每列 ...
- Python 基于tkinter模块的GUI可视化学生成绩管理系统实现(含文件保存)
学生成绩管理系统 1. 标准模块导入 2.完整代码 3.文件保存模块 作者:潇 版本:1.0 面向对象,带日志,带异常处理的,带密码加密 第一次执行会生成数据库和csv文件,以后添加的数据会自动保存到 ...
- C语言学生学籍管理系统源程序|用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。(用文件保存) 功能要求: (1) 系统以菜单方式工作。 (2) 登记学生的
学生学籍管理系统 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作.(用文件保存) 功能要求: (1) 系统以菜单方式工作. (2) 登记学生的学号,姓名, ...
- 用C语言实现一个学生成绩管理系统 实现学生信息管理。包括:录入、查询、排序等功能。 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3…) ,利用菜单可以循环实现各个功能。
用C语言实现一个学生成绩管理系统 题目: 学生成绩管理系统 功能: 实现学生信息管理.包括:录入.查询.排序等功能. 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3-) ,利用 ...
- c语言文件读写_学生信息管理系统(C语言\单向链表\文件读写)
最近在复习数据结构,早上刚复习完链表,就想到了学生信息管理系统这个经典的大作业,然后呢,花了一早上加一中午的功夫给重新实现了一遍,里面可能会有写的不好的地方,但也代表了我实现的一些想法,在这里我将分享 ...
最新文章
- MyBatis框架学习DAY_01:概念/创建运行流程
- 【Python】强烈建议你学这 3 个 Python AutoEDA 工具包!
- php 值不进行解码,无法解码PHP中的JSON值
- Android之解决Android10.0通过热点名字和密码连接指定热点网络不能通信问题(2种解决办法)
- 博客导读(09.3.21)
- 设计模式的七大设计原则:其四:里氏替换原则
- stm32 JTAG和SWD的使用区别简要介绍
- 概率论经典问题之匹配问题
- “(null)” is of a model that is not supported by this version of Xcode. Ple
- 【oracle工具】plsqldev美化规则文件详细解释(关键字大写,标识符小写等规则)
- 分享靠写代码赚钱的一些门路
- 目标跟踪算法--Camshift 和Meanshift
- 非正式纳新题解(C语言)
- 龙星镖局 | 2015 机器学习颁奖礼
- win10 右下角网络图标消失解决方案
- 群晖7.1.0万兆网络实测
- html移动端登录界面
- 三相变流器两相静止坐标下无源阻尼PR控制
- 花钱学Python其实没必要的,自学宝藏在这里
- 谁没写过几封辞职信VS什么样的人有…