Serial Moniter is repeating output
Change 

if(Serial.available())
    user_name = Serial.readStringUntil('\n');
{


to

if(Serial.available()) {
    user_name = Serial.readStringUntil('\n');


Edit: The reason why it didn't work properly was because all subsequent ifs were evaluated repeatedly regardless of whether there was anything new in the serial buffer or not. The modification fixes that problem.