zestawienie wartościowe sprzedaży... xml czy csv?

0

Witam wszystkich.
Cała dokumentacja razem z treścią zadania znajduje się w pliku do ściągnięcia. Nie mam pojęcia o programowaniu w javie. Może ktoś coś podpowie? Pomoże trochę... uczę się na bieżąco to może później coś skumam. Może jak sobie poradzić z tymi .xml??? a może .csv??? :? dane przedzielone # ???? :/ POMOCY!!! ;-(
Ogólnie program ma takie zadanie:

Zestawienie wartościowe sprzedaży określonej grupy towarów od indeksu(INDEKS.FAKTURYP) do indeksu(INDEKS.FAKTURYP) produktu w okresie od daty do daty.

http://rapidshare.com/files/64378853/projekt_programowanie.rar.html

Mirory:
http://www.speedyshare.com/779184952.html
http://www.megaupload.com/?d=EE76GP07

Problem jest w tym, ze dopiero uczę sie programowania w java... jestem zielony z tego! Mamy stworzyć program z interfejsem graficznym.
program po wpisaniu aneks od... do... i daty od... do... powinien podliczać wartość produktów z przedziału aneksów w przedziale datowym po wciśnięciu buttona wyświetlać sumę... Nie wiem jeszcze jak zacząć. Mamy to zrobić w netbeans5_5_1 jdk6u3
Może ktoś chociaż dobą lekturę poleci?! :-)
Nie proszę o napisanie za mnie programu a jedynie o pomoc!!! (tak dla ścisłości bo znowu wyląduje w koszu mój temat)

0

:) To mi się podoba :)

Co do lektury to na początek TiJ (nie polecam, ale jest to jedno tomowe i świeże), albo Core Java Podstawy + Techniki Zaawansowane.

Co do programu. To lepiej jest walczyć w xml'u. Po kilku latach różnych zabaw z obróbką danych raportowych, przy okazji obsługi firm finansowych, wiem jedno. CSV jest dobry jako format końcowy dla różnych ViewResolverów, ale całkowicie nie nadaje się do składowania danych. Xml jest obsługiwany za pomocą DOM - Document OBJECT Model, który "naturalnie" mapuje się do koncepcji klas. Dodatkowo dzięki xslt można zamienić format xml na dowolny inny włącznie z CSV.

Co do samego programu to kilka porad.

  1. Potraktuj dokument xml jako źródło jednokrotnego wykorzystania. Na starcie ładujesz wszytko do kolekcji i na kolekcjach obsługujesz wyszukiwanie.
  2. Stwórz obiekt Faktura zawierający tylko dane z xml'a oraz obiekt ListaFaktur, który będzie wyszukiwał dane.
  3. Pisz testy. Niech każdy fragment kodu będzie przetestowany. Przykładowe testy:
  • wczytanie listy faktur. Wczytaj listę złożoną z jednej faktury, sprawdź czy dane są wczytane poprawnie
  • wyszukiwanie w małym zbiorze, czy wyszukano poprawne obiekty, co jak lista wyszukania jest pusta
  1. zastanów się jak obsłużyć przypadki błędów:
  • nieprawidłowy dokument xml
  • puste listy wyszukiwania i NullPointerException (wiele osób na tym poległo, oj wiele)

Co więcej. Poczytaj jeszcze na 4programers o Javie i zadawaj pytania... dużo pytań.

0

Dzięki wielkie!!! [browar] Poczytam teraz trochę i zobaczymy co z tego wyjdzie. Co do tej książki z podstawami to niedługo będę miał pdf. bo kosztuje prawie 100zł. Mam nadzieje, że później trochę ogarnę temat [green]

0

@bartas18b, po co piracić? Jak znasz angielski to z:
http://mindview.net/Books/TIJ/DownloadSites
możesz ściągnąć tą książkę za darmo i legalnie :)

0

Angielski znam! Tylko nie wiem czy wystarczająco, żeby zrozumieć coś co po polsku ciężko już jest. Pozostaje mi teraz czytać! ...i czytać! ;-)

0

Trudność TiJ to raczej zasługa "doskonałego" ;) tłumaczenia, a nie samego podejścia. Angielską wersję czyta się z przyjemnością.

0

Święty Mikołaj jakoś mi nie przyniósł projektu więc znowu piszę na forum [green]
Jak na razie mam coś takiego:

import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import java.util.*;



