Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.IO;
- namespace BazaDanych
- {
- class Program
- {
- public const string NAGLOWEK_PLIK = "[BazaDanych]";
- public const string KLUCZ_ROZMIARTABLICY = "RozmiarTablicy";
- public const string NAGLOWEK_OSOBA = "[Osoba]";
- public const string KLUCZ_ID = "ID";
- public const string KLUCZ_IMIE = "Imie";
- public const string KLUCZ_NAZWISKO = "Nazwisko";
- public const string KLUCZ_WIEK = "Wiek";
- public struct Osoba
- {
- public int id;
- public string Imie;
- public string Nazwisko;
- public int Wiek;
- public override string ToString()
- {
- return $"ID = {id} Imie = {Imie} Nazwisko = {Nazwisko} Wiek = {Wiek}";
- }
- }
- public static void MenuProgramu()
- {
- Console.Clear();
- SprawdzRozmiar("Aktualna ilosc elementow bazy to: ");
- Console.WriteLine("|-------------- BAZA DANCYH -------------|");
- Console.WriteLine("| 1. Tworzenie nowej bazy |");
- Console.WriteLine("| 2. Dodawanie osob do bazy |");
- Console.WriteLine("| 3. Wyswietlanie wszystkich rekordów bazy|");
- Console.WriteLine("| 4. Wyszukiwanie w bazie |");
- Console.WriteLine("| 5. Zmiana danych w bazie |");
- Console.WriteLine("| 6. Eksport bazy do pliku .txt |");
- Console.WriteLine("| 7. Eksport bazy do pliku .csv |");
- Console.WriteLine("| 0. Wyjscie z programu |");
- Console.WriteLine("|-----------------------------------------|");
- int menu = WprowadzInt("Wybierz opcje: ", "Nie ma takiej opcji w Menu!. Wybierz z zakresu: ", 0, 7);
- switch (menu)
- {
- case 1:
- Console.Clear();
- SprawdzCzyJestBaza();
- break; ;
- case 2:
- Console.Clear();
- DodajDoBazy();
- break;
- case 3:
- Console.Clear();
- odczyt();
- break;
- case 4:
- Console.Clear();
- dupa();
- break;
- case 5:
- Console.Clear();
- ZmianaWBazie();
- break;
- case 6:
- Console.Clear();
- openfile(@"C:\Temp\plikbazy_temp.txt");
- break;
- case 7:
- Console.Clear();
- ExportCSV();
- break;
- default:
- return;
- }
- return;
- }
- public static void PowrotDoMenu()
- {
- Console.WriteLine();
- Console.Write("Nacisnij dowolny przycisk aby wrócić do menu...");
- Console.ReadKey();
- MenuProgramu();
- }
- public static string Dane(string tekst, string error)
- {
- string wyraz;
- while (true)
- {
- Console.Write(tekst);
- wyraz = Console.ReadLine();
- bool czyliczba = wyraz.Any(char.IsDigit);
- if (wyraz == "")
- {
- Console.WriteLine("Musisz cos podac!");
- }
- if (!czyliczba)
- {
- break;
- }
- else
- {
- Console.WriteLine($"{error} nie moze zawierac cyfr!");
- }
- }
- return wyraz;
- }
- public static int WprowadzInt(string Tekst, string TekstBledu, int Min = int.MinValue, int Max = int.MaxValue)
- {
- int Wynik = 0;
- while (true)
- {
- Console.Write(Tekst);
- if (int.TryParse(Console.ReadLine(), out Wynik) &&
- Wynik >= Min && Wynik <= Max)
- {
- break;
- }
- else
- {
- Console.WriteLine($"{TekstBledu} Wybierz z zakresu: {Min}-{Max}!");
- }
- }
- return Wynik;
- }
- public static bool OdczytajDane(string NazwaPliku, out Osoba[] ListaOsob)
- {
- ListaOsob = null;
- if (!string.IsNullOrEmpty(NazwaPliku))
- {
- try
- {
- using (StreamReader plik = new StreamReader(NazwaPliku))
- {
- string Linia = plik.ReadLine();
- if (Linia != NAGLOWEK_PLIK)
- throw new Exception("Błędny nagłówek pliku!");
- Linia = plik.ReadLine();
- string[] KluczWartosc = Linia.Split('=');
- if (KluczWartosc[0] != KLUCZ_ROZMIARTABLICY)
- throw new Exception("Brak rozmiaru tablicy!");
- int Rozmiar = int.Parse(KluczWartosc[1]);
- if (Rozmiar < 1)
- throw new Exception("Błędny rozmiar tablicy! Powinien być > 0");
- ListaOsob = new Osoba[Rozmiar];
- int Indeks = -1;
- while (true)
- {
- if (plik.EndOfStream)
- break;
- Linia = plik.ReadLine();
- if (Linia == NAGLOWEK_OSOBA)
- Indeks++;
- if (Indeks + 1 > Rozmiar)
- break;
- if (Linia != NAGLOWEK_OSOBA && Indeks > -1)
- {
- KluczWartosc = Linia.Split('=');
- if (KluczWartosc.Length == 2)
- {
- if (KluczWartosc[0] == KLUCZ_ID)
- {
- int wynikID = 0;
- if (int.TryParse(KluczWartosc[1], out wynikID))
- {
- ListaOsob[Indeks].id = wynikID;
- }
- }
- else
- if (KluczWartosc[0] == KLUCZ_IMIE)
- ListaOsob[Indeks].Imie = KluczWartosc[1];
- else
- if (KluczWartosc[0] == KLUCZ_NAZWISKO)
- ListaOsob[Indeks].Nazwisko = KluczWartosc[1];
- else
- if (KluczWartosc[0] == KLUCZ_WIEK)
- {
- int Wynik = 0;
- if (int.TryParse(KluczWartosc[1], out Wynik))
- {
- ListaOsob[Indeks].Wiek = Wynik;
- }
- }
- }
- }
- }
- }
- return true;
- }
- catch (FileNotFoundException e)
- {
- Console.WriteLine("Nie masz jeszcze bazy! Stworz nowa!");
- NowaBaza();
- }
- catch (Exception e)
- {
- Console.WriteLine($"Błąd : {e.Message}");
- ListaOsob = null;
- }
- }
- else
- {
- NowaBaza();
- }
- return false;
- }
- public static bool ZapiszDane(string NazwaPliku, Osoba[] ListaOsob)
- {
- if (!string.IsNullOrEmpty(NazwaPliku) && ListaOsob != null
- && ListaOsob.Length > 0)
- {
- try
- {
- using (StreamWriter plik = new StreamWriter(NazwaPliku))
- {
- plik.WriteLine(NAGLOWEK_PLIK);
- plik.WriteLine($"{KLUCZ_ROZMIARTABLICY}={ListaOsob.Length}");
- foreach (Osoba osoba in ListaOsob)
- {
- plik.WriteLine(NAGLOWEK_OSOBA);
- plik.WriteLine($"{KLUCZ_ID}={osoba.id}");
- plik.WriteLine($"{KLUCZ_IMIE}={osoba.Imie}");
- plik.WriteLine($"{KLUCZ_NAZWISKO}={osoba.Nazwisko}");
- plik.WriteLine($"{KLUCZ_WIEK}={osoba.Wiek}");
- }
- }
- return true;
- }
- catch (Exception e)
- {
- Console.WriteLine($"Błąd : {e.Message}");
- }
- }
- return false;
- }
- static void odczyt()
- {
- Osoba[] osoby = null;
- if (OdczytajDane(@"C:\Temp\plikbazy.txt", out osoby)
- && osoby != null)
- {
- foreach (Osoba osoba in osoby)
- Console.WriteLine(osoba);
- }
- else
- {
- Console.WriteLine("buba");
- }
- Console.WriteLine();
- Console.Write("Nacisnij dowolny przycisk aby wrócić do menu...");
- Console.ReadKey();
- MenuProgramu();
- return;
- }
- static void ZmianaWBazie()
- {
- Osoba[] osoby = null;
- OdczytajDane(@"C:\Temp\plikbazy.txt", out osoby);
- int indeks = WprowadzInt("Podaj numer rekordu osoby ktora chcesz zmienic: ", "Nie ma takiej osoby!", 1, osoby.Length);
- Console.WriteLine("Co chcesz zmienic ?");
- Console.WriteLine("1. Imie ");
- Console.WriteLine("2. Nazwisko ");
- Console.WriteLine("3. Wiek ");
- Console.WriteLine("0. Powrot");
- int x = WprowadzInt("", "Nie ma takiego pola!", 0, 3);
- switch (x)
- {
- case 1:
- osoby[indeks - 1].Imie = Dane("Podaj nowe imie: ", "Imie");
- break;
- case 2:
- osoby[indeks - 1].Nazwisko = Dane("Podaj nowe nazwisko ", "Nazwisko");
- break;
- case 3:
- osoby[indeks - 1].Wiek = WprowadzInt($"Podaj nowy wiek ", "Wiek nie miesci sie w zakresie!", 1, 120);
- break;
- default:
- MenuProgramu();
- break;
- }
- if (ZapiszDane(@"c:\temp\plikbazy.txt", osoby))
- {
- Console.WriteLine("Poprawnie dodano do bazy");
- }
- else
- {
- Console.WriteLine("Buba");
- }
- PowrotDoMenu();
- }
- static void DodajDoBazy()
- {
- Osoba[] osoby = null;
- OdczytajDane(@"C:\Temp\plikbazy.txt", out osoby);
- if (osoby.Length > 0)
- {
- int b = osoby.Length;
- int a = WprowadzInt("Podaj ile wprowdzisz osób: ", "Wartosc nie miesci sie w zakresie!", 0);
- Console.WriteLine();
- Array.Resize(ref osoby, osoby.Length + a);
- for (int i = b; i < osoby.Length; i++)
- {
- osoby[i].id = i + 1;
- osoby[i].Imie = Dane($"Podaj Imie {i + 1} osoby: ", "Imie");
- osoby[i].Nazwisko = Dane($"Podaj Nazwisko {i + 1} osoby: ", "Nazwisko");
- osoby[i].Wiek = WprowadzInt($"Podaj Wiek {i + 1} osoby: ", "Wiek nie miesci sie w zakresie!", 1, 120);
- Console.WriteLine();
- }
- }
- else
- {
- NowaBaza();
- }
- if (ZapiszDane(@"c:\temp\plikbazy.txt", osoby))
- {
- Console.WriteLine("Poprawnie dodano do bazy");
- }
- else
- {
- Console.WriteLine("Buba");
- }
- PowrotDoMenu();
- }
- static void SprawdzCzyJestBaza()
- {
- Osoba[] osoby = null;
- if (OdczytajDane(@"C:\Temp\plikbazy.txt", out osoby))
- {
- string litera;
- Console.WriteLine("Masz juz baze! Jesteś pewien że chcesz ja nadpisac? (t/n)");
- do
- litera = Console.ReadLine().ToLower();
- while (litera != "t" && litera != "n");
- if (litera == "t")
- {
- NowaBaza();
- }
- PowrotDoMenu();
- }
- }
- static void NowaBaza()
- {
- Osoba[] osoby = new Osoba[WprowadzInt("Podaj ile wprowdzisz osób: ", "Podana wartosc nie miesci sie w zakresie!", 1)];
- for (int i = 0; i < osoby.Length; i++)
- {
- osoby[i].id = i + 1;
- osoby[i].Imie = Dane($"Podaj Imie {i + 1} osoby: ", "Imie");
- osoby[i].Nazwisko = Dane($"Podaj Nazwisko {i + 1} osoby: ", "Nazwisko");
- osoby[i].Wiek = WprowadzInt($"Podaj Wiek {i + 1} osoby: ", "Wiek nie miesci sie w zakresie!", 1, 120);
- Console.WriteLine();
- }
- if (ZapiszDane(@"c:\temp\plikbazy.txt", osoby))
- {
- Console.WriteLine("Poprawnie dodano do bazy");
- }
- else
- {
- Console.WriteLine("Buba");
- }
- Console.Write("Nacisnij dowolny przycisk aby wrócić do menu...");
- Console.ReadKey();
- MenuProgramu();
- }
- public static void SprwadzanieTablicy(string NazwaPliku, out Osoba[] ListaOsob)
- {
- ListaOsob = null;
- using (StreamReader plik = new StreamReader(NazwaPliku))
- {
- string Linia = plik.ReadLine();
- Linia = plik.ReadLine();
- string[] KluczWartosc = Linia.Split('=');
- if (KluczWartosc[0] != KLUCZ_ROZMIARTABLICY)
- throw new Exception("Brak rozmiaru tablicy!");
- int Rozmiar = int.Parse(KluczWartosc[1]);
- if (Rozmiar < 1)
- throw new Exception("Nie ma zadnych wpisów w bazie danych!");
- Console.WriteLine($"Obecna ilość rekordów w bazie wynosi: {Rozmiar}");
- Console.WriteLine();
- }
- }
- public static int SprawdzRozmiar(string TEKST)
- {
- Osoba[] osoby = null;
- OdczytajDane(@"C:\Temp\plikbazy.txt", out osoby);
- Console.WriteLine(TEKST + osoby.Length);
- int WielkoscBazy = osoby.Length;
- return WielkoscBazy;
- }
- public static void WyszukajWBazie()
- {
- Osoba[] osoby = null;
- OdczytajDane(@"C:\Temp\plikbazy.txt", out osoby);
- int szukaj = WprowadzInt("Podaj ID osoby ktora chcesz wyswietlc: ", "Nie ma osoby z takim ID!", 1, osoby.Length);
- Console.WriteLine(osoby[szukaj - 1]);
- Console.WriteLine();
- Console.Write("Nacisnij dowolny przycisk aby wrócić do menu...");
- Console.ReadKey();
- MenuProgramu();
- }
- static void openfile(string sciezka)
- {
- string curFile = sciezka;
- if (File.Exists(curFile))
- {
- File.Delete(sciezka);
- File.Copy(@"C:\Temp\plikbazy.txt", sciezka);
- System.Diagnostics.Process.Start(sciezka);
- }
- else
- {
- File.Copy(@"C:\Temp\plikbazy.txt", sciezka);
- System.Diagnostics.Process.Start($"{sciezka}");
- }
- Console.WriteLine("Zmiany naniesione w notatniku nie zapisza sie w bazie!");
- PowrotDoMenu();
- }
- public static bool ZapisCSV(string NazwaPliku, Osoba[] ListaOsob)
- {
- if (!string.IsNullOrEmpty(NazwaPliku) && ListaOsob != null
- && ListaOsob.Length > 0)
- {
- try
- {
- using (StreamWriter plik = new StreamWriter(NazwaPliku))
- {
- plik.WriteLine("Lp.,Imie,Nazwisko,Wiek");
- foreach (Osoba osoba_csv in ListaOsob)
- {
- plik.Write($"{osoba_csv.id},");
- plik.Write($"{osoba_csv.Imie},");
- plik.Write($"{osoba_csv.Nazwisko},");
- plik.Write($"{osoba_csv.Wiek}");
- plik.WriteLine();
- }
- }
- return true;
- }
- catch (Exception e)
- {
- Console.WriteLine($"Błąd : {e.Message}");
- }
- }
- return false;
- }
- public static void ExportCSV()
- {
- Osoba[] osoby = null;
- OdczytajDane(@"C:\Temp\plikbazy.txt", out osoby);
- Osoba[] osoby_csv = new Osoba[osoby.Length];
- for (int i = 0; i < osoby.Length; i++)
- {
- osoby_csv[i].id = osoby[i].id;
- osoby_csv[i].Imie = osoby[i].Imie;
- osoby_csv[i].Nazwisko = osoby[i].Nazwisko;
- osoby_csv[i].Wiek = osoby[i].Wiek;
- }
- if (ZapisCSV(@"c:\temp\plikbazy_test.csv", osoby_csv))
- {
- Console.WriteLine("Eksport wykonany pomyslnie");
- string litera;
- Console.WriteLine("Otworzyc plik? (t/n)");
- do
- litera = Console.ReadLine().ToLower();
- while (litera != "t" && litera != "n");
- if (litera == "t")
- {
- System.Diagnostics.Process.Start(@"c:\temp\plikbazy_test.csv");
- }
- }
- else
- {
- Console.WriteLine("Buba");
- }
- PowrotDoMenu();
- }
- static void dupa()
- {
- int x = 0;
- Osoba[] osoby = null;
- OdczytajDane(@"C:\Temp\plikbazy.txt", out osoby);
- Console.WriteLine("Według czego chcesz wyszukac? ?");
- Console.WriteLine("1. ID ");
- Console.WriteLine("2. Imie ");
- Console.WriteLine("3. Nazwisko ");
- Console.WriteLine("4. Wiek ");
- Console.WriteLine("0. Powrot");
- int menu = WprowadzInt("", "Nie ma takiego pola!", 0, 4);
- string szukanySTR;
- int szukanyINT = 0;
- switch (menu)
- {
- case 1:
- szukanyINT = WprowadzInt("Podaj ID osoby ktora chcesz wyswietlc: ", "Nie ma osoby z takim ID!", 1, osoby.Length);
- Console.WriteLine(osoby[szukanyINT - 1]);
- x++;
- break;
- case 2:
- szukanySTR = Dane("Podaj szukane imie: ", "Imie nie zawiera liczb!");
- for (int i = 0; i < osoby.Length; i++)
- {
- if (osoby[i].Imie == szukanySTR)
- {
- int index = i + 1;
- Console.WriteLine(osoby[i]);
- x++;
- //Console.WriteLine($"{szukanySTR} Znaleziono na pozycji {index}");
- }
- }
- break;
- case 3:
- szukanySTR = Dane("Podaj szukane Nazwisko: ", "Imie nie zawiera liczb!");
- for (int i = 0; i < osoby.Length; i++)
- {
- if (osoby[i].Nazwisko == szukanySTR)
- {
- int index = i + 1;
- Console.WriteLine(osoby[i]);
- x++;
- //Console.WriteLine($"{szukanySTR} Znaleziono na pozycji {index}");
- }
- }
- break;
- case 4:
- szukanyINT = WprowadzInt("Podaj ID osoby ktora chcesz wyswietlc: ", "Wiek nie miesci sie w zakresie: ", 1, 120);
- for (int i = 0; i < osoby.Length; i++)
- {
- if (osoby[i].Wiek == szukanyINT)
- {
- int index = i + 1;
- Console.WriteLine(osoby[i]);
- x++;
- //Console.WriteLine($"{szukanyINT} Znaleziono na pozycji {index}");
- }
- }
- break;
- default:
- MenuProgramu();
- break;
- }
- if (x == 0)
- {
- Console.WriteLine("Brak rekordow z podana wartoscia!");
- }
- Console.ReadKey();
- PowrotDoMenu();
- }
- static void Main(string[] args)
- {
- MenuProgramu();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement