Autor Wątek: Mini baza danych - reprezentacja danych  (Przeczytany 5201 razy)

Offline Karczas

  • Użytkownik
    • DevBlog

# Grudzień 20, 2007, 12:56:55
Interfejs IComparable i tak bym zaimplementował - właśnie do sortowania, ale prócz tego chciałem sobie zakodować szybką metodę sprawdzającą czy dwa łańcuchy są równe - tylko czy opisany przeze mnie sposób będzie szybszy niż np. string.Compare() lub CompareTo(). Na razie nie będę sobie jednak zawracał tym głowy - zakoduje to w razie potrzeby później, kiedy już program będzie działał.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline SirMike

  • Użytkownik
    • SirMike's Techblog

# Grudzień 20, 2007, 13:03:27
Interfejs IComparable i tak bym zaimplementował - właśnie do sortowania, ale prócz tego chciałem sobie zakodować szybką metodę sprawdzającą czy dwa łańcuchy są równe - tylko czy opisany przeze mnie sposób będzie szybszy niż np. string.Compare() lub CompareTo(). Na razie nie będę sobie jednak zawracał tym głowy - zakoduje to w razie potrzeby później, kiedy już program będzie działał.

Prawidlowe podejscie :) Nie optymalizujemy kodu zanim nie zacznie dzialac i sprawiac problemy.

Offline Moriturius

  • Użytkownik

# Grudzień 20, 2007, 18:47:22
Interfejs IComparable i tak bym zaimplementował - właśnie do sortowania, ale prócz tego chciałem sobie zakodować szybką metodę sprawdzającą czy dwa łańcuchy są równe - tylko czy opisany przeze mnie sposób będzie szybszy niż np. string.Compare() lub CompareTo(). Na razie nie będę sobie jednak zawracał tym głowy - zakoduje to w razie potrzeby później, kiedy już program będzie działał.

Napisałem o tym mega post tutaj a Ty go pewnie nawet nie obejrzałeś :P

Offline Karczas

  • Użytkownik
    • DevBlog

# Grudzień 21, 2007, 20:47:57
Mój następny (po Twoim) post właśnie odnosił się do tego "mega" tworu ;)

A co do samego problemu, to już jest on rozwiązany. Okazało się, że branie się za planowanie klas i struktur danych po nocy nie jest dobrym pomysłem. Wziąłem się za to dzisiaj z rańca, przemyślałem wszystko dokładnie i zakodowałem.
Wszystko zorganizowałem sobie tak:



I tak:
"Faktura" to klasa zawierająca relacje tabeli A z innymi tabelami.
"Lista wpisów" to kolekcja ArrayList klas "Wpis".
"i_Informacji" to int zawierający indeks rekordu z tabeli B
"i_Produktu" to int zawierający indeks rekordu z tabeli C

Wszystkie rekordy trzymam sobie w całości w kolekcjach i poprzez klasę Faktura i jej podległe odnoszę się przez indeksy do wartości tych pól. Trochę zamieszałem, ale ważne, że działa :D
Odpala się na mojej maszynce (1,8GHz i jakieś starocie w jednostce) ok 14 sekund, za to nadrabia prędkością pracy aplikacji. Na razie nie umieszczam execa ani źródeł. Wrzucę za to listę komunikatów zwracanych przez program (jest to aplikacja konsolowa):

Trwa ładowanie zasobów do pamięci. Proszę czekać...
Sortowanie danych...
Tworzenie relacji...
##################################################

Załadowano z zasobów:
* faktur: 91609
* wpisów: 116835
* produktów: 1065
Ładowanie danych zajęło: 00:00:15.8906250

##################################################

##################################################
#                                                #
#                    MENU                        #
#                                                #
#    1. Pokaż wszystkich klientów                #
#    2. Pokaż numery faktur klienta              #
#    3. Podaj obroty klienta                     #
#    4. Pokaż detale faktury                     #
#    5. Zestawienie ilościowe towarów w czasie   #
#                                                #
#                                                #
#    A. O autorze                                #
#    Q. Koniec                                   #
#                                                #
##################################################
Twój wybór: >>1

Lista klientów:
[1/1183] A PAULO
[2/1183] AB
[3/1183] ABAL
[4/1183] ABRO
[5/1183] ABRO PLUS
[6/1183] ABSOLWENT
[7/1183] ABUL
[8/1183] ACP PHARMA
[9/1183] ADA
[10/1183] ADA S.C.
[11/1183] ADAMCZYK
[12/1183] ADAMIEC
[13/1183] ADAMSKA ANNA
[14/1183] ADAMSKA B.
[15/1183] ADAMSKI T.
[16/1183] ADAMSKI TOMASZ
[17/1183] ADH
[18/1183] ADMAR
[19/1183] ADRIANNA
[20/1183] AFTAńSKI
[21/1183] AGATA

Dowolny klawisz aby przewinąć... ("D" przewija na sam koniec) >>

***WYCIęTE BO DUŻO TEGO...

##################################################
#                                                #
#                    MENU                        #
#                                                #
#    1. Pokaż wszystkich klientów                #
#    2. Pokaż numery faktur klienta              #
#    3. Podaj obroty klienta                     #
#    4. Pokaż detale faktury                     #
#    5. Zestawienie ilościowe towarów w czasie   #
#                                                #
#                                                #
#    A. O autorze                                #
#    Q. Koniec                                   #
#                                                #
##################################################
Twój wybór: >>2