public class Faktury extends javax.swing.JFrame {
    public void CzytajImport(File NazwaPliku)
{
    TreeSet<String>nazwiska = new TreeSet<String>();
    int liczbazaimportowanychzlecen=0;
    try{
        FileReader in= new FileReader(NazwaPliku);
        Scanner src= new Scanner(in);
        src.useDelimiter("\n");
        for (int g=0;src.hasNext();g++)
        {
            String wiersz=src.next();
            Scanner srcx= new Scanner(wiersz);
            srcx.useDelimiter("#");
            for (int i=0;srcx.hasNext();i++)
            {
                String Kolumna= srcx.next();
                switch (i)
                {
                    case 1:
                        nazwiska.add(pobierzNazwisko(Kolumna));
                        break;
                }
            }
            
        }
        
    }catch(java.io.FileNotFoundException ex)
    {
        JOptionPane.showMessageDialog(getContentPane(),"Brak Pliku "+NazwaPliku,"Uwaga",JOptionPane.ERROR_MESSAGE);
        System.exit(-1);
    }
    int i=1;
   

    for (String x:nazwiska){
        System.out.println(i+":"+x);
        i++;
    }
    }
public String pobierzNazwisko(String tym)
{
    StringTokenizer ob= new StringTokenizer(tym,"'\"'");
    return ob.nextToken();
}

    /** Creates a new instance of Faktury */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new WyborPliku().setVisible(true);
            }
        });
import java.io.File;
import java.io.FileFilter;


public class FileFilterX extends javax.swing.filechooser.FileFilter{
    String Roz;
    String Opis;
    /** Creates a new instance of DirFilter */
   public FileFilterX(String Roz,String Opis)
   {
       this.Roz="."+Roz.toLowerCase();
       this.Opis=Opis;
   }
   public  String getDescription(){
       return Opis;
       
   }
public boolean accept(File dir, String name) {
return new File(dir, name).isDirectory();
}

    public boolean accept(File pathname) {
        return (pathname.getName().endsWith(Roz)||(pathname.isDirectory()));
    }

}
import java.awt.event.ActionEvent;
import java.io.File;
import javax.swing.*;


public class WyborPliku extends javax.swing.JFrame {
 private  FileFilterX obtcsv= new FileFilterX("csv","CSV-File");

