Я делаю приложение для викторины, которое позволяет пользователям зарегистрироваться и войти в приложение.Детали для пользователей хранятся в текстовых файлах, и у меня есть форма, которая позволяет пользователю изменять свои имена пользователей.Я не знаю, как переопределить только имена пользователей в текстовом файле
Моя проблема в том, что я не знаю, как заменить только пароль и имя пользователя только для одного пользователя, потому что несколько пользователей могут иметь одинаковыепароль. Я уже пытался найти решение как в Stack Overflow, так и в Интернете, и я не нашел ничего похожего на мою проблему.мой текущий код заменяет пароль для каждого пользователя одним и тем же паролем, например, несколько пользователей в моем текстовом файле имеют пароль 123 для своего пароля.
private void btnUpdateUserDetails_Click(object sender, EventArgs e)
{
string oldusername = txtBoxoldUsername.Text;
string newusername = txtBoxnewUsername.Text;
string oldpassword= txtBoxoldPassword.Text;
string newpassword = txtBoxnewPassword.Text;
string confirmedpassword = txtBoxConfirmedPassword.Text;
if ((!string.IsNullOrEmpty(oldusername)) && (!string.IsNullOrEmpty(newusername))
&& (!string.IsNullOrEmpty(oldpassword)) && (!string.IsNullOrEmpty(newpassword)) && (!string.IsNullOrEmpty(confirmedpassword)))
{
if ((!oldusername.Contains("~")) || (!newusername.Contains("~")))
{
if (newpassword == confirmedpassword)
{
if (File.Exists("users.txt"))
{
string[] users = File.ReadAllLines("users.txt");
bool userFound = false;
foreach (string user in users)
{
string[] splitDetails = user.Split('~');
string username = splitDetails[1];
string password = splitDetails[2];
if ((txtBoxoldUsername.Text == username) && (txtBoxoldPassword.Text == password))
{
string text = File.ReadAllText("users.txt");
text = text.Replace(oldusername, txtBoxnewUsername.Text).Replace(oldpassword, txtBoxnewPassword.Text);
File.WriteAllText("users.txt", text);
MessageBox.Show("Username and Password Updated Successfully!",
"Tas");
txtBoxoldUsername.Text = "";
txtBoxnewUsername.Text = "";
txtBoxoldPassword.Text = "";
txtBoxnewPassword.Text = "";
txtBoxConfirmedPassword.Text = "";
break;
}
else
{
MessageBox.Show("User details are incorrect",
"Incorrect details entered");
}
}
}
else
{
MessageBox.Show("No users have been registered", "No users");
}
}
else
{
MessageBox.Show("New Passwords don't match",
"Incorrect Details");
}
}
else
{
MessageBox.Show("Username must not contain any special characters i.e. ~", "~ entered");
}
}
else
{
MessageBox.Show("Please ensure all data is entered into the fields",
"Details missing");
}
}
private void btnBack_Click(object sender, EventArgs e)
{
this.Hide();
var homeForm = new HomeForm();
homeForm.Closed += (s, args) => this.Close();
homeForm.Show();
}
}
}