1. /*
  2. *Copyright (c) 2016,烟台大学计算机学院
  3. *All rights reserved.
  4. *文件名称:main.cpp
  5. *作    者:李德彪
  6. *完成时间:2016年6月23日
  7. *版 本 号:v1.0
  8. *
  9. *问题描述:项目-用文件保存的学生名单。
  10. *输入描述:无。
  11. *程序输出:无。
  12. */
  13. #include <fstream>
  14. #include<iostream>
  15. #include<string>
  16. #include<cstdlib>
  17. using namespace std;
  18. //定义学生类
  19. class Student
  20. {
  21. public:
  22. Student() {};
  23. ~Student();
  24. double get_total();
  25. static int get_stu_num();
  26. static double get_total_sum();
  27. friend istream& operator>>(istream &in, Student &s);  //可以定义input函数替代
  28. friend ostream& operator<<(ostream &out, Student &s); //可以定义display函数替代
  29. bool pass();
  30. private:
  31. string name;
  32. double cpp;
  33. double math;
  34. double english;
  35. double total;
  36. static int stu_num;  //学生人数,处理为类的静态成员合适
  37. static double total_sum; //学生总分和
  38. };
  39. int Student::stu_num = 0;
  40. double Student::total_sum = 0;
  41. Student::~Student()
  42. {
  43. total_sum-=total;
  44. stu_num--;
  45. }
  46. double Student::get_total()
  47. {
  48. return total;
  49. }
  50. int Student::get_stu_num()
  51. {
  52. return stu_num;
  53. }
  54. double Student::get_total_sum()
  55. {
  56. return total_sum;
  57. }
  58. istream& operator>>(istream &in, Student &s)
  59. {
  60. in>>s.name>>s.cpp>>s.math>>s.english;
  61. s.total=s.cpp+s.math+s.english;
  62. Student::stu_num++;   //在读入数据过程中,用静态成员记录下来具体的学生人数和总分和
  63. Student::total_sum+=s.total;
  64. return in;
  65. }
  66. ostream &operator<<(ostream &out, Student &s)
  67. {
  68. out<<s.name<<"\t";
  69. out<<s.cpp<<"\t";
  70. out<<s.math<<"\t";
  71. out<<s.english<<"\t";
  72. out<<s.total;
  73. return out;
  74. }
  75. //返回是否所有课程全过了
  76. bool Student::pass()
  77. {
  78. return cpp>=60 && math>=60 && english>=60;
  79. }
  80. int main( )
  81. {
  82. Student stud[200],t; //stud[200]为保存数据的对象数组
  83. string sname;
  84. double total_avg;
  85. int i=0;
  86. //将文件中的数据读入到对象数组中
  87. ifstream infile("score.dat",ios::in);  //以输入的方式打开文件
  88. if(!infile)       //测试是否成功打开
  89. {
  90. cerr<<"open error!"<<endl;
  91. exit(1);
  92. }
  93. while(!infile.eof())
  94. {
  95. infile>>stud[i++];   //读数据中,人数等信息自动地记录到静态成员中,见运算符重载的实现
  96. }
  97. infile.close();
  98. //求总分平均并输出
  99. if(Student::get_stu_num()>0)
  100. {
  101. total_avg = Student::get_total_sum() / Student::get_stu_num();
  102. ofstream outfile("pass_score.dat",ios::out);
  103. if(!outfile)
  104. {
  105. cerr<<"open error!"<<endl;
  106. exit(1);
  107. }
  108. for(i=0; i<Student::get_stu_num(); i++)
  109. {
  110. if(stud[i].get_total()>total_avg&&stud[i].pass())
  111. {
  112. outfile<<stud[i]<<endl;
  113. }
  114. }
  115. outfile.close();
  116. cout<<"请到文件pass_score.dat中查看名单:"<<endl;
  117. }
  118. return 0;
  119. }