    /**
     * Creates new form WyborPliku
     */
    public WyborPliku() {
        
      UIManager.put("FileChooser.saveButtonText", "Zapisz");
      UIManager.put("FileChooser.openButtonText", "Otworz");
      UIManager.put("FileChooser.cancelButtonText", "Anuluj");
      UIManager.put("FileChooser.updateButtonText", "Modyfikuj");
      UIManager.put("FileChooser.helpButtonText", "Pomoc");
      UIManager.put("FileChooser.fileNameLabelText", "Nazwa pliku:");
      UIManager.put("FileChooser.lookInLabelText","Jestes w:");
      UIManager.put("FileChooser.filesOfTypeLabelText", "Pliki typu:");
      UIManager.put("FileChooser.upFolderToolTipText", "Do góry o jeden poziom");
      UIManager.put("FileChooser.homeFolderToolTipText", "Folder domowy");
      UIManager.put("FileChooser.newFolderToolTipText", "Utwórz nowy folder");
      UIManager.put("FileChooser.listViewButtonToolTipText", "Lista");
      UIManager.put("FileChooser.detailsViewButtonToolTipText", "Szczegóły");
      JFileChooser wyborPliku = new JFileChooser();
      initComponents();
                
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jDWybor = new javax.swing.JDialog();
        jLabel1 = new javax.swing.JLabel();
        jFileChooser1 = new javax.swing.JFileChooser();

        jFileChooser1.addChoosableFileFilter(obtcsv);

        jDWybor.setAlwaysOnTop(true);
        jDWybor.setMinimumSize(new java.awt.Dimension(100, 100));
        jDWybor.setModal(true);
        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18));
        jLabel1.setText("Uwaga Wyb\u00f3r !!!");

        javax.swing.GroupLayout jDWyborLayout = new javax.swing.GroupLayout(jDWybor.getContentPane());
        jDWybor.getContentPane().setLayout(jDWyborLayout);
        jDWyborLayout.setHorizontalGroup(
            jDWyborLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jDWyborLayout.createSequentialGroup()
                .addGap(94, 94, 94)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 281, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(25, Short.MAX_VALUE))
        );
        jDWyborLayout.setVerticalGroup(
            jDWyborLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jDWyborLayout.createSequentialGroup()
                .addGap(75, 75, 75)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(176, Short.MAX_VALUE))
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Wyk\u0142ad 29.10.2007");
        jFileChooser1.setCurrentDirectory(new java.io.File("D:\\Tomek\\Projekt2"));
        jFileChooser1.setFileSelectionMode(javax.swing.JFileChooser.FILES_AND_DIRECTORIES);
        jFileChooser1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jFileChooser1ActionPerformed(evt);
            }
        });
        jFileChooser1.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                jFileChooser1PropertyChange(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(33, 33, 33)
                .addComponent(jFileChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(112, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(37, 37, 37)
                .addComponent(jFileChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, 397, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(144, Short.MAX_VALUE))
        );
        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jFileChooser1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jFileChooser1ActionPerformed
if(evt.getActionCommand()==JFileChooser.APPROVE_SELECTION)
{
 System.out.println("JFileChooser.APPROVE_SELECTION");     
  File f = jFileChooser1.getSelectedFile();
           System.out.println("getAbsolutePath()="+jFileChooser1.getSelectedFile().getAbsolutePath());
           System.out.println("getName()="+jFileChooser1.getSelectedFile().getName());
           System.out.println("getParent()()="+jFileChooser1.getSelectedFile().getParent());
           if(f.isDirectory()){System.out.println("To jest Katalog");}else{System.out.println("To jest Plik");}
           Faktury czytaj = new Faktury();
           czytaj.CzytajImport(jFileChooser1.getSelectedFile().getAbsoluteFile());
}
if(evt.getActionCommand()==JFileChooser.CANCEL_SELECTION)
{
 System.out.println("JFileChooser.CANCEL_SELECTION");   
// jFileChooser1.setVisible(false);
 System.exit(0);
}
    }//GEN-LAST:event_jFileChooser1ActionPerformed

    private void jFileChooser1PropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_jFileChooser1PropertyChange
       if (evt.getPropertyName() ==
         JFileChooser.APPROVE_SELECTION)
       {
        System.out.println("JFileChooser.CANCEL_OPTION");   
       }
      
        
        
        if (evt.getPropertyName() == 
         JFileChooser.FILE_FILTER_CHANGED_PROPERTY) {
          System.out.println("FILE_FILTER_CHANGED_PROPERTY");
          return;
        }
        else if (evt.getPropertyName() ==
         JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) {
             System.out.println("SELECTED_FILE_CHANGED_PROPERTY");
          File f = jFileChooser1.getSelectedFile();
           System.out.println("jFileChooser1.getSelectedFile()="+jFileChooser1.getSelectedFile());
          if (f != null) {  
//            if (m_selectedFile!=null && m_selectedFile.equals(f)
//             && m_zipEntries.getModel().getSize() > 0) {
              return;
            }}
        
       
    }//GEN-LAST:event_jFileChooser1PropertyChange
 
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new WyborPliku().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JDialog jDWybor;
    private javax.swing.JFileChooser jFileChooser1;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration//GEN-END:variables
 
}

Zbliża się termin oddania projektu a ja nic prawie nie mam. Może ktoś powie jak to mam połączyć... Co jeszcze muszę zrobić itd. Byłbym wdzięczny! Sama lektura nie wystarczy ;)

0

i co bartas? masz już zrobione? nie ma to jak UTP :D
projekt nie jest trudny. ja już go dawno temu zrobiłem i oddałem :)
pkt od 1 do 4, od A do D, obłsuga plików XML i CSV. dodatkowo eksport zestawień do PDF i XML :)

0

No spoko. Tylko, że ty w przeciwieństwie do mnie Miłosz miałeś już jakieś doświadczenie z Java przed UTP! Nie wiem jak w tak krótkim czasie laik może sie tego nauczyć?! Nie wspomnę o matmie i całkach z panią Z... :/

0

No i tu cie zaskocze :) bo programować zaczełem w październiku... no w projekcie jest kilka kruczków :) ale nie jest za trudny.
XML jest zakodowany w base64 :) w CSV są dziwne spacje 0xA0 :)

0

@ollerm - boshe...

0

no co? :)

trzeba było usiąść z książką przy kompie i się uczyć.. Java nie jest taka zła.. całkiem fajna jest :)

0

Całki też są fajne! Tylko Zachwieja nie umie tego wytłumaczyć! :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1