1. 程式人生 > >十六週任務二 學生成績排序檔案score.dat 中儲存的是100 名學生的姓名和C++課、高數和英語成績,將成績排序後儲存到ordered_score.dat檔案中

十六週任務二 學生成績排序檔案score.dat 中儲存的是100 名學生的姓名和C++課、高數和英語成績,將成績排序後儲存到ordered_score.dat檔案中

/* (程式頭部註釋開始)
* 程式的版權和版本宣告部分
* Copyright (c) 2011, 煙臺大學計算機學院學生 
* All rights reserved.
* 檔名稱:    十六週任務二 學生成績排序檔案score.dat 中儲存的是100 名學生的姓名和C++課、高數和英語成績
讀入這名學生的成績,用物件陣列進行儲存
在螢幕上顯示各科及總分的最高分,排序後的成績單(包括總分)儲存到檔案odered_score.dat中                        
* 作    者:     石麗君                         
* 完成日期:      2012   年     6  月      4  日
* 版 本 號:          

* 對任務及求解方法的描述部分
* 輸入描述: 學生成績排序
檔案score.dat 中儲存的是100 名學生的姓名和C++課、高數和英語成績。
(1)定義學生類,其中包含姓名、C++課、高數和英語成績及總分、均分資料成員,成員函式根據
需要確定。
(2)讀入這名學生的成績,用物件陣列進行儲存。
(3)求出各科和總分的最高分。
(4)請按總分的降序(高成績在前,低成績在後)排序
(5)在螢幕上顯示各科及總分的最高分,排序後的成績單(包括總分)儲存到檔案odered_score.dat中。
* 問題描述: 
* 程式輸出: 
* 程式頭部的註釋結束
*/


#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Student
{
private:
	string name;
	int C;
	int Math;
	int English;
	int All_score;
	double Average;
public:
	Student();
	Student(int c,int math,int english,int all_score,double average):C(c),Math(math),English(english),All_score(all_score),Average(average){}
	friend void arrange_all_score(Student stu[]);
	friend void get_frome_file(Student stu[]);
	friend void save_to_file(Student stu[]);
	friend void get_heigh_allscore(Student stu[]);
	friend void get_height_Cscore(Student stu[]);
	friend void get_height_Mathscore(Student stu[]);
	friend void get_height_Englishscore(Student stu[]);

};
Student::Student()
{
	C=0;
	Math=0;
	English=0;
	All_score=0;
	Average=0;
}
void arrange_all_score(Student stu[])
{
	int i,j,t;
	for( j=0;j<99;j++)
	{
		for( i=0;i<99-j;i++)
			if(stu[i].All_score<stu[i+1].All_score)
			{
				t=stu[i].All_score;
				stu[i].All_score=stu[i+1].All_score;
				stu[i+1].All_score=t;
			}
	}
}
void get_heigh_allscore(Student stu[])
{
	Student s;
	int i=0;
	s.All_score=stu[i].All_score;
	for(i=0;i<100;i++)
	{
		if(stu[i].All_score>s.All_score)
		{
			s.All_score =stu[i].All_score ;
			s.name =stu[i].name ;
		}
	}
	cout<<"總分成績最高為:"<<s.All_score<<'\t'<<"成員:";
	for(i=0;i<100;i++)
		if(s.All_score ==stu[i].All_score )
			cout<<stu[i].name<<" ";
}
void get_height_Cscore(Student stu[])
{
	Student s;
	int i=0;
	s.C=stu[i].C;
	for(i=0;i<100;i++)
	{
		if(stu[i].C>s.C)
		{
			s.C =stu[i].C;
			s.name =stu[i].name ;
		}
	}
	cout<<"C++成績最高為:"<<s.C<<'\t'<<"成員:";
	for(i=0;i<100;i++)
		if(s.C ==stu[i].C )
			cout<<stu[i].name<<" ";

}
void get_height_Mathscore(Student stu[])
{
	Student s;
	int i=0;
	s.Math=stu[i].Math;
	for(i=0;i<100;i++)
	{
		if(stu[i].Math>s.Math)
		{
			s.Math =stu[i].Math;
			s.name =stu[i].name ;
		}
	}
	cout<<"高數成績最高為:"<<s.Math<<'\t'<<"成員:";
	for(i=0;i<100;i++)
		if(s.Math==stu[i].Math )
			cout<<stu[i].name<<" ";
}
void get_height_Englishscore(Student stu[])
{
	Student s;
	int i=0;
	s.English=stu[i].English;
	for(i=0;i<100;i++)
	{
		if(stu[i].English>s.English)
		{
			s.English =stu[i].English;
			s.name =stu[i].name ;
		}
	}
	cout<<"英語成績最高為:"<<s.English<<'\t'<<"成員:";
	for(i=0;i<100;i++)
		if(s.English==stu[i].English )
			cout<<stu[i].name<<" ";

}

