Πρόγραμμα σε Java

Συζητήσεις για την Java

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
konauth
Δημοσιεύσεις: 14
Εγγραφή: 12 Ιαν 2010 21:41

Πρόγραμμα σε Java

Δημοσίευση από konauth » 22 Ιαν 2011 12:36

Καλημέρα παιδιά..
Έχω να κάνω μια εργασία σε Java μέχρι το απόγευμα και χρειάζομαι βοήθεια σε κάποια πραγματάκια.
Λοιπόν,πρέπει να δημιουργήσω ένα ηλεκτρονικό κατάστημα το οποίο θα παρακολουθεί τις εργασίες που γίνονται σε ένα κατάστημα επισκευής υπολογιστών.Οι λειτουργίες που πρέπει να κάνει το πρόγραμμα περιληπτικά είναι οι εξής:
• Διαχειριστής: καταχώρηση νέου χρήστη, προβολή χρηστών με όλα τα στοιχεία.
• Γραμματεία: Καταχώρηση νέας εργασίας, προβολή ολοκληρωμένων εργασιών, Καταχώρηση εργασίας σε κατάσταση «Αρχείο», προβολή εργασιών αρχείου.
• Συντονιστής: Προβολή ανοικτών εργασιών, επιλογή αν το πρόβλημα θα ανατεθεί σε
τεχνικό υλικού ή λογισμικού, προβολή των εργασιών που βρίσκονται σε εξέλιξη.
• Τεχνικός: Προβολή των εργασιών που του έχουν ανατεθεί, καταχώρηση εργασίας
που του έχει ανατεθεί ως ολοκληρωμένη.

Το πρώτο μου πρόβλημα είναι η αποθήκευση των χρηστών από τον Διαχειριστή και των Εργασιών από την Γραμματεία.
Έχω χρησιμοποιήσει TreeSet για να βάζω τα στοιχεία μου σε λίστα και μετά με ObjectOutputStream τα αποθηκεύω σε ένα αρχείο Works.dat.
Το θέμα είναι ότι μου αποθηκεύει μόνο τα στοιχεία του πρώτου χρήστη που βάζω.Τους επόμενους δεν τους περνάει στο αρχείο .dat.
Οποιαδήποτε βοήθεια είναι επιθυμητή.

*Ο κώδικας που χρησιμοποιώ για την αποθήκευση είναι ο εξής:

Κώδικας: Επιλογή όλων

 public static void saveState() {
        try {
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Works.dat"));
            out.writeObject(works);
            out.close();
        } catch (IOException ex) {
            System.out.println(ex);
        }
    }
όπου works το TreeSet που έχω δημιουργήσει.

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

Πρόγραμμα σε Java

Δημοσίευση από pimpogio » 22 Ιαν 2011 16:05

konauth έγραψε:Καλημέρα παιδιά..
Έχω να κάνω μια εργασία σε Java μέχρι το απόγευμα και χρειάζομαι βοήθεια σε κάποια πραγματάκια.
Λοιπόν,πρέπει να δημιουργήσω ένα ηλεκτρονικό κατάστημα το οποίο θα παρακολουθεί τις εργασίες που γίνονται σε ένα κατάστημα επισκευής υπολογιστών.Οι λειτουργίες που πρέπει να κάνει το πρόγραμμα περιληπτικά είναι οι εξής:
• Διαχειριστής: καταχώρηση νέου χρήστη, προβολή χρηστών με όλα τα στοιχεία.
• Γραμματεία: Καταχώρηση νέας εργασίας, προβολή ολοκληρωμένων εργασιών, Καταχώρηση εργασίας σε κατάσταση «Αρχείο», προβολή εργασιών αρχείου.
• Συντονιστής: Προβολή ανοικτών εργασιών, επιλογή αν το πρόβλημα θα ανατεθεί σε
τεχνικό υλικού ή λογισμικού, προβολή των εργασιών που βρίσκονται σε εξέλιξη.
• Τεχνικός: Προβολή των εργασιών που του έχουν ανατεθεί, καταχώρηση εργασίας
που του έχει ανατεθεί ως ολοκληρωμένη.

Το πρώτο μου πρόβλημα είναι η αποθήκευση των χρηστών από τον Διαχειριστή και των Εργασιών από την Γραμματεία.
Έχω χρησιμοποιήσει TreeSet για να βάζω τα στοιχεία μου σε λίστα και μετά με ObjectOutputStream τα αποθηκεύω σε ένα αρχείο Works.dat.
Το θέμα είναι ότι μου αποθηκεύει μόνο τα στοιχεία του πρώτου χρήστη που βάζω.Τους επόμενους δεν τους περνάει στο αρχείο .dat.
Οποιαδήποτε βοήθεια είναι επιθυμητή.

