1. 程式人生 > >第十四周(-用檔案儲存的學生名單)

第十四周(-用檔案儲存的學生名單)

*作者:王忠
*完成日期:2015.6.09

*版本號:v1.0
*
*問題描述:檔案score.dat中儲存的是若干名學生的姓名和C++課、高數和英語成績。
(1)定義學生類,其中包含姓名、C++課、高數和英語成績及總分資料成員。
(2)用物件陣列進行儲存學生的成績,讀入成績並計算總分;將總分高於平均總分且沒掛科的同學的資訊儲存到檔案pass_score.dat中。

*輸入描述:

*程式輸出:

#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
//定義學生類
class Student
{
public:
    //宣告必要的成員函式
    Student() {}
    ~Student();
    double gettotal();
    static int getstu_num();
    static double gettotal_sum();
    friend ostream& operator <<(ostream &out,Student &s);
    friend istream& operator >>(istream &in,Student &s);
    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::gettotal()
{
    return total;
}
 int Student::getstu_num()
{
    return stu_num;
}
 double Student::gettotal_sum()
{
    return total_sum;
}
ostream& operator <<(ostream &out,Student &s)
{
    out<<s.name<<"\t"<<s.cpp<<"\t"<<s.math<<"\t"<<s.english<<"\t"<<s.total;
    return out;
}
 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;
}
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;
    //從檔案score.dat中讀入資料,儲存到物件陣列中
    ifstream infile("score.dat",ios::in);
    if(!infile)
    {
        cerr<<"error"<<endl;
        exit(1);
    }
    while(!infile.eof())
        infile>>stud[i++];
    infile.close();
    //總分高於平均總分且沒掛科的同學的資訊儲存到檔案pass_score.dat中
    if(Student::getstu_num()>0)
    {
        total_avg = Student::gettotal_sum() / Student::getstu_num();
        ofstream outfile("pass_score.dat",ios::out);
        if(!outfile)
        {
            cerr<<"open error!"<<endl;
            exit(1);
        }
        for(i=0; i<Student::getstu_num(); i++)
        {
            if(stud[i].gettotal()>total_avg&&stud[i].pass())
            {
                outfile<<stud[i]<<endl;
            }
        }
        outfile.close();
        cout<<"請去檔案中檢視"<<endl;
    }
    return 0;
}

相關推薦

四周-檔案儲存學生名單

*作者:王忠 *完成日期:2015.6.09 *版本號:v1.0 * *問題描述:檔案score.dat中儲存的是若干名學生的姓名和C++課、高數和英語成績。 (1)定義學生類,其中包含姓名、C++課、高數和英語成績及總分資料成員。 (2)用物件陣列進行儲存學生的成績,讀入成績並計算總分;將總分高於平均總分

五週專案二——檔案儲存學生名單

/*煙臺大學計算機學院學生 *All right reserved. *檔名稱:用檔案儲存學生的名單 *作者:王洪海 *完成日期:2014年6月5日 *版本號:v1.0 *對任務及求解方法的描述部分:用檔案儲存學生的名單 *我的程式:*/ #include <iostream> #in

四周OOP版電子詞典

*作者:王忠 *完成日期:2015.6.10 *版本號:v1.0 * *問題描述:做一個簡單的電子詞典。在檔案dictionary.txt中,儲存的是英漢對照的一個詞典,詞彙量近8000個,英文、中文釋義與詞性間用’\t’隔開。 (1)程式設計序,由使用者輸入英文詞,顯示詞性和中文釋義。提示1:如果要用OO

python學習三節sys,logging,logger,json

mage 支持 另一個 tro write alt blog dha python sys模塊sys模塊是python和解釋器之間交流的模塊 sys.argv 在cmd中將可以輸入內容後 自動形成為列表,可以在程序中先切片,驗證登錄的作用。 sys.exit() 程序立

Linux建立swap分割槽檔案作為Swap分割槽

1.建立要作為swap分割槽的檔案:增加1GB大小的交換分割槽,則命令寫法如下,其中的count等於想要的塊的數量(bs*count=檔案大小)。 dd if=/dev/zero of=/root/swapfile bs=1M count=1024 2.格式

四周專案1線性表的折半查詢遞迴法