void get_frome_file(Student stu[])
{
	ifstream infile("score.dat",ios::in);
	if(!infile)
	{
		cerr<<"open score.dat error!"<<endl;
		exit(1);
	}
	for(int i=0;i<100;i++)
	{
		infile>>stu[i].name>>stu[i].C>>stu[i].Math>>stu[i].English;
		stu[i].Average=(stu[i].C+stu[i].Math+stu[i].English)/3;
		stu[i].All_score=stu[i].C+stu[i].Math+stu[i].English;
	}
	infile.close();

}
void save_to_file(Student stu[])
{
	cout<<"姓名"<<'\t'<<"C++"<<'\t'<<"高數"<<'\t'<<"英語"<<'\t'<<"平均分"<<'\t'<<"總分"<<endl;

	ofstream outfile("ordered_score.dat",ios::out);
	if (!outfile)
	{
		cerr<<"open error!"<<endl;

	}
	for(int i=0;i<100;i++)
	{
		outfile<<stu[i].name<<'\t'<<stu[i].C<<'\t'<<stu[i].Math<<'\t'<<stu[i].English<<'\t'<<stu[i].Average<<'\t'<<stu[i].All_score<<endl;
		cout<<stu[i].name<<'\t'<<stu[i].C<<'\t'<<stu[i].Math<<'\t'<<stu[i].English<<'\t'<<stu[i].Average<<'\t'<<stu[i].All_score<<endl;
	}
	outfile.close();
}
int main()
{
	Student stu[100];
	get_frome_file(stu);
	arrange_all_score( stu);
	get_heigh_allscore(stu);
	cout<<endl;
	get_height_Cscore( stu);
	cout<<endl;
	get_height_Mathscore( stu);
	cout<<endl;
	get_height_Englishscore( stu);
	cout<<endl;
	cout<<endl;
	save_to_file(stu);
	cout<<endl;
	system("pause");
	return 0;

}


相關推薦

任務 學生成績排序檔案score.dat 儲存的是100 學生姓名C++英語成績,成績排序儲存ordered_score.dat檔案

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱: 十六週任務二 學生成績排序檔案score.dat 中儲存的是100 名學生的姓名

任務一(對檔案的操作練習之漲工資)