Podaj nazwę klienta >> sygnarski

Lista numerów faktur klienta "SYGNARSKI" :
[1/816] 05C0539
[2/816] 05C0928
[3/816] 05C2335
[4/816] 05C2596
[5/816] 05C3520
[6/816] 05C3579
[7/816] 05C3596
[8/816] 05C3708
[9/816] 05D20006
[10/816] 05D20042
[11/816] 05D20059
[12/816] 05D20075
[13/816] 05D20092
[14/816] 05D20108
[15/816] 05D20132
[16/816] 05D20146
[17/816] 05D20167
[18/816] 05D20189
[19/816] 05D20204
[20/816] 05D20219
[21/816] 05D20243

Dowolny klawisz aby przewinąć... ("D" przewija na sam koniec) >>


***WYCIęTE BO DUŻO TEGO...

Podaj nazwę klienta >> sygnarski

Obroty klienta "SYGNARSKI" wynoszą: 247 464,77 zł

##################################################
#                                                #
#                    MENU                        #
#                                                #
#    1. Pokaż wszystkich klientów                #
#    2. Pokaż numery faktur klienta              #
#    3. Podaj obroty klienta                     #
#    4. Pokaż detale faktury                     #
#    5. Zestawienie ilościowe towarów w czasie   #
#                                                #
#                                                #
#    A. O autorze                                #
#    Q. Koniec                                   #
#                                                #
##################################################
Twój wybór: >>4

Podaj numer faktury >> 07D30026

Detale faktury nr 07D30026:
----------------
[1/31]
INDEKS: 0-07-04
ILOSC: 24
CENAJ: 1,56
WARTOSC: 37,44
DOKUMENT: 07D30026
DATA: 2007-01-03 00:00:00
NAZWA: PIWO ""KARMI POEMA DI CAFE""      24* 0,4L
----------------
[2/31]
INDEKS: 0-07-02
ILOSC: 24
CENAJ: 1,56
WARTOSC: 37,44
DOKUMENT: 07D30026
DATA: 2007-01-03 00:00:00
NAZWA: PIWO ""KARMI CLASSIC"" OKOCIM     24* 0,4L
----------------
[3/31]
INDEKS: 0-03-02
ILOSC: 60
CENAJ: 1,59
WARTOSC: 95,4
DOKUMENT: 07D30026
DATA: 2007-01-03 00:00:00
NAZWA: PIWO ""LECH PREMIUM""                 0,5L
----------------

Dowolny klawisz aby przewinąć... ("D" przewija na sam koniec) >>

***WYCIęTE BO DUŻO TEGO...

##################################################
#                                                #
#                    MENU                        #
#                                                #
#    1. Pokaż wszystkich klientów                #
#    2. Pokaż numery faktur klienta              #
#    3. Podaj obroty klienta                     #
#    4. Pokaż detale faktury                     #
#    5. Zestawienie ilościowe towarów w czasie   #
#                                                #
#                                                #
#    A. O autorze                                #
#    Q. Koniec                                   #
#                                                #
##################################################
Twój wybór: >>5
Podaj początkowy indeks grupy towarów (x-xx-xx): >> 1-03-05
Podaj końcowy indeks grupy towarów (x-xx-xx): >> 1-03-30
Podaj początek przedziału czasowego (dd.mm.yyyy): >> 01.01.2000
Podaj koniec przedziału czasowego (dd.mm.yyyy): >> 01.01.2008
[1/7] PIWO PUSZ.""LECH MOCNE 4-PAK""      4*0,5L ILOSC: 94
[2/7] PIWO ""GRONIE-TYCHY""              KEG 3OL ILOSC: 200
[3/7] PIWO ""GRONIE-TYCHY""              KEG 50L ILOSC: 234
[4/7] PIWO PUSZ.""LECH PREMIUM 4-PAK""    4*0,5L ILOSC: 204
[5/7] PIWO ""LECH PREMIUM""              KEG 3OL ILOSC: 151
[6/7] PIWO ""LECH PREMIUM""              KEG 50L ILOSC: 92
[7/7] PIWO PUSZK.""GRONIE-TYCHY""           0,5L ILOSC: 2006

##################################################
#                                                #
#                    MENU                        #
#                                                #
#    1. Pokaż wszystkich klientów                #
#    2. Pokaż numery faktur klienta              #
#    3. Podaj obroty klienta                     #
#    4. Pokaż detale faktury                     #
#    5. Zestawienie ilościowe towarów w czasie   #
#                                                #
#                                                #
#    A. O autorze                                #
#    Q. Koniec                                   #
#                                                #
##################################################
Twój wybór: >>A

##################################################
#                                                #
#    WYKONAŁ: Marcin Karczewski                  #
#             z bydgoskiego Zespołu              #
#             Szkół Elektronicznych              #
#                                                #
#             Bydgoszcz 2007                     #
#                                                #
#    KONTAKT: e-mail: karczas2@interia.pl        #
#             GG    : 7061705                    #
#                                                #
##################################################

Naciśnij dowolny klawisz aby kontynuować...