Problem je interesantan, pa zasto da se malo ne zabavimo. Koliko se msni cini, svi autobusi imaju dvadestak redova od po cetiri sedista, dva sa leve strane, dva sa desne strane. Ovako nekako:
prvi red: 1 ,2 3, 4
drugi red: 5, 6 7, 8
treci red: 9,10 11,12
...
To je isto kao i ovo:
Red SedisteRb
1 1
1 2
1 3
1 4
2 5
2 6
2 7
2 8
.......
Da podjemo od pocetka:
Svaka linija je definisana ovako: Linija = {SifaLinije (PK), PolaznaStanica, DolaznaStanica, VremePolaska, VremeDolaskaNacilj)
Linija ima konkretne polaske u odredjene dane (moze i svaki dan). Polazak definisemo kao Polasci= {SifrLinije (PK), DatumPolaska(PK)}.
Za svaki polazak konkretan polazak, definisemo sva raspoloziva sedista sedista - jednostavno se nabroje sva sedista koja se daju u prodaju, ovako:
RaspolozivaSedistaZaPolazak = {SifraLinije, DatumPolaska, Red, SedisteBroj, PK: ( SifraLinije, DatumPolaska,Sedistebroj)}.
Poso ne mora da bude isto vozilo na svakom polasku, generalno svaki polazak ima svoj broj raspolozivih sedista. Na primer, subotom je manji promet, pa ide autobus sa 24 mesta, a preko readne nedelje ide masina sa 56 mesta. Onda, mogu neka sedista biti nedostupna za prodaju - obicno dva mesta iza sofer, ili cah sva cetiri u prvom redu su rezervisani za sluzbena lica, ili rodjake, ili soferovu svalerku, svasta je moguce.
Onda dodamo jos jednu tabelu,
StatusSedistaNaPolasku = {SifraLinije, DatumPolaska,Sedistebroj,StatusSedista, DatumStatusa}
gde status sedista moze biti na primer MoguciStatusiSedista = {Slobodno, Rezervisano, Prodato}.
Kad znamo kaja susedista raspoloziva, raspolozivim sedistima dodelimo status = 'Slobodno'. Slobodno sediste se moze prodati ili rezervisati. Kad putnik plati, na salteru ili preko interneta, sediste je Prodato. Kad neko rezervise, promenimo status u Rezervisano. Ako putnik otkaze rezervaciju, status se menja iz Rezervisano u Slobodno, koje moze onda da bude Rezervisano, prodato ili ostane Slobodno, to jest neprodato.
Tabela koja prati StatusSedista daje odgovor na pitanje "koja su sedista slobodna a koja su rezervisana ili prodata".
Pocetnici mogu da modeliraju pracenje stanja sedista bas ovako kako sam pokazao - StatusSedista = {SifraLinije, DatumPolaska,Sedistebroj,StatusSedista, DatumStatusa} . Profesionalci i majstori bi trebalo da modeliraju promenu stanja na pravilan nacin - nadjite teme o promenama statusa i zaduzivanju vozila i to je to.
kako na ekranu ili izvestaju pokazati raspored sedista? Kros-tab u kome je vodeca kolona Red (1,2,3...) a zaglavlje sadrzi brojeve sedista pozicije A B C D, kao u avionu. U preseku redova i kolona (pise broj sedista concatenated status). Kliknes na celiju i iniciras promenu statusa. Za statuse Prodato i Rezervisano morate da sacuvate negde i ime osobe. datum prodaje i rezervacije ne mora da se cuva, on je u tabeli StatusSedistaNaPolasku .
Ko zna znaje, ovo ce biti dovoljno. ko ne ume ovo da pretvori u program - morace malo da uci i vezba.
Sretni praznici, cujemo se verovatno pocetkom Januara.