Skocz do zawartości

Rekomendowane odpowiedzi

teraz działa :*

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Witam.

Teraz mam inne pytanie, z zagadnienia projektowania baz danych.

Jest sobie forma ktora przedaje wycieczki, wczasy itp. Jest sobie tabela "Zamowienia". Sa w niej informacje ktory klient zamowil jaka wycieczke itd. ale ma byc tez informacja na temad opcji dodatkowych. chodzi o dodatkowe wyzywienie, jakies dodatkowe wycieczki fakultatywne i inne atrakcje. W zwiazku z tym mam pytanie, jak byscie to zaprojektowali, bo kazdy klient moze zamowic inna ilosc dodatkowych opcji, tak ze jedno pole na to to tak srednio moze wystarczyc, wiec jak proponujecie to rozwiazac, bo na razie nie mam za bardzo pomyslu:/

W ogole moze ktos z was ma jakis diagram ERD takiej bazy dla firmy wycieczkowej (a dokladnie sprzedajacej wycieczki)

Pozdrawiam!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Hmm, zależy jak opisane są te dodatkowe opcje. Jeśli to tylko nazwa i koszt (lub podobna struktura) to dajesz nowa tabelę z opcjami i kluczem obcym do tabeli zamówienia (relacja n-1). Jeśli dodatki mogą mieć różnorodne opcje, to trzeba bardziej się nagimnastykować.

 

PS. Temat o bazach już jest http://forumcm.net/index.php?showtopic=731

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

To jeszcze jedno pytanie..

Jak w PHP wczytac zawartosc pliku linijka po linijce, tak zeby kazda linijka byla oddzielnym elementem w tablicy?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

$plik = explode(';', file('nazwa_pliku'));

 

jeśli linia kończy się średnikiem.

 

O to chodziło?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Przekombinowałem ;)

 

Ale PHP to ja znam mało i raczej algorytmicznie (nie znam funkcji, jak chcę coś zrobić, to szukam w manualu , czy taka funkcja istnieje).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
@Gabe - samo file() zwraca tablicę zawierającą linie z pliku. Explode niepotrzebny. Chyba pomyliło Ci sie z file_get_contents()

Dzieki:) o to wlasnie chodzilo:)

teraz problem z baza danych, a razej cos z ze skladnia sql'a:/ ale totalna porazka:/ zwyklu insert into sie wykrzacza:/ ponad 2h siedzialem nad tym:/ moze jakies zacmienie mam, albo nie wiem:/ wczoraj szlo wysztsko obrze a dzis nic sie nie udalo zrobic:/ ale nic kumplowi wyslalem, zobacze co on o tym powie:P a ja z tym problemem uciekam do tematu o bazach, nikt tam jeszcze wwosikowie nie odpisal;)

Pozdrawiam:)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

to jeszcze raz ja;p

chodzi mi teraz o przeciazenie operatorow w c++, prog. obiektowym. Potrzebuje przeciazyc operator <<, jak robie to normalnie to bez problemow dzial, ale jak chce to robic poprzez funkcje zaprzyjazniona to mi nie dziala. jest klasa Stack, jest to stos i ten operato ma dodawac do stosu kolejna wartosc, tak ze w zasadzie jedynym jego argumentem ma byc liczba jaka ma do stosu byc wpisana, ale poprzez funkcje zaprzyjazniona sie tak chyba nie da zrobic. Jak daje jeden arg, to mi pisze ze jest zle, jak dam dwa arg. tzn ta referencje do obiektu tej klasy, orez liczbe jaka ma byc wpisana, to mi pisze ze za duzo arg. Niestey nie moge wkleic kodu bo nie jestem w domu i nie mam go, jak os to postaram sie go jutro wkleic zeby bardziej sprawe rozjasnic. ale prosze bardzo o pomoc, bo do niedzieli musze to zrobic.

Pozdrawiam:)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Nie wiem jak zrobic Edita;)

Problem rozwiazany, jak ktos by potrzebowal cos z tego to prosze pisac;)

Pozdrawiam:)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

jak napisac metode sprawdzajaca roznowartosciowosc tablicy dwuwymiarowej?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

W zwiazku z tym, ze zapanowal tutaj temat javy troche glupie pytanie ale na takie czasem przychodzi czas - jaka funkcja mozna zablokowac okienko programu by sie nie zamykal zaraz po wykonaniu? :co:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

a kiedy?

 

mozna napisac druga funkcje typu void ktora bedzie konczyla dzialanie innej funkcji gdy spelniony bedzie odpowiedni warunek

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Można odpalić program w konsoli, czy też dać pętlę oczekującą na naciśnięcie klawisza na koniec programu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Wiem, ale wolalbym nie odpalac konsoli dopiero przy Execute :). Jak mozesz to o ta petle bym prosil. Klawisz moze byc spacja badz enter :>

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

mam taki problem

 

mam klasy z nastepujacymi polami:

Osoba(string nazwisko, string imie, string pesel)

Pracownik (int urlopDoWykorzystania, double pensja)

Student (double ocena1, double ocena2)

 

Pracownik i Student dziedzicza wszystkie pola z klasy Osoba

 

tworze sobie tablice obiektow osoba typu Osoba i potrzebuje zrobic myk zeby pracownikowi o danym nazwisku przydzielić daną ilość dni urlopu - dane wczytuje z klawiatury (string nazw, int urlop)

 

