#include <iostream>
#include <conio.h>

using std::cout;
using std::cin;
using std::endl;

int  state[5];
int  duration[5][30];
int tr[5][30],bl[5][30],th[5][30];
int hr[5][30],mn[5][30];
float Bill;
float bill=0;

char u;
int uid;
void tambah(void);
void papar(void);
void Billing(void);
void SetBill(void);

void main()
{
	char c,d;
	c ='y';

	int j;
	for (j=0;j<5;j++)
		state[j] =0;

	while (c =='y'|| c=='Y')
	{
		d ='f';
		while (d == 'f')
		{
			cout << "\n                         M E N U";
			cout << "\n-------------------------------------------------------";
			cout << "\n  a.  Tambah Rekod";
			cout << "\n  b.  Paparkan Rekod";
			cout << "\n  c.  Paparkan Bill";
			cout << "\n  d.  Set Bill";
			cout << "\n  e.  Exit";
			cout << "\n-------------------------------------------------------\n";
			
			cin >> d;
			switch(d)
			{
				case 'a':
				case 'A':
					tambah();	
					d='f';
					break;   	
				case 'b':
				case 'B':
					papar();
					d='f';
					break;   	
				case 'c':
				case 'C':
					Billing();
					d='f';
					break;   	
				case 'd':
				case 'D':
					SetBill();
					d='f';
					break;   	
				case 'e':
				case 'E':
					break;   	
				default :
					d = 'f';	
			}
		}
		cout << "\n----------------------------------------\n";
		cout << "Run Program Again? [y/n] :";
		c=_getch();
		
	} 
}

void tambah(void)
{
	uid=5;
	while (uid <0 || uid >4)
	{
		cout << "\n-------------------------------------------------------\n";
		cout << "\nPilih User[A,B,C,D,E]: ";
		cin >> u;
		cout << "\n-------------------------------------------------------\n";
		switch(u)
		{
			case 'A':
			case 'a':
				uid=0;
				break;   	
			case 'B':
			case 'b':
				uid=1;
				break;   	
			case 'C':
			case 'c':	
				uid=2;
				break;   	
			case 'D':
			case 'd':	
				uid=3;
				break;   	
			case 'E':
			case 'e':
				uid=4;
				break;   	
			default :
				cout << " User Invalid\n";	
				uid=5;
		}
	}
	cout << "Masukkan Tarikh dan Masa";
	cout << "\n-------------------------------------------------------\n";
	while(tr[uid][state[uid]] <1 || tr[uid][state[uid]]>31)
	{
		cout << "Tarikh	[1-31]		:";
		cin >> tr[uid][state[uid]];
		if (tr[uid][state[uid]] <1 || tr[uid][state[uid]]>31)
			cout << "Input salah sila isi semula!\n";
	}
	while(bl[uid][state[uid]] <1 || bl[uid][state[uid]]>12)
	{
		cout << "Bulan	[1-12]		:";
		cin >> bl[uid][state[uid]];
		if(bl[uid][state[uid]] <1 || bl[uid][state[uid]]>12)
			cout << "Input salah sila isi semula!\n";
	}
	while(th[uid][state[uid]] <1000 || th[uid][state[uid]]>9000)
	{
		cout << "Tahun	[1000-9000]	:";
		cin >> th[uid][state[uid]];
		if(th[uid][state[uid]] <1000 || th[uid][state[uid]]>9000)
			cout << "Input salah sila isi semula!\n";
	}
	while(hr[uid][state[uid]] <1 || hr[uid][state[uid]]>24)
	{
		cout << "Jam	[1-24]		:";
		cin >> hr[uid][state[uid]];
		if(hr[uid][state[uid]] <1 || hr[uid][state[uid]]>24)
			cout << "Input salah sila isi semula!\n";
	}
	while(mn[uid][state[uid]] <1 || mn[uid][state[uid]]>60)
	{
		cout << "Minit	[1-60]		:";
		cin >> mn[uid][state[uid]];
		if(mn[uid][state[uid]] <1 || mn[uid][state[uid]]>60)
			cout << "Input salah sila isi semula!\n";
	}
	cout << "\n-------------------------------------------------------\n";
	cout << "Masukkan Tempoh [minit] : ";
	cin >> duration[uid][state[uid]];
	cout << "\n-------------------------------------------------------\n";
	state[uid] ++;
	
}

void papar(void)
{
	int i,j;
	char usr[5]="User";
	if(bill== 0) SetBill();	
	cout << "\n\n\nUser\tTarikh\t\tMasa\tTempoh[Mnt]\tBill \n";
	cout << "\n-------------------------------------------------------";
	for (i=0;i<5;i++)
    {
		
		for (j=0;j<state[i];j++)
		{
			Bill =  bill * (duration[i][j]) ;
			cout <<"\n"<<usr<<i+1<<"\t";
			cout <<tr[i][j]<<"-"<<bl[i][j]<<"-"<<th[i][j]<<"\t";
			cout <<hr[i][j]<<":"<<mn[i][j]<<"\t";
			cout <<duration[i][j]<<"\t\tRM  "<<Bill;
		}
	}
	cout << "\n-------------------------------------------------------\n\n\n";
}

void Billing(void)
{
	int i,j;
	int totaldur[5];
	char usr[5]="User";
	if(bill==0) SetBill();
	cout << "\n\n\nUser\tTotal Tempoh[Mnt]\t Total Bill \n";
	cout << "\n-------------------------------------------------------";
	for (i=0;i<5;i++)
    {
		totaldur[i]=0;
		for (j=0;j<state[i];j++)
		{
			totaldur[i] = totaldur[i] + duration[i][j];
		}
		Bill =  bill * totaldur[i] ;
		cout <<"\n"<<usr<<i+1<<"\t";
		cout <<totaldur[i]<<"\t\t\tRM  "<<Bill;
	}
	cout << "\n-------------------------------------------------------\n\n\n";
}

void SetBill(void)
{
	cout << "\nCharge Bill Seminit ?  RM ";
	cin  >> bill;
}