/*Copyright (c) 2015, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:H1.cpp * 作者:辛志勐 * 完成日期:2015年12月2日 * 版本號:VC6.0 * 問題描述:線性表的折半查詢(遞迴法) * 輸入描述:無 * 程式輸出:圖

四周專案1線性表的折半查詢迴圈法

/*Copyright (c) 2015, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:H1.cpp * 作者:辛志勐 * 完成日期:2015年12月2日 * 版本號:VC6.0 * 問題描述:線性表的折半查詢(迴圈法) * 輸入描述:無 * 程式輸出:圖

王穎奇 20171010129《面向物件程式設計java四周學習總結

實驗十四  Swing圖形介面元件 理論知識知識點: 1.Swing和MVC設計模式2.佈局管理器3.文字輸入4.選擇元件5.選單6.對話方塊 實驗時間 2018-11-29 1、實驗目的與要求 (1) 掌握GUI佈局管理器用法; (2) 掌握各類

王之泰201771010131《面向物件程式設計java四周學習總結

第一部分:理論知識學習部分 第12章 Swing使用者介面元件 12.1.Swing和MVC設計模式 a 設計模式初識b 模型—檢視—控制器模式c Swing元件的模型—檢視—控制器分析   12.2佈局管理器 a 佈局管理器是一組類。 b 實現java.awt.LayoutMana

201771010135 楊蓉慶/張燕/楊玲《面對物件程式設計java四周學習總結

1 、實驗目的與要求 (1) 掌握GUI佈局管理器用法; (2) 掌握各類Java Swing元件用途及常用API 一、理論知識  Swing和MVC設計模式 (1)設計模式(Design pattern)是設計者一種流行的 思考設計問題的方法,是一套被反覆使

王志成 201771010130《面向物件程式設計java四周學習總結

(1) 掌握GUI佈局管理器用法; (2) 掌握各類Java Swing元件用途及常用API; 2、實驗內容和步驟 實驗1: 匯入第12章示例程式,測試程式並進行組內討論。 測試程式1 l 在elipse IDE中執行教材479頁程式12-1,結合執行結果理解程式; l&nbs

張雲飛 201771010143 《面對物件程式設計java四周學習總結 十三組

1、實驗目的與要求 (1) 掌握GUI佈局管理器用法; (2) 掌握各類Java Swing元件用途及常用API; 2、實驗內容和步驟 實驗1: 匯入第12章示例程式,測試程式並進行組內討論。 測試程式1 l  在elipse IDE中執行教材479頁程式12-1,結

徐思201771010132《面向物件程式設計java四周學習總結

一、理論知識部分 設計模式(Design pattern)是設計者一種流行的思考設計問題的方法,是一套被反覆使用,多數人知曉的,經過分類編目的,程式碼設計經驗的總結。使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。每一個模式描述了一個不斷重複發生的設計問題,以及該問題的核心解決方

201771010128王玉蘭《面向物件程式設計Java四周學習總結》

第一部分:理論知識總結: (1)Swing  設計模式(Design pattern)是設計者一種流行的 思考設計問題的方法,是一套被反覆使用,多數人 知曉的,經過分類編目的,程式碼設計經驗的總結。 使用設計模式是為了可重用程式碼、讓程式碼更容易被 他人理解、保證程式碼可靠性。 每一個模式描

達拉草201771010105《面向物件程式設計java四周學習總結

達拉草201771010105《面向物件程式設計(java)》第十四周學習總結 第一部分:理論知識 佈局管理器: 佈局管理器是一組類。 實現java.awt.LayoutManager介面 ,決定容器中元件的位置和大小 。 Java.awt包中定義了5種佈局管理類,每一種布 局管理類對應一種佈局策略。

達拉草201771010105《面向對象程序設計java四周學習總結

必須 bubuko tle itl 默認 ddb 框架 echo ted 達拉草201771010105《面向對象程序設計(java)》第十四周學習總結 第一部分:理論知識 布局管理器: 布局管理器是一組類。 實現java.awt.LayoutManager接口 ,決定容器

焦旭超 201771010109 《面對物件程式設計java四周學習總結 十三組

1、實驗目的與要求 (1) 掌握GUI佈局管理器用法; (2) 掌握各類Java Swing元件用途及常用API; 2、實驗內容和步驟 實驗1: 匯入第12章示例程式,測試程式並進行組內討論。 測試程式1 l  在elipse IDE中執行教材479頁程式12-1,結

趙棟《面向物件程式設計java四周學習總結

理論知識知識點: Swing和MVC設計模式 (1)設計模式(Design pattern)是設計者一種流行的 思考設計問題的方法,是一套被反覆使用,多數人 知曉的,經過分類編目的,程式碼設計經驗的總結。 (2)模型-檢視-控制器設計模式(Model –ViewController )是Java EE平

馮志霞201771010107《面向物件程式設計java四周學習總結

實驗十四  Swing圖形介面元件 實驗時間 20178-11-29 1、實驗目的與要求 (1) 掌握GUI佈局管理器用法; (2) 掌握各類Java Swing元件用途及常用API; 2、實驗內容和步驟 實驗1: 匯入第12章示例程式,測試程式並進行組內討論。 測試程式1 l&nb

狄慧201771010104《面向物件程式設計java四周學習總結

實驗十四  Swing圖形介面元件 實驗時間 20178-11-29 一、知識點總結 1.模型-檢視-控制器模式模型:儲存內容 檢視:顯示內容 控制器:處理使用者輸入 2.佈局管理 1>局管理器(FlowLayout) JPanel物件的預設佈局管理器為FlowLayout,元件加入