*Ο κώδικας που χρησιμοποιώ για την αποθήκευση είναι ο εξής:

Κώδικας: Επιλογή όλων

 public static void saveState() {
        try {
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Works.dat"));
            out.writeObject(works);
            out.close();
        } catch (IOException ex) {
            System.out.println(ex);
        }
    }
όπου works το TreeSet που έχω δημιουργήσει.
o κωδικας που δειχνεις ειναι λιγος... για να βγει συμπερασμα...
Δειξε τον κωδικα που ανακτας το treeset και που το κανεις instantiate και που το γεμιζεις..
το serialization ειναι κακιστη πρακτικη εκει που το χρησιμοποιείς

konauth
Δημοσιεύσεις: 14
Εγγραφή: 12 Ιαν 2010 21:41

Πρόγραμμα σε Java

Δημοσίευση από konauth » 22 Ιαν 2011 16:26

Βασικά βρήκα την λύση για αποθήκευση του TreeSet σε αρχείο.Τώρα μου έχει προκύψει ένα άλλο πρόβλημα.
Έχω την:

Κώδικας: Επιλογή όλων

    public static void loadState() {
        try {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream("works.dat"));
            works = &#40;Set<Works>&#41; in.readObject&#40;&#41;;
            in.close&#40;&#41;;
        &#125; catch &#40;ClassNotFoundException ex&#41; &#123;
            System.out.println&#40;ex&#41;;
        &#125; catch &#40;IOException ex&#41; &#123;
            System.out.println&#40;ex&#41;;
        &#125;
    &#125;
στην class Secretariat.Αυτό που θέλω είναι να την χρησιμοποιήσω στην class moderator.
Έχω κάνει το εξής:

Κώδικας: Επιλογή όλων

public class moderator extends Secretariat&#123;
&#125;
και μέσα στην class moderator στην επιλογή ενός μενού έχω βάλει loadState().
Δεν έπρεπε να τρέχει την συνάρτηση χωρίς κανένα πρόβλημα;΄
Μου βγάζει¨
java.io.InvalidClassException: computerservice.Works; local class incompatible: stream classdesc serialVersionUID = 6817037955015323632, local class serialVersionUID = -2800780587279946186

όπου computerservice.Works η class Works που κάνει κάποιες λειτουργίες για την class Secretariat.

konauth
Δημοσιεύσεις: 14
Εγγραφή: 12 Ιαν 2010 21:41

Πρόγραμμα σε Java

Δημοσίευση από konauth » 22 Ιαν 2011 22:33

Παιδιά αν μπορεί κάποιος να βοηθήσει.Με τα παραπάνω που έχω γράψει έχω βγάλει μια άκρη.
Το πρόβλημα μου τώρα είναι το εξής:
Θέλω να διαβάζω ένα αρχείο και μετά να αποθηκεύω μια συγκεκριμένη γραμμή του σε ένα άλλο αρχείο.Έχει κανείς καμιά ιδέα πώς υλοποιείται;

Έχω κάνει το παρακάτω:

Κώδικας: Επιλογή όλων

public static void addSoftware&#40;&#41;&#123;
        int id;
        System.out.print&#40;"Δώσε το ID της εργασίας για ανάθεση&#58; "&#41;;
        id = Integer.parseInt&#40;sc.nextLine&#40;&#41;&#41;;
        for&#40;Works w &#58; works&#41;
            if&#40;w.getID&#40;&#41;==id&#41;&#123;
                saveSoftTech&#40;&#41;;
        &#125;
&#125;
και

Κώδικας: Επιλογή όλων

public static void saveSoftTech&#40;&#41; &#123;
        try &#123;
            ObjectOutputStream out = new ObjectOutputStream&#40;new FileOutputStream&#40;"softtech.dat"&#41;&#41;;
            out.writeObject&#40;works&#41;;
            out.close&#40;&#41;;
        &#125; catch &#40;IOException ex&#41; &#123;
            System.out.println&#40;ex&#41;;
        &#125;
    &#125;
όπου works ενα TreeSet που έχει αποθηκευτεί στο άλλο αρχείο που δεν φαίνεται στον κώδικα που σας δίνω αλλά το τραβάω σωστά.
Το πρόβλημα μου είναι ότι στο saveSoftTech πάει και αποθηκεύει ολόκληρο το TreeSet works ενώ εγώ θέλω μόνο την συγκεκριμένη γραμμή με το id που δίνει ο χρήστης.

Απάντηση

Επιστροφή στο “Java”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης