Prosta baza danych w C# - pomoc dla początkującego

0

Witam.
Chciałbym napisać prostą bazę danych w Visual Studio 2010, która:

-Posiadać będzie listę, gdzie znajdować będzie się ostatnie 5 lat (typu:1. 2013, 2. 2012 itp.),
-Po wybraniu którejś z dat, pojawiać się będzie druga lista, w której znajdziemy kolejne dane, które po wybraniu wyświetlą nam informacje np. imię, nazwisko itp. powiedzmy, że w labelu,
-Dane umieszczone mogą być w pliku tekstowym, albo nawet konstruktorze, nie potrzebuje możliwości dopisywania i zapisywania dodatkowych informacji przez użytkownika tej bazy(np w tekstboxach), tylko poprzez dopisywanie w kodzie/pliku tekstowym przez nas,
-Posiadać będzie wyszukiwarkę - wpisujemy nazwisko, dostajemy info z bazy w labelu,
-Po wpisaniu loginu i hasła w pewne miejsce daje nam możliwość wyboru dodatkowej opcji (powiedzmy po kliknięciu buttonu "tak"), która pozwoli nam na wpisanie danych: Najpierw imię -> następnie nazwisko -> następnie miejsce zamieszkania. Te dane muszą być zapisywane i pokazywane w innym miejscu (czyli taki drugi programik w tym programiku :>), najlepiej jakby można było je wczytać po ponownym uruchomieniu programu, [cały ten podpunkt jest "dodatkiem", nie wiem czy da się to tak zrobić bez tworzenia jakiejś dodatkowej bazy w innym programie. Jeżeli nie, to można ten podpunkt pominąć]

To tyle. Jako, że jestem początkującym wytłumaczcie mi, czy możliwe jest w ogóle stworzenie dokładnie takiego programu w samym visual studio i czy mógłbym poprosić o jakieś wskazówki gdzie szukać poradników, które mi pomogą, albo o jakieś linki. Samemu trudno mi zdefiniować czego właściwie chcę poszukać i nie mogę w internecie trafić na nic co mi może pomóc. Z tego co napisałem w podpunktach, bez poradników nie ogarnę nawet samego początku, czyli tych list :/.

Dziękuje z góry.

3

No dobra... Pomine ta bzdure, ze w internecie nie mozesz znalezc odpowiedzi....;)
Naturalnie mozesz napisac taka prosta aplikacje w Visual Studio. Nawet w zasadzie bez tworzenia prawdziwej bazy danych.
Podziel problem na mniejsze zadania:

  1. napisz sobie co (jakie informacje) konkretnie ma znajdowac sie w kazdej pojedynczej liscie
  2. potrzebujesz zdefiniowac klase(y) lub strukture(y) - instancje tychze (pojedyncze obiekty) przechowasz w swoich listach
    sadzac z Twojego postu - to moze zacznij od pierwszych podpkt.... w konsoli ;) -> Klasa / List<Klasa> / WriteLine(). Wszystko co ma robic twoj programik mozna zakodowac jako aplikacje konsolowa. Na poczatek.
  3. potem musisz wiedziec jak napisac prosty programik z okienkien ;) i kilkoma buttonami, textboxem itd.

Zapytaj wujka googla:
Znajdz tutorial c# w necie, ogladnij kilka filmikow na chociazby you tubie....
jakas dodatkowo ksiazka podstaw c# z pewnoscia nie zaszkodzi, ale na upartego nie musisz z takowej korzystac;)

Napisz pierwsze pare linijek kodu i jezeli bedziesz mial pierwsze problemy -> najpierw przeszukaj forum - kazdy z nas je kiedys mial :D
Jezeli nie znajdziesz odpowiedzi - wtedy zapostuj kawalek kodu i zapytaj... ;)

Pozdro

0

Chciałem zmienić koncepcję programu, ale jednak 1 pomysł najlepszy. Mój jedyny problem polega na tym, że nie potrafię "połączyć" dwóch list. Dane mam wypisane w klasie z konstruktorem(nazwisko, imie, rok itp.), chciałbym, aby w pierwszej liście znajdował się właśnie ten rok i po kliknięciu buttona -> druga lista wypełniać się będzie wszystkimi nazwiskami, które posiadają w klasie ten rok (np. 2013). W tym momencie wybieram dane nazwisko, naciskam kolejny button i wypełniają mi się tekstboxy danymi z konstruktora.

