diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..94a25f7f4cb416c083d265558da75d457237d671
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/app/src/main/java/com/example/myapplication/MainActivity.java b/app/src/main/java/com/example/myapplication/MainActivity.java
index c0e3d606fe8c576fcfa239296bbb3d816ba82dc9..083d135943e7e9ead033d824508ed62f46a92a25 100644
--- a/app/src/main/java/com/example/myapplication/MainActivity.java
+++ b/app/src/main/java/com/example/myapplication/MainActivity.java
@@ -2,18 +2,38 @@ package com.example.myapplication;
 
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.cardview.widget.CardView;
+import androidx.room.Room;
 
+import android.app.ProgressDialog;
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
 import android.view.View;
-import android.widget.Button;
+import android.widget.EditText;
 import android.widget.TextView;
+import android.widget.Toast;
 
 public class MainActivity extends AppCompatActivity {
+    private UserDao userDao;
+    private UserDatabase database;
+    private ProgressDialog progressDialog;
+    private EditText username;
+    private EditText password;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
+        database = Room.databaseBuilder(this, UserDatabase.class, "user.db").allowMainThreadQueries().build();
+        userDao = database.getUserDao();
+        progressDialog = new ProgressDialog(this);
+        progressDialog.setCancelable(false);
+        progressDialog.setMessage("Checking user");
+        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+        progressDialog.setProgress(0);
+
+        username = (EditText)findViewById(R.id.text1);
+        password = (EditText)findViewById(R.id.text2);
         TextView registration = (TextView)findViewById(R.id.registration);
         registration.setOnClickListener(new View.OnClickListener(){
             @Override
@@ -25,7 +45,27 @@ public class MainActivity extends AppCompatActivity {
         login.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                OpenGrade(v);
+                if(!emptyValidation()){
+                    progressDialog.show();
+                    new Handler().postDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            User user = userDao.getUser(username.getText().toString(), password.getText().toString());
+                            if(user != null){
+                                Intent intent = new Intent(MainActivity.this, Grade.class);
+                                intent.putExtra("User",user);
+                                startActivity(intent);
+                                finish();
+                            }
+                            else{
+                                Toast.makeText(MainActivity.this, "Not found user", Toast.LENGTH_SHORT).show();
+                            }
+                            progressDialog.dismiss();
+                        }
+                    }, 1000);
+                }else{
+                    Toast.makeText(MainActivity.this, "Empty field", Toast.LENGTH_SHORT).show();
+                }
             }
         });
 
@@ -39,4 +79,13 @@ public class MainActivity extends AppCompatActivity {
         Intent intent = new Intent(this, Grade.class);
         startActivity(intent);
     }
+
+    private boolean emptyValidation(){
+        if(TextUtils.isEmpty(username.getText().toString()) || TextUtils.isEmpty(password.getText().toString())){
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
 }
diff --git a/app/src/main/java/com/example/myapplication/Registration.java b/app/src/main/java/com/example/myapplication/Registration.java
index 341420df440a2317f8cf10272e829cd9f90b9b3e..370140e304756ca684c3caa15a3778b01b2e1160 100644
--- a/app/src/main/java/com/example/myapplication/Registration.java
+++ b/app/src/main/java/com/example/myapplication/Registration.java
@@ -1,14 +1,28 @@
 package com.example.myapplication;
 
 import androidx.appcompat.app.AppCompatActivity;
+import androidx.room.Room;
+import androidx.room.RoomDatabase;
 
+import android.app.ProgressDialog;
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.Handler;
+import android.text.TextUtils;
 import android.view.View;
 import android.widget.Button;
+import android.widget.EditText;
+import android.widget.Toast;
 
 public class Registration extends AppCompatActivity {
+    private EditText username;
+    private EditText password;
+    private EditText rpassword;
+    public Button registration;
 
+    private UserDao userDao;
+
+    private ProgressDialog progressDialog;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -20,9 +34,58 @@ public class Registration extends AppCompatActivity {
                 MainOpen(v);
             }
         });
+
+        progressDialog = new ProgressDialog(this);
+        progressDialog.setCancelable(false);
+        progressDialog.setMessage("Registering...");
+        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+        progressDialog.setProgress(0);
+
+        registration = (Button)findViewById(R.id.confirm);
+        username = (EditText)findViewById(R.id.username);
+        password = (EditText)findViewById(R.id.password);
+        rpassword = (EditText)findViewById(R.id.rpassword);
+
+        userDao = Room.databaseBuilder(this, UserDatabase.class, "user.db").allowMainThreadQueries().build().getUserDao();
+
+        registration.setOnClickListener(new View.OnClickListener(){
+            @Override
+            public void onClick(View v) {
+                if(!emptyValidation()){
+                    if(password.getText().toString() != rpassword.getText().toString()){
+                        progressDialog.show();
+                        new Handler().postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                User user = new User(username.getText().toString(), password.getText().toString());
+                                userDao.insert(user);
+                                progressDialog.dismiss();
+                                Intent intent = new Intent(Registration.this, MainActivity.class);
+                                startActivity(intent);
+                            }
+                        },1000);
+                    }
+                    else {
+                        Toast.makeText(Registration.this, "Retype password is not match with password", Toast.LENGTH_SHORT).show();
+                    }
+                }
+                else {
+                    Toast.makeText(Registration.this, "Empty field", Toast.LENGTH_SHORT).show();
+                }
+            }
+        });
     }
     public void MainOpen(View view){
         Intent intent = new Intent(this, MainActivity.class);
         startActivity(intent);
     }
+
+    public boolean emptyValidation(){
+        if (TextUtils.isEmpty(username.getText().toString()) || TextUtils.isEmpty(password.getText().toString()) || TextUtils.isEmpty(rpassword.getText().toString())) {
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
 }
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 6c5df217ab026c93eea653e65dafe4aedbc45ed8..cb3c6db3992f1aa9517f4cb764e9a5fca52a3671 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -23,7 +23,7 @@
         app:srcCompat="@drawable/logo" />
 
     <EditText
-        android:id="@+id/username"
+        android:id="@+id/text1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="8dp"
@@ -43,7 +43,7 @@
         app:layout_constraintTop_toBottomOf="@+id/imageView" />
 
     <EditText
-        android:id="@+id/password"
+        android:id="@+id/text2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="96dp"
@@ -60,7 +60,7 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="0.021"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/username" />
+        app:layout_constraintTop_toBottomOf="@+id/text1" />
 
     <TextView
         android:id="@+id/registration"
@@ -93,7 +93,7 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="0.058"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/password"
+        app:layout_constraintTop_toBottomOf="@+id/text2"
         tools:layout_centerHorizontal="true">
 
         <RelativeLayout
diff --git a/app/src/main/res/layout/activity_registration.xml b/app/src/main/res/layout/activity_registration.xml
index 727bae3dda5cbac98122737d76fbbcb5da2fdc93..9d07e92fb8ebce96445605298524cafc1919f3a0 100644
--- a/app/src/main/res/layout/activity_registration.xml
+++ b/app/src/main/res/layout/activity_registration.xml
@@ -24,7 +24,7 @@
         app:layout_constraintTop_toTopOf="parent" />
 
     <TextView
-        android:id="@+id/username"
+        android:id="@+id/text1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="8dp"
@@ -37,7 +37,7 @@
         app:layout_constraintTop_toBottomOf="@+id/registration" />
 
     <TextView
-        android:id="@+id/password"
+        android:id="@+id/text2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="8dp"
@@ -48,10 +48,10 @@
         android:text="Password"
         android:textColor="@color/cardview_dark_background"
         android:textSize="18sp"
-        app:layout_constraintEnd_toStartOf="@+id/editText"
+        app:layout_constraintEnd_toStartOf="@+id/password"
         app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/username" />
+        app:layout_constraintTop_toBottomOf="@+id/text1" />
 
     <TextView
         android:id="@+id/retype_password"
@@ -65,13 +65,13 @@
         android:text="Retype Password"
         android:textColor="@color/cardview_dark_background"
         android:textSize="18sp"
-        app:layout_constraintEnd_toStartOf="@+id/editText2"
+        app:layout_constraintEnd_toStartOf="@+id/rpassword"
         app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/password" />
+        app:layout_constraintTop_toBottomOf="@+id/text2" />
 
     <EditText
-        android:id="@+id/editText"
+        android:id="@+id/password"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginStart="8dp"
@@ -84,10 +84,10 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="1.0"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/editText3" />
+        app:layout_constraintTop_toBottomOf="@+id/username" />
 
     <EditText
-        android:id="@+id/editText2"
+        android:id="@+id/rpassword"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="108dp"
@@ -96,10 +96,10 @@
         android:ems="10"
         android:inputType="textPassword"
         app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/editText" />
+        app:layout_constraintTop_toBottomOf="@+id/password" />
 
     <EditText
-        android:id="@+id/editText3"
+        android:id="@+id/username"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="40dp"
@@ -122,7 +122,7 @@
         android:textSize="18sp"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/editText2" />
+        app:layout_constraintTop_toBottomOf="@+id/rpassword" />
 
     <Button
         android:id="@+id/home"