1. 程式人生 > >第十六週任務一(對檔案的操作練習之漲工資)

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

題目
從檔案salary.txt 中讀入500 名工人的工資,全部增加100 元后進行排序,將排序後的結果在螢幕上
輸出,並儲存到檔案ordered_salary.txt 中。
/* (程式頭部註釋開始)
* 程式的版權和版本宣告部分
* Copyright (c) 2011, 煙臺大學計算機學院學生 
* All rights reserved.
* 檔名稱:   salary.cpp                           
* 作    者:   計114-4 馮珍珍     
* 完成日期:    2012  年   6    月   5  日
* 版 本 號:       
* 程式頭部的註釋結束
*/

#include <fstream>
#include<iostream>
#include<iomanip>
using namespace std;

void show_salary(double salary[], int num);//輸出工資;
void cin_salary(double salary[], int num);//從檔案得到工資;
void cout_salary(double salary[], int num);//儲存工資;
void bubble_sort(double arr[], int num);//排序;
void add_salary(double salary[], int num, double money);//加工資;
int main( )
{
	double sal[500];
	int num=500;

	cin_salary(sal, num);//從檔案讀入工資;
	cout << "加工資排序前員工工資:" << endl;
	show_salary(sal, num);//輸出工人工資;

	add_salary(sal, 500, 100);//加工資;
	bubble_sort(sal, num);//排序;

	cout << "加工資排序後員工工資:" << endl;
	show_salary(sal, num);//輸出工資;

	cout_salary(sal, num);//儲存到檔案;
	
	system("pause");
	return 0;
}
//定義void show_salary(salary[])函式;
void show_salary(double salary[], int num)
{
	int i;

	for(i=0; i<num; i++)
	{
		cout << salary[i] << setw(5);
		if(i % 20 == 0) 
			cout<< endl;
	}
	cout << endl;
}
//定義從檔案輸入函式;
void cin_salary(double salary[], int num)
{
	int i;

	ifstream infile("E:\free time\salary.txt", ios::in);
	if(!infile)
	{
		cerr << "salary.txt open error!" << endl;
		exit(1);
	}
	for(i=0; i<num; i++)
	{
		infile >> salary[i];//讀入工資;
	}

	infile.close();
}
//定義輸出函式;
void cout_salary(double salary[], int num)
{
	int i;

	ofstream outfile("E:\free time\ordered_salary.txt");
	if(!outfile)                        
	{
		cerr << "ordered_salary.txt open error!" << endl;
		exit(1);
	}
	for(i=0; i<500; i++)
	{
		outfile << salary[i] << "\t";//輸出工資;   
	}
	outfile.close(); 
}
//定義排序函式;
void bubble_sort(double arr[], int num)
{
	int i, j;
	double d;

	for(i=0; i<num-1; i++)
		for(j=0; j<num-i-1; j++)
			if(arr[j] > arr[j+1])
			{
				d = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = d;
			}
}
//定義加工資函式;
void add_salary(double salary[], int num, double money)
{
	int i;
	for(i=0; i<num; i++)
	{
		salary[i] = salary[i] + money;
	}
}

小結:開始沒把檔案放在一個資料夾裡,導致連線錯誤,耗費了不少時間,實在可惜啊,要儲存都到的另一個檔案是自動生成的,並不需要再見一個空檔案,走彎路啦這次,長記性啦