using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SettingsTest.Properties;
using System.IO;
using System.Collections;
namespace SettingsTest
{
public partial class Form1 : Form
{
// ############################################### ZMIENNE GLOBALNE ##############################################
// deklaracja tablic rejestracji użytkownika
string[] wprowadzLogin_tablica = null;
string[] wprowadzHaslo_tablica = null;
string[] powtorzWprowadzHaslo_tablica = null;
string[] wprowadzNrTel_tablica = null;
string[] wprowadzInnaInformacja_tablica = null;
int ktoraOsoba = 0;
bool wykonanieRejestracji = false;
// domyślna wartość formularzu rejestracji użytkownika
string LoginDomyslny_tekst = "login";
string HasloDomyslny_tekst = "hasło";
string LoginRejestracjaDomyslny_tekst = "login";
string HasloRejestracjaDomyslny_tekst = "hasło";
string PowtorzHasloRejestracjaDomyslny_tekst = "powtórz hasło";
string NrTelefonuRejestracjaDomyslny_tekst = "nr telefonu";
string InnaInformacjaRejestracjaDomyslny_tekst = "inna informacja";
// katalog kontrolek typu textBox
Dictionary<TextBox, string> dic;
// ############################################### KONSTRUKTOR ##############################################
public Form1()
{
InitializeComponent();
// ustawienie napisu na wysokości komunikatu : Twoje konto zostało usunięte
zalogujSie_label.Location = new Point(16, 151);
zalogujSie_label2.Location = new Point(16, 180);
// obowiązkowe pola formularzu rejestracji
dic = new Dictionary<TextBox, string>();
dic.Add(wprowadzLogin, "login");
dic.Add(wprowadzHaslo, "hasło");
dic.Add(powtorzWprowadzHaslo, "powtórz hasło");
}
// ############################################### MENU ##############################################
// ZAPISZ USTAWIENIA //
// zapis stanu kontrolek do pliku TXT
private void zapisz_stan(bool x)
{
// zapis stanu do pliku _name.txt
TextWriter tw = new StreamWriter("date.txt");
// skonwertowanie zapisanej wartości do int 16 bitowego
tw.WriteLine(Convert.ToInt16(x));
tw.Close();
}
// odczyt stanu kontrolek z pliku TXT
private void stan(RadioButton x)
{
TextReader tr = new StreamReader("date.txt");
int zmienna = Convert.ToInt16(tr.ReadLine());
if (zmienna == 1)
{
x.Checked = true;
}
else
{
x.Checked = false;
}
tr.Close();
}
private void btnWrite_Click(object sender, EventArgs e)
{
zapisz_stan(ukryjUzytkownikow_kontrolka.Checked);
zapisz_stan(pokazUzytkownikow_kontrolka.Checked);
zapisz_stan(pokazUstawienia_check.Checked);
}
private void btnRead_Click(object sender, EventArgs e)
{
stan(ukryjUzytkownikow_kontrolka);
stan(pokazUzytkownikow_kontrolka);
}
// ############################################### LOGOWANIE ##############################################
// formularz logowania ( loginBox - pole loginu , loginHasło - pole hasła )
private void loginBox_Click(object sender, EventArgs e)
{
// jeżeli w TextBoxie istnieje tekst domyślny to go kasujemy
if (loginBox.Text == LoginDomyslny_tekst) loginBox.Text = "";
}
private void hasloBox_Click(object sender, EventArgs e)
{
if (hasloBox.Text == HasloDomyslny_tekst) hasloBox.Text = "";
// Włączenie pola jako PASSWD w chwili usunięcia tekstu domyślnego
hasloBox.UseSystemPasswordChar = false;
}
private void LogowaniePrzycisk_Click(object sender, EventArgs e)
{
// wywołanie przycisku odczytajDane
odczytajDane_Click(sender, e);
// ADMIN - logowanie
string login_admina = "admin";
string haslo_admina = "12345";
// SPRAWDZENIE - logowania || wyświetlamy panel administratora
if (loginBox.Text == login_admina && hasloBox.Text == haslo_admina)
{
panelMenu.Visible = true;
// panel użytkownika, zmiana napisu kto zalogowany
panel1.Visible = true;
panelLogowania.Visible = false;
twojLogin.Text = "";
twojLogin.Text += login_admina;
splitContainer1.Panel2.BackColor = System.Drawing.Color.Azure;
if (pokazUzytkownikow_kontrolka.Checked == false && ukryjUzytkownikow_kontrolka.Checked == false)
{
ukryci_uzytkownicy.Visible = true;
ukryci_uzytkownicy.Items.Add("Aktualnie nie ma użytkowników w bazie !");
}
return;
}
// ############################################### PANEL UŻYTKOWNIKA ##############################################
bool ok = false;
for (int i = 0; i < wprowadzLogin_tablica.Length;i++)
{
if (loginBox.Text == wprowadzLogin_tablica[i] && hasloBox.Text == wprowadzHaslo_tablica[i])
{
panelMenu.Visible = true;
ok = true;
panel2.Visible = true;
panel1.Visible = false;
panelLogowania.Visible = false;
twojLogin.Text = "";
Login_usera.Text = "";
NrTelUsera.Text = "";
InnaInformacja_usera.Text = "";
splitContainer1.Panel2.BackColor = System.Drawing.Color.Honeydew;
// jeżeli w polu wprowadzNrTel (formularz rejestracji) istnieje tekst domyślny, zmieniamy napis na "nie podano danych"
if (wprowadzNrTel.Text == "nr telefonu") NrTelUsera.Text = "nie podano nr tel";
else NrTelUsera.Text += wprowadzNrTel_tablica[i];
if (wprowadzInnaInformacja.Text == "inna informacja") InnaInformacja_usera.Text = "nie podano informacji";
else InnaInformacja_usera.Text += wprowadzInnaInformacja_tablica[i];
// nadpisanie tekstu domyślnego wprowadzonym tekstem z tablicy
twojLogin.Text += wprowadzLogin_tablica[i];
Login_usera.Text += wprowadzLogin_tablica[i];
}
}
if (!ok) { MessageBox.Show("Podano nie poprawne bądź nie istniejące dane logowania !", "Logowanie", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
panel1.Visible = true;
}
// wylogowanie użytkownika
private void wylogujLabel_Click(object sender, EventArgs e)
{
// przywrócenie domyślnych wartości pól
loginBox.Text = LoginDomyslny_tekst;
hasloBox.Text = HasloDomyslny_tekst;
hasloBox.UseSystemPasswordChar = true;
panelLogowania.Visible = true;
if (loginBox.Text != "admin")
{
splitContainer1.Panel2.BackColor = System.Drawing.Color.LightBlue;
panel2.Visible = false;
panel1.Visible = false;
panelMenu.Visible = false;
}
else
{
splitContainer1.Panel2.BackColor = System.Drawing.Color.LightBlue;
panel1.Visible = false;
panel2.Visible = true;
panelMenu.Visible = false;
}
}
// ############################################### PANEL ADMINA ##############################################
private void dodajUzytkownika_Click(object sender, EventArgs e)
{
// odkrywamy panel rejestracji użytkownika, tym samym wyświetlamy przycisk ukrywający panel rejestracji
panelDodaniaUsera.Visible = true;
ukryjFormularz.Visible = true;
dodajUzytkownika.Visible = false;
ukryjFormularz.Location = new Point(9, 9);
}
private void ukryjFormularz_Click(object sender, EventArgs e)
{
// ukrywamy panel rejestracji użytkownika, tym samym wyświetlamy przycisk odkrywający panel rejestracji
panelDodaniaUsera.Visible = false;
dodajUzytkownika.Location = new Point(9, 9);
dodajUzytkownika.Visible = true;
ukryjFormularz.Visible = false;
}
// rejestracja użytkownika - - ukrywanie tekstu domyślnego z pól formularzu - -
private void wprowadzUseraUsuniecie_Click(object sender, EventArgs e)
{
// jeżeli w polu wprowadzLogin istnieje tekt domyślny to kasujemy zawartość pola
if (wprowadzLogin.Text == LoginRejestracjaDomyslny_tekst) wprowadzLogin.Text = "";
}
private void wprowadzHasloUsuniecie_Click(object sender, EventArgs e)
{
if (wprowadzHaslo.Text == HasloRejestracjaDomyslny_tekst) wprowadzHaslo.Text = "";
wprowadzHaslo.UseSystemPasswordChar = false;
}
private void powtorzWprowadzHasloUsunicie_Click(object sender, EventArgs e)
{
if (powtorzWprowadzHaslo.Text == PowtorzHasloRejestracjaDomyslny_tekst) powtorzWprowadzHaslo.Text = "";
powtorzWprowadzHaslo.UseSystemPasswordChar = false;
}
private void wprowadzNrTelUsuniecie_Click(object sender, EventArgs e)
{
if (wprowadzNrTel.Text == NrTelefonuRejestracjaDomyslny_tekst) wprowadzNrTel.Text = "";
}
private void wprowadzInnaInformacjaUsuniecie_Click(object sender, EventArgs e)
{
if (wprowadzInnaInformacja.Text == InnaInformacjaRejestracjaDomyslny_tekst) wprowadzInnaInformacja.Text = "";
}
// walidacja formularzu rejestracji
private void RejestracjaPrzycisk_Click(object sender, EventArgs e)
{
// utworzenie listy stringów
List<string> failedFields = new List<string>();
// przelecenei po wszystkich konstrolkach
foreach (var key in dic.Keys)
{
// sprawdzenei czy kontrolka nie jest pusta bądź nie posiada tekstu z TAG
if (string.IsNullOrEmpty(key.Text) || key.Text == (string)key.Tag)
{
// jezeli posiada zapisujemy ją w tablicy dic
failedFields.Add(dic[key]);
}
}
// sprawdzenie
if (failedFields.Any())
{
// wyświetlenie napisu wraz z czytaniem wartości z tablicy KEY'a
string message = "Wymagane pola nie są uzupełnione!" + Environment.NewLine
+ string.Join(Environment.NewLine, failedFields);
MessageBox.Show(message);
}
// jeżeli nie ma błędu
else
{
// tworzymy dynamiczną tablicę przetrzymującą ile osób mamy jednorazowo wprowadzić do tablicy
int UzytkownikowDoWprowadzenia = 1;
wprowadzLogin_tablica = new string[UzytkownikowDoWprowadzenia];
wprowadzHaslo_tablica = new string[UzytkownikowDoWprowadzenia];
powtorzWprowadzHaslo_tablica = new string[UzytkownikowDoWprowadzenia];
wprowadzNrTel_tablica = new string[UzytkownikowDoWprowadzenia];
wprowadzInnaInformacja_tablica = new string[UzytkownikowDoWprowadzenia];
try
{
// przepisujemy dane z pól formularzu do tablicy
wprowadzLogin_tablica[ktoraOsoba] = wprowadzLogin.Text;
wprowadzHaslo_tablica[ktoraOsoba] = wprowadzHaslo.Text;
powtorzWprowadzHaslo_tablica[ktoraOsoba] = powtorzWprowadzHaslo.Text;
wprowadzNrTel_tablica[ktoraOsoba] = wprowadzNrTel.Text;
wprowadzInnaInformacja_tablica[ktoraOsoba] = wprowadzInnaInformacja.Text;
// odczytajDane_Click(sender, e);
/* for (int i = 0; i < 1; i++)
{
if (wprowadzLogin.Text == wprowadzLogin_tablica[i])
{
this.wprowadzLogin.BackColor = System.Drawing.Color.MistyRose;
return;
}
else
{
this.wprowadzLogin.BackColor = System.Drawing.Color.White;
}
}*/
// jeżeli pola haseł są różne, zaznaczamy pola i kończymy działanie funkcji
if (wprowadzHaslo.Text != powtorzWprowadzHaslo.Text)
{
this.wprowadzHaslo.BackColor = System.Drawing.Color.MistyRose;
this.powtorzWprowadzHaslo.BackColor = System.Drawing.Color.MistyRose;
return;
}
else
{
this.wprowadzHaslo.BackColor = System.Drawing.Color.White;
this.powtorzWprowadzHaslo.BackColor = System.Drawing.Color.White;
}
// konwersja textBoxa na stringa w celu sprawdzenia długości znaków i ew. wywaleniu błędu
string wprowadzNrTel_ciag = wprowadzNrTel.Text;
if (wprowadzNrTel_ciag.Length == 9 || wprowadzNrTel_ciag.Length == 0 || wprowadzNrTel_ciag == "nr telefonu")
{
this.wprowadzNrTel.BackColor = System.Drawing.Color.White;
}
else
{
this.wprowadzNrTel.BackColor = System.Drawing.Color.MistyRose;
return;
}
}
// gdyby coś podczas zapisu poszło nie tak
catch
{
MessageBox.Show("Błędny zapis - spróbuj ponownie", "Walidacja formularzu", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
// wyświeltenie użytkowników w panelu administratora
// zmienne lokalne oznaczające wprowadzoną wartość dotyczącą użytkownika
string wyswietlenie_loginu = "Login: ";
string wyswietlenie_nr_tel = "Numer telefonu: ";
string wyswietlenie_inna_informacja = "Inna informacja: ";
// wyświetlenie wartości na ListBoxie z tablicy
uzytkownicy.Items.Clear();
uzytkownicy.Items.Add("Osoba nr : " + ktoraOsoba);
wyswietlenie_loginu += wprowadzLogin_tablica[ktoraOsoba];
uzytkownicy.Items.Add(wyswietlenie_loginu);
wyswietlenie_nr_tel += wprowadzNrTel_tablica[ktoraOsoba];
uzytkownicy.Items.Add(wyswietlenie_nr_tel);
wyswietlenie_inna_informacja += wprowadzInnaInformacja_tablica[ktoraOsoba];
uzytkownicy.Items.Add(wyswietlenie_inna_informacja);
// nowa linia po każdym użytkowniku
uzytkownicy.Items.Add("");
// koniec rejestracji
MessageBox.Show("Rejestracja zakończona pomyślnie", "Rejestracja", MessageBoxButtons.OK, MessageBoxIcon.Information);
// rejestracja się wykonała, zmieniamy stan kontrolki na TRUE aby móc wyświetlić dane zarejestrowanej osoby w ListBoxie
wykonanieRejestracji = true;
if (wykonanieRejestracji == true)
{
// skasowanie treści formularzu
wprowadzLogin.Text = "";
wprowadzHaslo.Text = "";
powtorzWprowadzHaslo.Text = "";
wprowadzNrTel.Text = "";
wprowadzInnaInformacja.Text = "";
// przywrócenie tekstu domyślnego
wprowadzLogin.Text = LoginRejestracjaDomyslny_tekst;
wprowadzHaslo.Text = HasloRejestracjaDomyslny_tekst;
powtorzWprowadzHaslo.Text = PowtorzHasloRejestracjaDomyslny_tekst;
wprowadzNrTel.Text = NrTelefonuRejestracjaDomyslny_tekst;
wprowadzInnaInformacja.Text = InnaInformacjaRejestracjaDomyslny_tekst;
zapiszDane_Click(sender, e);
// RejestracjaPrzycisk_Click(sender, e);
}
}
}
// dodatkowa walidacja nr komórkowego - ta sprawdza czy wprowadzone wartości są liczbami w przeciwnym razie zwraca błąd
private void wprowadzNrTel_KeyUp(object sender, EventArgs e)
{
try
{
int value = int.Parse(this.wprowadzNrTel.Text);
}
catch
{
this.wprowadzNrTel.BackColor = System.Drawing.Color.MistyRose;
return;
}
}
// DO PANELU UŻYTKOWNIKA
private void pokazUstawienia_check_CheckedChanged(object sender, EventArgs e)
{
if (pokazUstawienia_check.Checked == true)
{
panelZmianyDanychUsera.Visible = true;
}
else
{
panelZmianyDanychUsera.Visible = false;
pokazUstawienia_check.Checked = false;
}
}
// zapis tablic do pliku TXT
private void zapiszDane_Click(object sender, EventArgs e)
{
// otwarcie pliku do zapisu, wraz z opcją dopisywania do pliku - true
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\w.txt", true)) {
// lecimy po wszystkich elementach tablicy
for (int i = 0; i < wprowadzLogin_tablica.Length; i++)
// uzupełniamy plik na podstawie elementów tablicy wprowadzLogin
foreach (string line in wprowadzLogin_tablica)
{
// zapis każdej tablicy jako osobnego wierszu do pliku TXT
file.WriteLine(wprowadzLogin_tablica[i]);
file.WriteLine(wprowadzHaslo_tablica[i]);
file.WriteLine(powtorzWprowadzHaslo_tablica[i]);
file.WriteLine(wprowadzNrTel_tablica[i]);
file.WriteLine(wprowadzInnaInformacja_tablica[i]);
}
}
}
// odczyt tablic z pliku TXT
private void odczytajDane_Click(object sender, EventArgs e)
{
// utworzenie obiektu ArrayList - tablica
ArrayList tablica = new ArrayList();
string line;
// otworzenie pliku do czytania jego zawartości
System.IO.StreamReader file = new System.IO.StreamReader(@"c:\w.txt");
// czytanie pliku linijka po linijce do zmiennej tablica
while ((line = file.ReadLine()) != null)
{
tablica.Add(line);
}
// ponowne utworzenie tablic o wielkości 1/5 każdej tablicy
wprowadzLogin_tablica = new string[tablica.Count / 5];
wprowadzHaslo_tablica = new string[tablica.Count / 5];
powtorzWprowadzHaslo_tablica = new string[tablica.Count / 5];
wprowadzNrTel_tablica = new string[tablica.Count / 5];
wprowadzInnaInformacja_tablica = new string[tablica.Count / 5];
// zapis do tablicy
int j = 0;
for (int i = 0; i < tablica.Count; i++)
{
// zapisujemy każdy wiersz pliku TXT do odpowiadającej jemu tablicy
if (i % 5 == 0) {wprowadzLogin_tablica[j] = tablica[i].ToString();}
if (i % 5 == 1) {wprowadzHaslo_tablica[j] = tablica[i].ToString();}
if (i % 5 == 2) {powtorzWprowadzHaslo_tablica[j] = tablica[i].ToString();}
if (i % 5 == 3) {wprowadzNrTel_tablica[j] = tablica[i].ToString();}
if (i % 5 == 4) {wprowadzInnaInformacja_tablica[j++] = tablica[i].ToString();}
}
// zamknięcie pliku
file.Close();
}
private void ukryjUzytkownikow_kontrolka_CheckedChanged(object sender, EventArgs e)
{
// jeżeli chcemy ukryć użytkownikow, ukrywamy listBox użytkownicy a w zamian tego otwieramy listBox informujący, że użytkownicy
// zostali ukryci
if (ukryjUzytkownikow_kontrolka.Checked == true)
{
uzytkownicy.Visible = false;
ukryci_uzytkownicy.Visible = true;
ukryci_uzytkownicy.Items.Clear();
ukryci_uzytkownicy.Items.Add("Użytkownicy zostali ukryci !");
}
}
// jeżeli chcemy pokazać użytkowników ukrywamy ListBox z ukrytymi użytkownikami
// dodatkowo sprawdzamy czy wykonano rejestrację, jeżeli nie, wyświetlamy napis : "Aktualnie nie ma użytkowników w bazie"
private void pokazUzytkownikow_kontrolka_CheckedChanged(object sender, EventArgs e)
{
if (pokazUzytkownikow_kontrolka.Checked == true) {
ukryci_uzytkownicy.Visible = false;
uzytkownicy.Visible = true;
}
if (wykonanieRejestracji == false)
{
ukryci_uzytkownicy.Visible = true;
uzytkownicy.Items.Clear();
uzytkownicy.Items.Add("Aktualnie nie ma użytkowników w bazie !");
}
}
private void usunUzytkownika_przycisk_Click(object sender, EventArgs e)
{
int Index = uzytkownicy.SelectedIndex;
uzytkownicy.Items[Index] = wprowadzLogin_tablica[0];
MessageBox.Show(wprowadzLogin_tablica[0]);
}
}
}