#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <cstdlib>
#include <ctime>

#define size 40

using namespace std;

class Time
{
	protected:
		time_t tt;
		struct tm* current_time;
	
	public:
		void displayTime();
};

void Time::displayTime()
{
	time (&tt);
    current_time = localtime(&tt); 
    
    cout << asctime(current_time) << endl;
}

class User:public Time
{
	protected:
		string name, password;
	
	public:
		string getname() const{return name;}
		string getpassword() const{return password;}
		
		void detail();//print the detail of user account
		
		
		void registration();
		bool verification();
};

void User::detail()
{
	cout << name << password;
	displayTime();
}

void User::registration()
{
	string username;

	cout << "Please enter your username: "; cin >> username;
	cout << "Please enter your password: "; cin >> password;
			
	name = username;
	username+=".txt";
		
	ofstream write(username.c_str());
	write << name << " " << password;
		
	write.close();
}

bool User::verification()
{
	A:
	string DBusername, DBpassword;
	string un, pw, name;
	
	cout << "Enter Username: "; cin >> un;
	cout << "Enter Password: "; cin >> pw;
	
	ifstream read;
	name = un;
	un+=".txt";
	read.open(un.c_str());
	
	if (!read.is_open())
	{
		cout << "This user account does not exists" << endl;
		goto A;
	}
	
	getline(read, DBusername);
	getline(read, DBpassword);
	
	bool status;
	
	if ((DBusername==name) && (DBpassword==password))
		status = true;
	else
		status = false;
	
	if (status == true)
		cout << "Succesfully Logged-In!" << endl;
	else
		cout << "Failed...!" << endl;
	
	read.close();
	return status;
}

int main()
{
	User account;
	account.detail();
	account.registration();
	account.verification();
	return 0;
}