題目從檔案salary.txt 中讀入500 名工人的工資,全部增加100 元后進行排序,將排序後的結果在螢幕上 輸出,並儲存到檔案ordered_salary.txt 中。 /* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011

【週報】---零一八年四

 週報----二年一八年四十六週 本週總結 1)體重 基本和上週持平,本週運動兩次,運動量比上週少了10km左右。飲食的話比上週要控制的好一些。 2)工作 上週指定的計劃,沒有全部完成,出現了一定程度的延遲,主要是技術儲備不夠導致的。平時要多花一些時間學習和積累。

2.6使用維陣列儲存學生的資料,包括學號、姓名、作業系統成績、Java成績、高數成績、總分;一行儲存一個學生的資料;要求輸入若干學生的資料,求出總分;然後按照總分由到低重新排列;輸出排序後的結果

摩爾的Java學習筆記2.6 第二週作業: 1、實現將一組整數進行升序排列; 2、用二維陣列實現,5個學生4門課程的總分和平均分的統計工作; 3、列印八行八列楊輝三角,開頭

--專案6大資料集上排序演算法效能的體驗

* * Copyright (c++) 2015 煙臺大學計算機學院 * All right reserved. * 檔名稱:houzhui.cpp * 作 者: 商文軻

任務 分別定義Teacher(教師)類Cadre(幹部)類,採用多重繼承方式有這兩個類派生出Teacher_Cadre

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱:第十二週任務二 分別定義Teacher(教師)類和Cadre(幹部)類, 採用多重繼承方

python基本據類型(字節字符進制進制進制轉換)

style log encoding 基本 轉換成 元素 nco 轉換 name #公共功能 # 索引:只能取一個元素 # 切片:取多個元素 #len:計算長度 #for name=‘李露‘ #utf-8 一個漢字三個字節 for i in name:

201771010113 李婷華 《面向物件程式設計(Java)》第總結

一.理論知識部分 1.程式是一段靜態的程式碼,它應用程式執行藍 是一段靜態的程式碼,它應用程式執行藍 是一段靜態的程式碼,它應用程式執行藍本。 2.程序是程式的一次動態執行,它對應了從程式碼載入、執行至執行完畢的一個完整過程。 3.多執行緒是程序執行過中產生的多條線索。 4.執行緒是比程序執行更小的單

201771010134楊其菊《面向物件程式設計(java)》第學習總結

第十六週學習總結 第一部分:理論知識   1. 程式是一段靜態的程式碼,它是應用程式執行的藍本。程序是程式的一次動態執行,它對應了從程式碼載入、執行至執行完畢的一個完整過程。作業系統為每個程序分配一段獨立的記憶體空間和系統資源,包括:程式碼資料以及堆疊等資源。每一個程序的內部資料和狀態都是完全獨立的。多工

201771010123汪慧《面向物件程式設計Java》第實驗總結

一、理論部分 1、程式與程序的概念 ‐程式是一段靜態的程式碼,它是應用程式執行的藍本。 ‐程序是程式的一次動態執行,它對應了從程式碼載入、執行至執行完畢的一個完整過程。 ‐作業系統為每個程序分配一段獨立的記憶體空間和系統資源,包括:程式碼資料以及堆疊等資源。每 一個程序的內部資料和狀態都是完全獨立的。

201771010112羅鬆《面向物件程式設計(java)》第學習總結

1、實驗目的與要求 (1) 掌握執行緒概念; (2) 掌握執行緒建立的兩種技術; (3) 理解和掌握執行緒的優先順序屬性及排程方法; (4) 掌握執行緒同步的概念及實現技術; 2、實驗內容和步驟 實驗1:測試程式並進行程式碼註釋。 測試程式1: l&nb

李曉菁201771010114《面向物件程式設計Java》第學習總結

一:理論知識 1.執行緒的概念: 程式是一段靜態的程式碼,它是應用程式執行的藍本。‐程序是程式的一次動態執行,它對應了從程式碼加載、執行至執行完畢的一個完整過程。 多執行緒是程序執行過程中產生的多條執行線索。‐執行緒是比程序執行更小的單位。‐執行緒不能獨立存在,必須存在於程序中,同一進程的各執行緒間共享

馬昕璐 201771010118《面向物件程式設計(java)》第學習總結

第一部分:理論知識學習部分  程式:一段靜態的程式碼,應用程式執行的藍本。 程序:是程式的一次動態執行,它對應了從程式碼載入、執行至執行完畢的一個完整過程。 多執行緒:程序執行過程中產生的多條執行線索,比程序執行更小的單位。 執行緒不能獨立存在,必須存在於程序中,同一程序的各執行緒間共享程序

王之泰 201771010131《面向物件程式設計(java)》第學習總結

    第一部分:理論知識學習部分 第14章 併發 ⚫ 執行緒的概念⚫ 中斷執行緒⚫ 執行緒狀態⚫ 多執行緒排程⚫ 執行緒同步   1.程式與程序的概念 1.1程式是一段靜態的程式碼,它是應用程式執行的藍 本。 1.2程序是程式的一次動態執行,它

201771010108 -韓臘梅-第學習總結

第十六週總結 一、知識總結 1.建立執行緒的2種方法 方式1:繼承java.lang.Thread類,並覆蓋run()方法。優勢:編寫簡單;劣勢:無法繼承其他父類 方式2:實現java.lang.Runnable介面,並實現run()方法。優勢:可以繼承其他類,多執行緒可以共享同一個Thread物件;

201771010135 楊蓉慶《面對物件程式設計(java)》第學習總結

1、實驗目的與要求 (1) 掌握執行緒概念; (2) 掌握執行緒建立的兩種技術; (3) 理解和掌握執行緒的優先順序屬性及排程方法; (4) 掌握執行緒同步的概念及實現技術; 一、理論知識 ⚫ 執行緒的概念   (1)多執行緒是程序執行過程中產

201771010137 趙棟《面向物件程式設計(java)》第學習總結

1、實驗目的與要求 (1) 掌握執行緒概念; (2) 掌握執行緒建立的兩種技術; (3) 理解和掌握執行緒的優先順序屬性及排程方法; (4) 掌握執行緒同步的概念及實現技術; 2、實驗內容和步驟 實驗1:測試程式並進行程式碼註釋。 測試程式1: l&nb

狄慧201771010104《面向物件程式設計(java)》第學習總結

實驗十六  執行緒技術 實驗時間 2017-12-8 一、知識點總結: 1、程式與程序的概念 ‐程式是一段靜態的程式碼,它是應用程式執行的藍本。 ‐程序是程式的一次動態執行,它對應了從程式碼載入、執行至執行完畢的一個完整過程。 ‐作業系統為每個程序分配一段獨立的記憶體空間和系統資源,包括

達拉草201771010105《面向物件程式設計(java)》第學習總結

達拉草201771010105《面向物件程式設計(java)》第十六週學習總結 第一部分:理論知識 1.程式與程序的概念: (1)程式是一段靜態的程式碼,它是應用程式執行的藍 本。 (2)程序是程式的一次動態執行,它對應了從程式碼加 載、執行至執行完畢的一個完整過程。 2.多執行緒的概念: (1)

201771010130 王志成《面向物件程式設計(java)》第學習總結

1、實驗目的與要求 (1) 掌握執行緒概念; (2) 掌握執行緒建立的兩種技術; (3) 理解和掌握執行緒的優先順序屬性及排程方法; (4) 掌握執行緒同步的概念及實現技術; 2、實驗內容和步驟 實驗1:測試程式並進行程式碼註釋。 測試程式1: l&nb