Skocz do zawartości

Programowanie


xemi

Rekomendowane 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!

Odnośnik do komentarza

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

Odnośnik do komentarza
@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:)

Odnośnik do komentarza

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:)

Odnośnik do komentarza

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?

Odnośnik do komentarza

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?

Odnośnik do komentarza

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

Odnośnik do komentarza
  • 3 tygodnie później...

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 ?

Odnośnik do komentarza

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.

Ładowanie
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...