Myślę, że dobrze to wytłumaczyłem(?), w tym właśnie leży mój problem - totalnie nie potrafię tego zakodować, nie wiem nawet jakich pętli użyć itp. Po rozwiązaniu tego problemu program praktycznie sam się napisze :). Zrezygnowałem z wyszukiwarki.

EDIT: Rozwiązałem problem pierwszej listy - zmieniłem na wpisywanie roku, a do drugiej listy wpadają informacje ze switcha (case rok), ale pojawił się problem polegający na tym, że umiem przypisać info tylko do danej pozycji w liście, czyli wybranie roku nic mi nie daje. Jak to rozwiązać?

0

Witam

Ringrosso napisał(a):

Mój jedyny problem polega na tym, że nie potrafię "połączyć" dwóch list. Dane mam wypisane w klasie z konstruktorem(nazwisko, imie, rok itp.), chciałbym, aby w pierwszej liście znajdował się właśnie ten rok i po kliknięciu buttona -> druga lista wypełniać się będzie wszystkimi nazwiskami, które posiadają w klasie ten rok (np. 2013). W tym momencie wybieram dane nazwisko, naciskam kolejny button i wypełniają mi się tekstboxy danymi z konstruktora.

Ponizej jedna z mozliwosci odnalezienia w Twojej liscie nazwisk wszystkich elementow z pasujacym rokiem:
Rok specjalnie nie jest teraz w liscie - ale jak przeczytasz i pokombinujesz, to bez problemu przerobisz pojedynczy "int" na cala ich liste,
z ktorej nastepnie wybierzesz jeden element ;)


class Program
    {
        class daneLudka
        {
            public string firstName;
            public string name;
            public int rokProd;
            
            public daneLudka( string f, string n, int r )
            {
                firstName = f;
                name = n;
                rokProd = r;
            }

        }

        static void Main( string[] args )
        {

            var t = new daneLudka ( "Micky", "Mause", 2011 );
            var t1 = new daneLudka ( "Pies", "Pluto", 2011 );
            var t2 = new daneLudka ( "Boy", "Nobody", 2000 );
            var listaNazwisk = new List<daneLudka>();

            listaNazwisk.Add ( t );
            listaNazwisk.Add ( t1 );
            listaNazwisk.Add ( t2 );
            listaNazwisk.ForEach ( x => Console.WriteLine ( x.firstName + ", " + x.name + ", " + x.rokProd.ToString ( ) ) );

            Console.WriteLine ( );
            // znajdz nazwiska z zadanego roku
            int twojRok = 2011;//odczytales z textboxa
            
            //dwie ident. listy - tylko odrobine inny syntax przy wypelnianiu
            var listaZnalezionych = new List<daneLudka> ( );
            var listaZnalezionych2 = new List<daneLudka> ( );

            listaZnalezionych = listaNazwisk.FindAll ( x => x.rokProd == twojRok );
            //mozna tez
            foreach ( var element in listaNazwisk )
            {
             if(element.rokProd==twojRok)
             {
                 listaZnalezionych2.Add ( element );
             }
            }

            listaZnalezionych.ForEach(x=> Console.WriteLine ( "Znalezione pasujacych ludkow ;): "+x.firstName + ", " + x.name + ", " + x.rokProd.ToString()));
            Console.WriteLine();
            listaZnalezionych2.ForEach(x=> Console.WriteLine ("Znalezione pasujacych ludkow ;): " +  x.firstName + ", " + x.name + ", " + x.rokProd.ToString()));
            Console.ReadLine();
        }
    }
0

Program jest już praktycznie ukończony - ostatni błąd:

private void button2_Click(object sender, EventArgs e)
        {
            Zawodnik currentPerson = listBox1.SelectedItem as Zawodnik;
            if (currentPerson != null) {
                setTBText(textBox4, currentPerson.pozycja);
                setTBText(textBox5, currentPerson.narodowosc);
                setTBText(textBox6, currentPerson.rok_ur);
                setTBText(textBox7, currentPerson.rok_dol);
                setTBText(textBox8, currentPerson.poprzedni);
                setTBText(textBox9, currentPerson.mecze);


            }
        }

        private void setTBText(TextBox tb, string text) { //metoda zwracająca stringa do tb
            tb.Text = text;
        } 

Jak przekonwertować rok_ur, dok_dol, mecze ze stringu na int? Nie chciałbym zmieniać tej całej metody, bo mi nie wyświetla danych w liście inaczej.

1

No nie rob jaj ;)
google: konwersja string na int c#....

1 użytkowników online, w tym zalogowanych: 0, gości: 1