#include <iostream.h>
#include <stdio.h>
#include <iomanip.h>
main()
{
		
	int numberofemployees, grade[100], employeenumber[100], totalhours[100], c=0, overtime[100], hours[100], d=0;
	float rate[100], grosspay[100], super[100], netpay[100], taxrate[100], tax[100];
	char null, invalidgrade;
	
	cout << "------------------"<<endl;
	cout << "| WEEKLY PAYROLL |"<<endl;
	cout << "------------------"<<endl<<endl<<endl;
	cout << "Please enter the number of employees >";
	cin >> numberofemployees;cout<<endl<<"-----------------------------------------------------------";
	for(;c<numberofemployees;)
	{
		cout << endl << "Please enter employee number >";
		cin >> employeenumber[c];
		do
		{
		cout << endl << "Please enter grade for employee number " << employeenumber[c] << " >";
		cin >> grade[c];
		invalidgrade='n';
		if (grade[c] <=0)
		{
			cout << endl<<"INVALID GRADE, please enter a valid grade"<<endl;
			invalidgrade='y';
		}
		if (grade[c] >3)
		{
			cout << endl<<"INVALID GRADE, please enter a valid grade"<<endl;
			invalidgrade='y';
		}
		}while(invalidgrade!='n');
		do
		{
		cout << endl << "Please enter hours worked this week by employee number " << employeenumber[c] << " >";
		cin >> totalhours[c];
		if (totalhours[c] < 0)
		{
			cout << endl << "INVALID HOURS, please enter a valid number of hours"<<endl;
		}
		}while(totalhours[c] <0);
		cout << "-----------------------------------------------------------"<<endl;
		c++;
	}
	
	c=0;
//	cout <<endl<<endl<<"CALCULATING, PLEASE WAIT!";
//	for(;c<1000;c++)
//		{
//		cout << "-\b";for(;d<50000;d++){};d=0;cout<<"\\\b";for(;d<50000;d++){};d=0;cout<<"|\b";for(;d<50000;d++){};d=0;cout<<"/\b";for(;d<50000;d++){};d=0;
//	}
	
//	cout<<endl<<endl;
//	c=0;

	for(;c<numberofemployees;)
	{
		if(totalhours[c]>38)
		{
			overtime[c]=totalhours[c]-38;
		}
		else
		{
			overtime[c]=0;
		}
	hours[c]=totalhours[c]-overtime[c];

//	switch(grade[c])
//	{
//		case '1':rate[c]=10.5;
//		case '2':rate[c]=15;
//		case '3':rate[c]=20.5;
//	}
	
	if(grade[c]=1)
	{
		rate[c]=10.50;
	}
	else
	{
		if(grade[c]=2)
		{
			rate[c]=15.00;
		}
		else
		{
			if(grade[c]=3)
			{
				rate[c]=20.50;
			}
		}
	}

	grosspay[c] = (float)(hours[c]*rate[c])+(overtime[c]*(rate[c]*1.5));
	super[c]=(float)grosspay[c]*.05;
	netpay[c]=(float)grosspay[c]-super[c];
	
	if(netpay[c] < 600)
	{
		if(netpay[c] > 451)
		{
			taxrate[c]=.34;
		}
		else
		{
			if(netpay[c] >301)
			{
				taxrate[c]=.25;
			}
			else
			{
				if(netpay[c] > 201)
				{
					taxrate[c]=.15;
				}
				else
				{
					taxrate[c]=0;
				}
			}
		}
	}
	else
	{
		taxrate[c] = .46;
	}
	tax[c]=netpay[c]*taxrate[c];
	netpay[c]=netpay[c]-tax[c];
	cout <<"\n\n\n\n\n\n\n";
	cout << endl<<endl<<"Payslip for employee number: " << employeenumber[c]<<endl;
	cout << "---------------------------------------------------------------"<<endl;
	cout << endl << endl;
	cout << hours[c]<<" hours worked at $"<<rate[c]<<" per hour\t\t\t$"<<setprecision(5)<<hours[c]*rate[c]<<endl;
	cout << overtime[c]<<" hours of overtime at time and a half\t\t\t$"<<setprecision(5)<<overtime[c]*(rate[c]*1.5)<<endl;
	cout << "Gross pay\t\t\t\t\t\t$"<<setprecision(5)<<grosspay[c]<<endl;
	cout << "Superanuation\t\t\t\t\t\t$"<<setprecision(5)<<super[c]<<endl;
	cout << taxrate[c]*100<<"% Tax\t\t\t\t\t\t\t$"<<setprecision(5)<<tax[c]<<endl;
	cout << "---------------------------------------------------------------"<<endl<<endl;
	cout << "Net pay\t\t\t\t\t\t\t$"<<setprecision(5)<<netpay[c]<<endl;
	cout << "---------------------------------------------------------------"<<endl;
	c++;
	if( c < numberofemployees)
	{
	cout << "press enter to continue..."<<endl<<endl;
	
		null = getchar();
	}
	else
	{cout<<endl;}
	}

	return(0);
}
