C++第15周(春)項目2 - 用文件保存的學生名單

課程首頁在:http://blog.csdn.net/sxhelijian/article/details/11890759。內有完整教學方案及資源鏈接


本程序中須要的相關文件。請到http://pan.baidu.com/s/1qW59HTi下載。

【項目2-用文件保存的學生名單】

  文件score.dat中保存的是若干名學生的姓名和C++課、高數和英語成績。
  (1)定義學生類,當中包括姓名、C++課、高數和英語成績及總分數據成員,成員函數依據須要確定。


//定義學生類
class Student
{
public://聲明必要的成員函數
private:string name;double cpp;double math;double english;double total;static int stu_num;  //學生人數,處理為類的靜態成員合適static double total_sum; //學生總分和
};

  (2)用對象數組進行存儲學生的成績。讀入成績并計算總分。將總分高于平均總分且沒掛科的同學的信息保存到文件pass_score.dat中。
int main( )
{Student stud[200],t; //stud[200]為保存數據的對象數組string sname;double total_avg;int i=0;//從文件score.dat中讀入數據,保存到對象數組中//總分高于平均總分且沒掛科的同學的信息保存到文件pass_score.dat中return 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;
}




=================== 迂者 賀利堅 CSDN博客專欄=================
|== IT學子成長指導專欄 專欄文章的分類文件夾(不定期更新) ==|
|== C++ 課堂在線專欄  賀利堅課程教學鏈接(分課程年級) ==|
|== 我寫的書——《逆襲大學——傳給IT學子的正能量》    ==|
=====?為IT菜鳥起飛鋪跑道。和學生一起享受快樂和激情的大學 =====




本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541594.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541594.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541594.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機選配 注意事項,選擇鼠標注意事項有哪些

選擇鼠標注意事項有哪些每臺電腦旁邊都有了一個忠實的伴侶&#xff0c;那就是“Mouse”--鼠標。選擇鼠標最重要的一點就是質量&#xff0c;無論它的功能有多強大、外形多漂亮&#xff0c;如果質量不好那么一切都不用考慮了。那么&#xff0c;選擇鼠標注意事項有哪些?筆記本鼠標…

js 驗證護照_護照本地策略第2部分| Node.js

js 驗證護照In my last article (Passport local strategy section 1 | Node.js), we started the implementation of the passport-local authentication strategy. We also looked at the various requirements to get started with the login form. In this article, we wil…

svn版利用什么技術實現_金蔥粉涂料印花利用了什么技術?

金蔥粉涂料印花利用了什么技術:金蔥粉用涂料而不是用染料來生產印花布已經非常廣泛&#xff0c;以致開始把它當作一種獨立的印花方式。涂料印花是用涂料直接印花&#xff0c;該工藝通常叫做干法印花&#xff0c;以區別于濕法印花(或染料印花)。通過比較同一塊織物上印花部位和未…

網站換服務器需要注意什么問題,網站更換服務器要注意哪些事項

原標題&#xff1a;網站更換服務器要注意哪些事項網站在運營的過程中&#xff0c;出于某種考慮&#xff0c;我們會將網站進行服務器的變更&#xff0c;那么在進行服務器變成過程中&#xff0c;需要注意哪些事項。一、如果是跨服務商更換網站服務器&#xff0c;需要做備案遷移。…

json轉string示例_C.示例中的String.Insert()方法

json轉string示例C&#xff03;String.Insert()方法 (C# String.Insert() Method) String.Insert() method is used to insert a string in an existence string at specified index and returns a new string. String.Insert()方法用于在指定索引處的存在字符串中插入一個字符…

kafka分區與分組原理_大數據技術-Kafka入門

在大數據學習當中&#xff0c;主要的學習重點就是大數據技術框架&#xff0c;針對于大數據處理的不同環節&#xff0c;需要不同的技術框架來解決問題。以Kafka來說&#xff0c;主要就是針對于實時消息處理&#xff0c;在大數據平臺當中的應用也很廣泛。大數據學習一般都有哪些內…

mac 電腦找不到服務器 dns 地址,MAC OS下如何快速設置DNS服務器地址

樓主你好&#xff01;介紹以下Mac OS X DNS設置方法&#xff1a;1、點擊桌面頂部狀態欄里的蘋果圖標&#xff0c;在菜單里選擇“系統偏好設置”。2、點擊互聯網與無線下的“網絡”。3、在網絡界面&#xff0c;選中正在聯網的網絡連接&#xff0c;點擊右下角的“高級”選項。4、…

ActiveReports 報表控件官方中文新手教程 (1)-安裝、激活以及產品資源

&#xfeff;&#xfeff;本系列文章主要是面向初次接觸 ActiveReports 產品的用戶&#xff0c;能夠幫助您在三天之內輕松的掌握ActiveReports控件的基本用法&#xff0c;包含安裝、激活、創建報表、綁定數據源以及公布等內容。本篇文章我們就從安裝產品開始帶您開啟輕松的 Ac…