用文件保存的学生名单相关推荐

  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. 批量生成HTML文件,通过 学生名单(学号、姓名) 与 博客名单(姓名、网址)

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

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

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

  5. 在“D:/mydat“目录下有一个学生名单文件(文本)“student2018.txt“,里面记载了若干学生信息, 每个学生信息单独一行,每行信息共有五列,每列之间用逗号分开, 其每列含义按顺序是:学

    在"D:/mydat"目录下有一个学生名单文件(文本)"student2018.txt",里面记载了若干学生信息, 每个学生信息单独一行,每行信息共有五列,每列 ...

  6. Python 基于tkinter模块的GUI可视化学生成绩管理系统实现(含文件保存)

    学生成绩管理系统 1. 标准模块导入 2.完整代码 3.文件保存模块 作者:潇 版本:1.0 面向对象,带日志,带异常处理的,带密码加密 第一次执行会生成数据库和csv文件,以后添加的数据会自动保存到 ...

  7. C语言学生学籍管理系统源程序|用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。(用文件保存) 功能要求: (1) 系统以菜单方式工作。 (2) 登记学生的

    学生学籍管理系统 用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作.(用文件保存) 功能要求: (1) 系统以菜单方式工作. (2) 登记学生的学号,姓名, ...

  8. 用C语言实现一个学生成绩管理系统 实现学生信息管理。包括:录入、查询、排序等功能。 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3…) ,利用菜单可以循环实现各个功能。

    用C语言实现一个学生成绩管理系统 题目: 学生成绩管理系统 功能: 实现学生信息管理.包括:录入.查询.排序等功能. 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3-) ,利用 ...

  9. c语言文件读写_学生信息管理系统(C语言\单向链表\文件读写)

    最近在复习数据结构,早上刚复习完链表,就想到了学生信息管理系统这个经典的大作业,然后呢,花了一早上加一中午的功夫给重新实现了一遍,里面可能会有写的不好的地方,但也代表了我实现的一些想法,在这里我将分享 ...

最新文章

  1. MyBatis框架学习DAY_01:概念/创建运行流程
  2. 【Python】强烈建议你学这 3 个 Python AutoEDA 工具包!
  3. php 值不进行解码,无法解码PHP中的JSON值
  4. Android之解决Android10.0通过热点名字和密码连接指定热点网络不能通信问题(2种解决办法)
  5. 博客导读(09.3.21)
  6. 设计模式的七大设计原则:其四:里氏替换原则
  7. stm32 JTAG和SWD的使用区别简要介绍
  8. 概率论经典问题之匹配问题
  9. “(null)” is of a model that is not supported by this version of Xcode. Ple
  10. 【oracle工具】plsqldev美化规则文件详细解释(关键字大写,标识符小写等规则)
  11. 分享靠写代码赚钱的一些门路
  12. 目标跟踪算法--Camshift 和Meanshift
  13. 非正式纳新题解(C语言)
  14. 龙星镖局 | 2015 机器学习颁奖礼
  15. win10 右下角网络图标消失解决方案
  16. 群晖7.1.0万兆网络实测
  17. html移动端登录界面
  18. 三相变流器两相静止坐标下无源阻尼PR控制
  19. 花钱学Python其实没必要的,自学宝藏在这里
  20. 谁没写过几封辞职信VS什么样的人有…

热门文章

  1. 蓝桥杯 青蛙跳杯子
  2. 在阿里做测试已经5年了,回想起当初面试时候背的面试题
  3. android RecyclerView禁止多点触控
  4. 腾讯电脑管家2015 v10.6 官方版
  5. JavaScript字符串类型
  6. 【游戏客户端面试题干货】-- 2021年度最新游戏客户端面试干货( 计算机网络篇 )
  7. 使用Selenium爬取淘宝商品(绕过登录页面)
  8. 用IFRAME实现网页的内嵌和预载
  9. 常见的深度学习优化算法(概述)
  10. 哈希和哈希表(超详细!!!)