Program do tworzenia rozkładów jazdy

Program do tworzenia rozkładów jazdy
DY
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:2
0

Hej,

Pracuje w małej firmie branży komunikacji miejskiej. Z racji tego, że jest to mała firma, to nie stać nas na zakup programu do tworzenia rozkładów jazdy, który kosztuje kilkadziesiąt tysięcy złotych. Rozkłady tworzy się ręczenie w excelu a następnie za pomocą starego programu tworzy się z tych danych tabliczki przystankowe. Pojawił się w mojej głowie pomysł stworzenia prostego programu, który ułatwiłby ten proces.

Stworzenie rozkładu jazdy w programie wyglądałoby następująco:

krok 1 - utworzenie przystanków
krok 2 - utworzenie odcinków i czasu przejazdów między nimi
krok 3 - ułożenie przebiegu linii
krok 4 - tworzenie rozkładu dla danej linii (wpisujemy częstotliwość kursowania, lub ręcznie wpisujemy odjazdy z pierwszego przystanku i program sam uzupełnia resztę)
krok 5 - określanie ile brygad (wozów) potrzebnych jest to obsłużenia linii
krok 6 - układanie zadań dla kierowców
krok 7 - drukowanie rozkładów liniowych, tabliczek przystankowych i zadaniówek dla kierowców.

Czy ktoś mógłby pomóc w tym, jakie komponenty lub rozwiązania użyć, aby móc zrealizować ten projekt? Będzie on tworzony w delphi 7.

olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

Niewiele pomogę. Wiem, że ZDITM Szczeciński korzysta z jakiegoś pogramu, ale nie wiem czy autorskiego. Może ekipa tworząca MMPK potrafiła by pomóc zrobić to taniej. Od siebie mogę doradzić by jeśli wolisz to mieć w Excelu, to są proste rozwiązania w Delphi oparte o obiekty OLE, które pozwalają generować sobie kodem arkusze Excela. Ja jednak od dawna nie używam Excela, w załączniku do tego posta masz prosty program wraz z kodem, który korzysta z Open Office'owego Calca, bo jego używam. Generuje on bardzo szybko proste tabelki do spisania wyników graczy meczów online, pisany kiedyś pod kątem turnieju kultowej Sensible World of Soccer. Może się Tobie to do czegoś przyda.

Co do komponentów. To nie wiem jak to ma dokładniej wyglądać w przypadku firmy, gdzie pracujesz. Ale to, co widać po rozkładach na http://zditm.szczecin.pl/rozklady/index.html można spokojnie osiągnąć w programie robiąć sobie listę przystanków i wyświetlać z TListBox. Natomiast godziny odjazdów dla danego przystanku przedstawił bym w TStringGrid. Przy spokojnym przemyśleniu tematu, można to spokojnie zaprogramować. Nie potrzeba raczej żadnej "magicznej wiedzy" ani zbytecznych kombinacji. Bo skoro używasz Excela do tego póki co, to może Tobie łatwo generować te Arkusze właśnie kod w Delphi. Wprawdzie mój kod generuje bardzo poste tabelki. Jednak przy zagłębieniu się w API OE Calca czy nieco według mnie gorzej udokumentowane Excela. Można zrobić automatyczne generowanie tego samego, co możesz ręcznie wytworzyć sobie pod Excelem czy OE Calciem. Albo też i Wordem czy Writterem.

A z tymi brygadami to nie wiem o co chodzi. Jednak określenie odjazdów z pętli, a później czasów pomiędzy przystankami oraz na tej podstawie przyjazdów na kolejne przystanki to logiczne rozwiązanie i duże ułatwienie. Chociaż nie wiem jak to jest do końca, bo w przypadku ZDITM Szczecińskiego, jeżdząć jako pasażer daje się zauważyć, że suma minut od pętli albo danego przystanku do na przykład końcowego albo wielu po drodze jest niższa po przyjezdzie i faktycznie tak autobus czy tramwaj przyjeżdza, niż jest to podane. Nie chodzi o to że pojazd przyjedzie za wcześnie czy za poźno, tylko że nieraz ta suma jest zupełnie niezrozumiale dla mnie obliczana. Kolega pracujący jako motorniczy, jeżdzący na tramwajach od ponad siedmiu lat, nie umiał mi tego racjonalnie wytłumaczyć. Ale Ty znając temat od strony planowania i technicznej pewnie to sobie ogarniesz.


Pozdrawiam.
edytowany 3x, ostatnio: olesio
DY
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:2
0

Olesio, brygada, jest to numer danego autobusu kursującego na linii. U Was w Szczecinie chyba nie używa się oznaczania autobusów numerem brygady, ale w Warszawie już tak. Numer brygady oznacza tabliczka z numerkiem za szybą http://phototrans.net/14,138927,0,Solaris_Urbino_15_8515.html

