stufa Opublikowano 16 Stycznia 2007 Zgłoś Opublikowano 16 Stycznia 2007 (edytowane) Witam! Potrzebuje pomocy w napisaniu programu do obslugi magazynu. Ma to byc prosty programik, bo jestem poczatkujacym (bardzo) uzytkownikiem C#. Otoz program ma miec mozliwosc dodania produktu (nazwa i ilość), sprzedaż towaru (czyli generalnie tylko odjecie wpisanej liczby od tego co jest "na stanie"), zakupu(czyli dodanie). Podstawowa sprawa - w czym przechowywać dane o ilości danego produktu? Na zajęciach poznalismy tylko arraylisty i ewentualnie zapis/odczyt plikow. Arraylist odpada chyba - moze tylko ewentualnie przechowywac nazwy towarow. No chyba zeby zrobic drugiego arraylista i w nim przechowywac ilosc. Ale jak to potem powiazac - ze jak zrobie sobie np. metode Wyswietl to mi pokaze ze jest mleko(z jednego arraylista) i 10szt (z drugiego arraylista)... Jakis pomysł?? Bo ja nie wiem jak to ugryść :? Edytowane 16 Stycznia 2007 przez stufa Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ghostek Opublikowano 16 Stycznia 2007 Zgłoś Opublikowano 16 Stycznia 2007 Zrób sobie jakąś klasę produkt lub strukturę. Na przykład tak: public class Produkt{ public string Nazwa = string.Empty; public int Ilość = 0; ... dodatkowe atrybuty} Teraz możesz to przechowywać w jednej liście. Jak to przechowywać: propnuje xmla, lub jakiś plik binarny (jak już wiesz co i jak). Oczywiście może to być prosty plik tekstowy. Napiszesz to w ten sposób (pseudokod) foreach( Produkt p in listaProduktow ){ ZapiszDoPliku(p);}public void ZapiszDoPliku(Produkt p){ plik.WriteLine(p.Nazwa + " " + p.Ilosc); }Jedna linijka w pliku to 1 produkt. Linia ma postać: NazwaProduktu Ilość. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stufa Opublikowano 17 Stycznia 2007 Zgłoś Opublikowano 17 Stycznia 2007 (edytowane) dzieki za podpowiedz... po wielu probach udalo mi sie stworzyc szkielet programu.... rozlozylem go na 3 klasy : -Program - z metoda Main(), ktora tylko tworzy obiekty i uruchamia program namespace ProduktMagazyn2{ class Program { static void Main(string[] args) { Produkt p1 = new Produkt("mleko", 10); Magazyn n = new Magazyn(); n.Uruchom(); } }} - Produkt using System;using System.Collections;using System.Text;namespace ProduktMagazyn2{ public class Produkt { private string nazwa; private int ilosc; public Produkt(string nazwa, int ilosc) { this.nazwa = nazwa; this.ilosc = ilosc; } public string pobierzNazwe() { return nazwa; } public int pobierzIlosc() { return ilosc; } }} no i Magazyn, ktora jest "cialem" programu: using System;using System.Collections;using System.Text;namespace ProduktMagazyn2{ public class Magazyn { private ArrayList stanMagazynu = new ArrayList(); public void Dodaj(Produkt p) { stanMagazynu.Add(p); } public void Drukuj() { foreach (object o in stanMagazynu) { Console.WriteLine(((Produkt)o).pobierzNazwe()); Console.WriteLine(((Produkt)o).pobierzIlosc()); } } public void Uruchom() { bool koniec = false; do { Console.WriteLine("MAGAZYN"); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("1 - Dodaj Produkt"); Console.WriteLine("2 - Pokaż stan magazynu"); Console.WriteLine("3 - Zakończ program"); string wybor = Console.ReadLine(); if (wybor == "1") { Console.WriteLine("Podaj nazwe produktu"); string nazwaProduktu = Console.ReadLine(); Console.WriteLine("Podaj ilość produktu"); int iloscProduktu = int.Parse(Console.ReadLine()); Dodaj(new Produkt(nazwaProduktu, iloscProduktu)); } else if (wybor == "2") { Drukuj(); } else if (wybor == "3") { koniec = true; } } while (koniec == false); } }} teraz mam pytanko : -jak poprawic metode Dodaj, tak aby wyswietlala stan magazynu w formi produkt....ilosc (teraz wszystkie pola wyswietla jedno pod drugim) -jak stworzyc metode kup (czyli dodanie jakies ilisci towaru, ktory jest juz na stanie) i analogicznie sprzedaj (czyli odejmie zadana ilosc od stanu magazynu).... Edytowane 17 Stycznia 2007 przez stufa Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ghostek Opublikowano 18 Stycznia 2007 Zgłoś Opublikowano 18 Stycznia 2007 (edytowane) Kilka małych uwag tak na początek: zamiast pobierzNazwe i pobierzIlosc zrób sobie to w ten sposób: public string Nazwa{ get { return nazwa; } //jesli chcesz miec mozliwosc ustawiania tej zmiennej set { nazwa = value; }}Analogicznie zrób z ilością. Zamiast ArrayLista korzystaj z list używających Generics. Będzie to wyglądać w ten sposób: private List<Produkt> stanMagazynu = new List<Produkt>(); Drukowanie w postaci: Produkt: Ilość można osiągnąc następująco: Console.WriteLine( "{0}: {1}", produkt.Nazwa, produkt.Ilosc );lub składając stringaConsole.WriteLine( produkt.Nazwa + ": " + produkt.Ilosc.ToString() ); Kup i Sprzedaj można zrobić tak: //Metoda pomocniczaprivate Produkt ZnajdzProdukt( string nazwa ){ foreach( Produkt p in stanMagazynu ) { if( p.Nazwa = nazwa ) { return p; } } //Nie ma na stanie zwracamy null return null;}public void Kup( string nazwa, int ilosc ){ Produkt p = ZnajdzProdukt( nazwa ); if( p != null ) { p.Ilosc += ilosc; } else { //Nie mamy tego produktu w bazie wiec dodajmy go Dodaj( new Produkt( nazwa, ilosc ) ); }}public void Sprzedaj( string nazwa, int ilosc ){ Produkt p = ZnajdzProdukt( nazwa ); if( p != null ) { //Nie mozemy sprzedac wiecej niz mamy if( p.Ilosc >= ilosc ) { p.Ilosc -= ilosc; } }} Tak to może wyglądać. Edytowane 18 Stycznia 2007 przez ghostek Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stufa Opublikowano 18 Stycznia 2007 Zgłoś Opublikowano 18 Stycznia 2007 dzieki za pomoc :) chetnie skorzzystalbym z Twoich sugestii, ale nie miałem takich rzeczy na zajeciach, wiec koles moglby pomyslec ze ktos mi ten program napisal. Natomiast Kup i Sprzedaj sa inspirujace i napewno mi pomoga :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stufa Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 jeszcze jedna sprawa.....zapis i odczyt z pliku....:) Nie mam pomysłu już - od piatku sie z tym mecze i nic.... Uzywam filestreama do utworzenia plkiu stan.txt potem streamwriterem nie moge sie odwolac do utworzonego filestreama. czy musze to robic w metodzie Main?? bo program sie nie wywala, ale plik jest pusty...... jakies sugestie ?? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PMichalak Opublikowano 21 Stycznia 2007 Zgłoś Opublikowano 21 Stycznia 2007 ///odczytStreamReader sr = new StreamReader();sr.ReadLine();sr.Close();//zapisStreamWriter sw = new StreamWriter();sr.WriteLine();sr.Close(); Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stufa Opublikowano 23 Stycznia 2007 Zgłoś Opublikowano 23 Stycznia 2007 oki, z zapisem sobie poradzilem.... ale nie wiem za cholere jak ugryzc odczyt w pliku zapisuje mi w formacie nazwa : ilosc jak to zrobic, zeby pod p.nazwa zapisac nazwe a pod p.ilosc ilosc :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PMichalak Opublikowano 23 Stycznia 2007 Zgłoś Opublikowano 23 Stycznia 2007 (edytowane) string xxx = "mleko : 10";string[] temp = new String[2]; char[] spliters = new Char[1];spliters[0] = ':';temp = xxx.Split(spliters, 2);MessageBox.Show("Nazwa: " + temp[0]+ " Sztuk:" + temp[1]); edit: Pewnie da się zrobić to trochę krócej/lepiej, ale mimo wszystko to działa :> Edytowane 23 Stycznia 2007 przez GDR Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
alienzero Opublikowano 23 Stycznia 2007 Zgłoś Opublikowano 23 Stycznia 2007 btw, co do zapisu i odczytu do pliku, polecam xml. C# ma ladne serializatory ktore moga obiekt wsadzic w xmla, a pozniej plik odczytac wprost do obiektu w 3 linijkach kodu ;] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stufa Opublikowano 24 Stycznia 2007 Zgłoś Opublikowano 24 Stycznia 2007 :lol2: wielkie dzieki za pomoc :) w sobote ide na chrzest bojowy, tzn zaliczenie :) programik gotowy do walki. Mam nadzieje ze damy rade :) Jeszcze raz wielkie dzieki dla ghostek, GDR, alienzero apryszyjejt :lol2: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stufa Opublikowano 19 Czerwca 2007 Zgłoś Opublikowano 19 Czerwca 2007 (edytowane) Witam po dluzszej nieobecnosci :) pozstanowilem troche "dobajerzyc" swoj program (oczywiscie w ramach swoich niewielkich umiejetnosci). Zrobilem go pod okienkami, polaczenie z baza sql`a ogolnie gra i buczy :) dodawanie produktu na stan wyszlo mi w miare szybko. mam problem z wyswietlaniem stanu: ogolnie wyglada to tak: - z main menu klikamy :STAN: i wyskakuje okienko ze stanem (czyli select * from produkt), tyl tylko ze datagrid pozostaje pusty - co robie źle ?? :mur: private void btnWyswietl_Click(object sender, EventArgs e) { stan.Show(); string connectionString = "workstation id=\"Desktop\";packet size=4096;integrated security=SSPI;data s" + "ource=\"Desktop\";persist security info=False;initial catalog=Magazyn"; SqlConnection polaczenieSql = new SqlConnection(); try { polaczenieSql.ConnectionString = connectionString; polaczenieSql.Open(); } catch (Exception ex1) { MessageBox.Show(ex1.Message, "Brak dostępu", MessageBoxButtons.OK, MessageBoxIcon.Error); } SqlCommand wyswietl = polaczenieSql.CreateCommand(); wyswietl.CommandType = CommandType.Text; wyswietl.CommandText = "Select * from Produkt"; SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = wyswietl; DataSet ds = new DataSet(); da.SelectCommand = wyswietl; da.Fill(ds, "Produkt"); dataGridView1.DataSource = ds; dataGridView1.DataMember = "Produkt"; polaczenieSql.Close(); } }} jakis pomysl?? jak sie zabrac za ściaganie ze stanu?? bo podam nazwe, jesli nazwa jest w bazie danych to sciagnie wpisana ilosc. Ale jak to zrobic, ze w instrukcji sql odjac cos od komorki w tabeli (chodzi o ilosc). jakies pomysly, wskazowki?? Edytowane 19 Czerwca 2007 przez stufa Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
stufa Opublikowano 21 Czerwca 2007 Zgłoś Opublikowano 21 Czerwca 2007 nikt nie ma pomyslu ?? :unsure: no nic jakos sobie poradzilem. Nie wiem jednak jak sie zabrac za usuwanie produktow z bazy ?? aha i jeszcze jedno - program dzial- ale jak chce wyswietlic sobie stan to jest oki- ale jak chce to zrobic drugi raz to wyskakuje blad - cos tam dispose - domyslam sie ze trzeba zwolnic jakies zasoby, ale o co chodzi konkretnie ??? POMOCY Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...