mam taki kod:

 

for (int i=0; i<liczba; i++)
	{
	if(osoba[i] instanceof Pracownik) 
		{

		if(nazw.equals(osoba[i].nazwisko)) osoba[i].urlopDoWykorzystania = urlop;
		}
	}

 

kompilacja sie wywala z bledem, ze nie mozna odnalezc pola urlopDoWykorzystania, ktore przeciez istnieje w klasie Pracownik...

 

any ideas?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Jedyne co mi przychodzi na myśl to rzutowanie:

 

((Pracownik) osoba).urlopDoWykorzystania = urlop;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

dobra, napisalem sobie calego maina, ale teraz nie wszystko dziala tak jak powinno

 

wstawie tutaj fragment kodu:

 

	StreamTokenizer strTok = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
System.out.println("Wprowadz nazwisko pracownika:");
strTok.nextToken();
String nazw = strTok.sval;
System.out.println("O ile przedluzyc urlop pracownika?");
strTok.nextToken();
int urlop = (int) strTok.nval; 
int i=0;
while (osoba[i] instanceof Student && nazw != osoba[i].nazwisko) i++;	 
	{
		((Pracownik)osoba[i]).urlopDoWykorzystania += urlop;
		System.out.println("Nowy urlop pracownika o nazwisku: "+osoba[i].nazwisko+"wynosi: "+((Pracownik)osoba[i]).urlopDoWykorzystania);
	}


System.out.println("Wprowadz nazwisko studenta");
strTok.nextToken();
String nazw2 = strTok.sval;
System.out.println("Wprowadz ocene z analizy");
strTok.nextToken();
double ocena1 = strTok.nval;
System.out.println("Wprowadz ocene z algebry");
strTok.nextToken();
double ocena2 = strTok.nval;	

int j=0;
while (osoba[j] instanceof Pracownik && nazw2 != osoba[i].nazwisko) j++;
   	{
		((Student)osoba[j]).ocenaZAlgebry = ocena1;
   		((Student)osoba[j]).ocenaZAnalizy = ocena2;
   	}


  System.out.println("Wprowadz pensje, do ktorej chcesz porownwywac");
  strTok.nextToken();
  double pensja1 = strTok.nval;

  for(int k=0; i<liczba; i++)
   if (osoba[k] instanceof Pracownik)
	   if (((Pracownik)osoba[k]).pensja < pensja1) 
		   ((Pracownik)osoba[k]).pensja *= 1.1;

  System.out.println("Wszyscy pracownicy:"); 
  for(int k=0; k<liczba; k++)
  {
   if(osoba[k] instanceof Pracownik) System.out.println(osoba[k]);
  }

  System.out.println("Wszyscy studenci: ");
  for (int k=0; k<liczba; k++)
  {
   if (osoba[k] instanceof Student) System.out.println(osoba[k]);
  }

	}

 

generalnie rzecz biorac to problem polega na tym ze ewentualne zmiany ze stanu poczatkowego (wpisywanie nowych ocen, podwyzszanie pensji) nie dziala, tzn program to wykonuje, ale gdy potem wywolam metoda wypisujaca wszystkie wartosci to sie okazuje, ze zachowane sa pierwotne wartosci, a nie te "nowe"

 

dla zwiekszania urlopu dziala samo powiekszenie, ale program zmienia te wartosc tylko dla pierwszego obiektu z klasy Pracownik, bez wzgledu na to, jakiego stringa wpisze jako nazwisko (podejrzewam, ze zamiast operatora przyrownania trzebaby zrobic to metodą equals, ale nie udalo mi sie jej poprawnie zastosowac...)

 

moze ktos poradzi jak zrobic, zeby wswietlanie wartosci dzialalo poprawnie i pokazywaly sie te nowe, zmodyfikowane?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Przede wszystkim - masz rację co do użycia metody equals. Jeśli chcesz porównywać napisy, a nie referencje do nich, musisz używać equals ;) Użycie tej metody nie jest trudne, zamiast np.

nazw != osoba[i].nazwisko

piszesz po prostu

!nazw.equals(osoba[i].nazwisko)

[CIACH - tu były bzdety, sorka ;)]

Poza tym - druga pętla while i literówka: (osoba[j] instanceof Pracownik && nazw2 != osoba[i].nazwisko) j++;

Trzecia pętla, tym razem for, to również literówki:

for(int k=0; i<liczba; i++)

if (osoba[k] instanceof Pracownik)

if (((Pracownik)osoba[k]).pensja < pensja1)

((Pracownik)osoba[k]).pensja *= 1.1;

To tak na pierwszy rzut oka

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

takie male pytanko:

 

mam klase Pracownik, ktorej konstruktor wyglada mniej wiecej tak:

Pracownik (String nazwisko, double etat)

{...}

 

jest tez klasa Urzednik dziedziczaca po klasie Pracownik

Urzednik(String nazwisko, double etat, int pensja)

{...}

 

oczywiscie nazwisko i etat Urzednika sa dziedziczone z Pracownika (super)

teraz musze napisac metode, ktora wygeneruje nowy obiekt (Urzednik) ale moge przekazac w metodzie tylko argumenty (String nazwisko, double etat)

nie bardzo wiem jak taki "niepelny" obiekt utworzyc (czy to w ogole mozliwe...) ale tez nie wiem czy moge po prostu wsadzic int pensja = 0 ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×