Natomiast jeżeli chodzi o krótszy, czy dłuższy czas dojazdu od przystanku do krańca wynika to z zastosowania różnego czasu przejazdu. Abyś zrozumiał o co chodzi posłużę się przykładem

W dzień powszedni o godzinie 9 czas przejazdu między przystankami A i B wynosi 3 minuty. O godzinie 22 ten czas wynosi już 2 minuty ze względu na mniejsze natężenie ruchu, które daje możliwość pokonania tego odcinka w krótszym czasie.

Azarien
Masakra. Autobus ma trzy różne liczby z przodu, nie licząc rejestracji, i jeszcze jakieś tajemnicze A które potencjalnie też może być numerem linii. A to 8515 jest absurdalnie wielkie. PS. i co za kreton nazwał osiedle „Górczewska”? gramatyka dno.
olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

No ok, w Szczecinie to nie przyglądałem się czy są takie tabliczki. Po prostu jako pasażera mnie to nigdy nie musiało interesować. Natomiast z tymi czasami, chodziło mi o coś innego. Chodziło o dane naniesione na rozkład fizycznie. I na przykład pomiędzy pętlą, a końcowym - czas przejazdu wynosić powinien na przykład sumarycznie 25 minut. I tak jest to rozpisane na rozkładzie. Ale jak się aplikacją typu MMPK, spisaną z rozkładów na podanej wcześniej przeze mnie stronie ZDITMu sprawdzi czas przyjazdu na ostatni przystanek albo któryś z przed koncowym, to suma ta się nie zgadza.

A co do kodu to myślę, że ogarniesz. Najlepiej jeśli to jest dla firmy i trzeba się na przykład przejmowac legalnością oraz róznymi licencjami, mozna zaprzęgnąc darmowego Lazarusa do wykorzystania również komercyjnego. Chociaż nie wiem czy ten podany przede mnie kod dla ogarnięcia OE Calca się sprawdzi. Ale po drobnych przeróbkach myślę, że powinien. Wtedy również wiadomo, że pakiet OE jest darmowy, do komercyjnego wykorzystania chyba również i mamy jasną sytuację oraz mniej problemów przy ponoszeniu kosztów na dodatkowe oprogramowanie.

Niemniej jednak co wybierzesz, pod Delphi nawet, tak jak pisałem temat nie jest trudny do ogarnięcia. Tylko nie wiem jak się by trzeba było zabrać do rozplanowania rozkładu tak, by zmniejszać lub zwiększać natężenie pojazdów w zależności od pory dnia. Ponieważ wiadomo, że czasem na godzinę jest więcej przyjazdów, a później autobus/tramwaj zjeżdza na zajezdnie albo zwiększa się odstęp pomiędzy kursami, bo kierowca/motorniczy musi mieć przerwę w pracy.


Pozdrawiam.
edytowany 4x, ostatnio: olesio
woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 21 godzin
  • Postów:1595
0

Dawno temu na studiach robiłem coś takiego tyle, że był to system ekspercki. Ja użyłem wszystkich standardowych komponentów Delphi (label, edit, button itd.) aplikacja była bazodanowa więc był również DBGrid i komponenty ZEOS do połączenia z PostrgreSQL. Do rysowania/drukowania użyłem FastReportów. Co prawda FR jest płatny ale możesz zastosować inny darmowy np QuickReport, FreeReport lub wbudowany w delphi RaveReport. Z niestandardowych komponentów użyłem tylko labela z pakietu JEDI ponieważ jest tam fajny edit umożliwiający pisanie w pionie (nie trzeba po canvasie rysować). Nawiązując do mojego projektu ze studiów to czasy przejazdów poszczególnych odcinków właśnie definiował system ekspercki (sam obliczał czas na podstawie blisko setki parametrów - pory dnia, liczby mieszkańców, ilości samochodów na 1 mieszkańca, daty, pory roku, wydarzeń sportowych, wielkości miasta, ceny paliwa, rodzaju trasy, przepisów drogowych, itd. itd.).

WL
  • Rejestracja:około 21 lat
  • Ostatnio:około 2 miesiące
  • Postów:1082
0
woolfik napisał(a):

Nawiązując do mojego projektu ze studiów to czasy przejazdów poszczególnych odcinków właśnie definiował system ekspercki (sam obliczał czas na podstawie blisko setki parametrów - pory dnia, liczby mieszkańców, ilości samochodów na 1 mieszkańca, daty, pory roku, wydarzeń sportowych, wielkości miasta, ceny paliwa, rodzaju trasy, przepisów drogowych, itd. itd.).

I to ostatnie zdanie jest najważniejsze, reszta to pikuś ;-)
Robiłeś to wszystko w Delphi?

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)