如何在React Native中使用React JS Hooks?

In my articles, Im going to be using either expo or snack online IDE and android emulator. 在我的文章中&#xff0c;我將使用expo或點心在線IDE和android模擬器。 React Hooks is simply an awesome tool that helps us use states and other react features without w…

華為P40pro 手機云臺_2020年目前拍照最好的手機推薦!華為P40 Pro!DXO全球榜首

目前最熱門的拍照手機自然是華為P40 Pro&#xff0c;其相機性能直接問鼎DXOMARK手機相機評分榜首。對于拍照要極求高的用戶&#xff0c;華為P40 Pro將是一個非常不錯的選擇。那么&#xff0c;華為P40 Pro除了出色的相機之外&#xff0c;其它方面表現如何呢&#xff1f;下面&…

容器性能比無容器服務器,【譯】容器 vs 無服務器(Serverless)

一些歷史不久之前&#xff0c;開發&#xff0c;部署和運維還相當復雜。在一開始&#xff0c;運維不僅需要修補程序代碼&#xff0c;還要支持物理機器。保持服務器&#xff0c;硬件與軟件處于最新狀態也是一項艱巨的任務。在2000年代&#xff0c;一個新的模型——架構即服務(Iaa…

Centos 7安裝與配置nagios監控(一)

目 錄序言(必備知識)一、安裝規劃1.1系統環境1.2所需軟件包二、配置安裝環境2.1同步時間2.2禁用SElinux2.3 xftp上傳軟件包2.4安裝郵件服務三、監控主機安裝3.1安裝nagios的運行環境3.2增加用戶3.3安裝nagios3.4配置權限3.5安裝插件3.6安裝nrpe四、遠程主機安裝4.1配置運行環境…

java字符串刪掉子串_如何從Java中的列表中刪除子列表?

java字符串刪掉子串從列表中刪除子列表 (Removing SubList from a List) Suppose, we have a list of few elements like this, 假設我們列出了一些這樣的元素&#xff0c; list [10,20,30,40,50]From the list, we have to delete a sub list between sourcing_index (inclu…

備份linux系統報錯_Linux 系統如何快速入門?分享民工哥總結的經驗

大家好&#xff0c;我是民工哥。認識或熟悉我的人都知道&#xff0c;是做運維出身的&#xff0c;所以&#xff0c;很多時候&#xff0c;有很多朋友喜歡問我一些有關運維的問題&#xff0c;比如&#xff1a;我應該如何入門Linux系統運維&#xff1f;Linux系統運維到底需要學哪些…

pe聯想服務器裝系統教程視頻,演示聯想電腦u盤重裝系統xp教程

聯想電腦U盤重裝XP系統的方法很多朋友詢問&#xff0c;其實現在很多電腦已經不支持XP系統的安裝了&#xff0c;如果你的聯想電腦是近幾年購買的&#xff0c;還是安裝win10系統比較保險。當然聯想電腦安裝系統過程中遇到問題也可以聯系人工客服。聯想電腦如何使用U盤重裝系統XP呢…

TCP Socket 粘包

&#xfeff;&#xfeff;這兩天看csdn有一些關于socket粘包&#xff0c;socket緩沖區設置的問題。發現自己不是非常清楚&#xff0c;所以查資料了解記錄一下&#xff1a; 一兩個簡單概念長連接與短連接&#xff1a;1.長連接 Client方與Server方先建立通訊連接。連接建立后不斷…

離散數學和組合數學什么關系_關系類型| 離散數學

離散數學和組合數學什么關系關系類型 (Types of Relation) There are many types of relation which is exist between the sets, 集合之間存在許多類型的關系&#xff0c; 1. Universal Relation 1.普遍關系 A relation r from set a to B is said to be universal if: R A…

springboot公共模塊打包_解決SpringBoot多模塊發布時99%的問題?

每天都會分享Java架構文章&#xff0c;喜歡的朋友關注我。ps&#xff1a;文末有彩蛋&#xff0c;驚喜等著你如果使用的是 SpringBoot 多模塊的項目&#xff0c;在發布的時候可能遇到各種各樣的問題。本文歸納了以下 8 個原則和發布時經常出現的 4 個問題的解決方案&#xff0c;…

tomcat7的數據庫連接池tomcatjdbc的25個優勢

tomcat的JDBC連接池org.apache.tomcat.jdbc.pool更換或替代嗎Apache Commons DBCP連接池。為什么我們須要一個新的連接池?這里有幾個原因: 1.DBCP 1.x是單線程的。為了成為線程安全的 共享鎖整個池在短時間內在兩個對象 分配和對象返回。注意,這并不適用 下議院DBCP 2.x。 2.D…

weakhashmap_Java WeakHashMap entrySet()方法與示例

weakhashmapWeakHashMap類entrySet()方法 (WeakHashMap Class entrySet() method) entrySet() method is available in java.util package. entrySet()方法在java.util包中可用。 entrySet() method is used to retrieve the mappings that exist in this map to be viewed in …