MinusXLRequirements Απόστολος Ζάρρας http://www.cs.uoi.gr/~zarras/se.htm Γενικό πλαίσιο Μια από τις πιο γνωστές και ευρέως διαδεδομένες εμπορικές εφαρμογές για τη διαχείριση λογιστικών φύλλων είναι το Excel της Microsoft. Στόχος της εργασίας μας είναι να αναπτύξουμεμια αντίστοιχη εφαρμογή, MinusXL, με λιγότερες λειτουργίες άλλα ταυτόχρονα και πιο απλή στη χρήση. Απαιτήσεις Μοντέλο εδοµένων Τα δεδομένα που χειρίζεται η εφαρμογή οργανώνονται σε βιβλία εργασίας. Ένα βιβλίο εργασίας χαρακτηρίζεται από: Ένα όνομα. Μία λίστα από λογιστικά φύλλα. 1
Απαιτήσεις Μοντέλο εδοµένων Ένα λογιστικό φύλλο χαρακτηρίζεται από: Ένα όνομα. Ένα πίνακα NxMτου οποίου το μέγεθος καθορίζεται δυναμικά κατά τη δημιουργία του λογιστικού φύλλου. Ένα κελί χαρακτηρίζεται από τις συντεταγμένες του στον πίνακα. Για ένα κελί έχουμε τα εξής ενδεχόμενα: Είναι κενό. Έχει μια αριθμητική τιμή στους πραγματικούς αριθμούς. Έχει μια λογική τιμή (true, false). Έχει ένα αλφαριθμητικό. Σχετίζεται με μια συνάρτηση που υπολογίζει την τιμή του με βάση άλλα κελιά. Απαιτήσεις Μοντέλο εδοµένων Υπάρχουν οι εξής γενικές κατηγορίες συναρτήσεων: Μαθηματικές και τριγωνομετρικές. Λογικές. Στατιστικές. Αλφαριθμητικές. Απαιτήσεις Μοντέλο εδοµένων Συνάρτησ η Είσοδος Έξοδος abs Ένα μη κενό κελί (i, j) Απόλυτη τιμή της τιμής του κελιού (i, j) cos sin tan Ένα μη κενό κελί (i, j) που περιέχει ως τιμή μια γωνία από 0-360 μοίρες Ένα μη κενό κελί (i, j) που περιέχει ως τιμή μια γωνία από 0-360 μοίρες Ένα μη κενό κελί (i, j) που περιέχει ως τιμή μια γωνία από 0-360 μοίρες Συνημίτονο της γωνίας Ημίτονο της γωνίας Εφαπτομένη της γωνίας. pow Δύο μη κενά κελιά που περιέχουν τιμές Η τιμή x y x, y sum Ένα μη κενό σύνολο κελιών Το άθροισμα των τιμών των κελιών mult Ένα μη κενό σύνολο κελιών Το γινόμενο των τιμών των κελιών log log10 Ένα μη κενό κελί (i, j) που περιέχει μια Το λογάριθμο της τιμής του κελιού (i, j) με βάση τιμή > 0 το e Ένα μη κενό κελί (i, j) που περιέχει μια Το λογάριθμο της τιμής του κελιού (i, j) με βάση τιμή > 0 το 10 Πίνακας 1 - Μαθηματικές και Τριγωνομετρικές Συναρτήσεις 2
Δημιουργία νέου βιβλίου εργασίας: Ο χρήστης καθορίζει το όνομα. Το νέο workbook δημιουργείται και εμφανίζεται στο χρήστη. Σε περίπτωση που ο χρήστης δεν καθορίσει όνομα για το νέο workbook, αυτό θα έχει ένα defaultόνομα και εμφανίζεται στο χρήστη μια αντίστοιχη προειδοποίηση. Σε περίπτωση που η εφαρμογή χειρίζεται ήδη κάποιο workbook υπάρχει σχετική ειδοποίηση στο χρήστη η οποία του δίνει τη δυνατότητα να αποθηκεύσει τα δεδομένα του παλιού workbook στο δίσκο πριν τη δημιουργία του νέου workbook. Αποθήκευση δεδομένων ενός βιβλίου εργασίας: Όταν ο χρήστης επιθυμεί μπορεί να ενεργοποιήσει την αποθήκευση των δεδομένων ενός βιβλίου εργασίας. Τότε για κάθε λογιστικό φύλλο του workbook δημιουργείται ένα αρχείο στο δίσκο στο οποίο αποθηκεύονται τα δεδομένα του εν λόγω λογιστικού φύλλου σε μορφή CSV. Σύμφωνα με τη μορφή αυτή οι τιμές κάθε γραμμής του φύλλου αποθηκεύονται σε αντίστοιχες γραμμές στο αρχείο. Η τιμή κάθε κελιού, εκτός από το τελευταίο της γραμμής, ακολουθείται από το χαρακτήρα ';'. Αν ένα κελί δεν έχει τιμή στο αρχείο αποθηκεύεται μόνο το ';' (π.χ. Πίνακας 5). Στην περίπτωση που προκύψει πρόβλημα στην αποθήκευση του αρχείου εμφανίζεται αντίστοιχο μήνυμα λάθους στο χρήστη. ;Electricity;Heat;Rent;Salaries;Operational Expenses January;230,34;678,67;1000;3000;1909,01 February;123,00;567,34;1000;3000;1690,34 March;145,00;345,67;1000;3000;1490,67 April;234,00;234,56;1000;3000;1468,56 May;300,05;256,00;1000;3000;1556,05 June;230,00;0,00;1000;3000;1230,00 July;123,00;0,00;1000;5000;1123,00 August;145,67;0,00;1000;5000;1145,67 September;234,00;123,00;1000;5000;1357,00 October;100,00;345,67;1000;4000;1445,67 November;456,00;234,56;1000;4000;1690,56 December;333,00;567,34;1000;4000;1900,34 ;;;;; Max;456,00;678,67;1000,00;5000,00;1909,01 Min;100,00;0,00;1000,00;3000,00;1123,00 Average;221,17;279,40;1000,00;3750,00;1500,57 StdDev;104,37;233,01;0,00;866,03;264,28 ;;;;; Πίνακας 5 - Μια CSV περιγραφή των δεδομένων του λογιστικού φύλλου Expenses per Month 3
Προσθήκη λογιστικού φύλλου: Ο χρήστης καθορίζει το όνομα και τις διαστάσεις του νέου φύλλου. Στη συνέχεια το νέο φύλλο δημιουργείται και εμφανίζεται στο χρήστη. Επίσης το νέο φύλλο καταχωρείται σε μια λίστα με τα φύλλα που αποτελούν το τρέχον βιβλίο εργασίας. Στη συνέχεια ο χρήστης μπορεί να καταχωρήσει δεδομένα, να επεξεργαστεί τα δεδομένα, να φτιάξει γραφικές παραστάσεις, κλπ. Σε περίπτωση που ο χρήστης δεν καθορίσει τα στοιχεία που απαιτούνται αυτά παίρνουν default τιμές και εμφανίζεται στο χρήστη μια αντίστοιχη προειδοποίηση. Διαγραφή λογιστικού φύλλου: Ο χρήστης επιλέγει ένα λογιστικό φύλλο και ενεργοποιεί τη διαγραφή του. Το εν λόγω φύλλο αφαιρείται από τη λίστα των φύλλων που αποτελούν το τρέχον βιβλίο εργασίας. Σε περίπτωση που ο χρήστης ενεργοποιήσει τη διαγραφή χωρίς να επιλέξει κάποιο φύλλο εμφανίζεται αντίστοιχο μήνυμα λάθους. Εισαγωγή δεδομένων από αρχείο: Ο χρήστης καθορίζει το όνομα ενός αρχείου CSV που περιέχει τα δεδομένα ενός λογιστικού φύλλου. Στη συνέχεια γίνεται ανάγνωση του αρχείου και δημιουργείται ένα νέο λογιστικό φύλλο που περιέχει τα εν λόγω δεδομένα. Το όνομα του φύλλου είναι το ίδιο με το όνομα του αρχείου. Στην περίπτωση που προκύψει πρόβλημα στην ανάγνωση του αρχείου εμφανίζεται αντίστοιχο μήνυμα λάθους στο χρήστη. 4
Χειροκίνητη επεξεργασία δεδομένων: Ο χρήστης μπορεί να επιλέξει ένα λογιστικό φύλλο και να επεξεργαστεί τα δεδομένα του, εισάγοντας, διαγράφοντας και αλλάζοντας τιμές, συναρτήσεις, κλπ. στα κελιά του επιλεγμένου φύλλου. Αν διαγραφεί/αλλαχθεί η τιμή ενός κελιού το οποίο χρησιμοποιείται σαν είσοδος σε κάποια(ες) συνάρτηση(εις) το αποτέλεσμα της(ων) συνάρτησης(ων) ανανεώνεται αυτόματα και εμφανίζεται στο(α) κελί(α) της(ων) συνάρτησης(ων). Σε περίπτωση που οι αλλαγές έχουν ως αποτέλεσμα τα δεδομένα εισόδου της(ων) συνάρτησης(ων) να είναι ελλειπή ή να μην πληρούν τους περιορισμούς της(ων) συνάρτησης(ων)(βλέπε Πίνακες 1, 2, 3, 4) εμφανίζεται αντίστοιχο μήνυμα λάθους στο χρήστη. Επεξεργασία δεδομένων με συναρτήσεις: Για να συσχετίσει μια συνάρτηση με ένα κελί ο χρήστης επιλέγει το κελί, καθώς και τη συνάρτηση. Στη συνέχεια επιλέγει τα κελιά από τα οποία θα προκύψουν τα δεδομένα εισόδου της συνάρτησης. Για δεδομένα εισόδου που περιλαμβάνουν ένα σύνολο κελιών ο χρήστης μπορεί είτε να καθορίζει καθένα από τα κελιά δίνοντας τις συντεταγμένες τους (π.χ. κελί (1, 1), κελί (2, 3), κλπ.) ή να δώσει σαν είσοδο το υποσύνολο των κελιών μιας γραμμής ή στήλης (π.χ. από κελί (1, 3) έως κελί (1, 10)). Το αποτέλεσμα της εν λόγω διαδικασίας είναι η εμφάνιση του αποτελέσματος της συνάρτησης στο κελί που επιλέχθηκε αρχικά. Σε περίπτωση που τα δεδομένα εισόδου της συνάρτησης είναι ελλειπή ή δεν πληρούν τους περιορισμούς της συνάρτησης (βλέπε Πίνακες 1, 2, 3, 4) τότε εμφανίζεται σχετικό μήνυμα λάθους. Δημιουργία γραφικών παραστάσεων: Ο χρήστης μπορεί να επιλέξει από μια λίστα το τύπο της γραφικής παράστασης που θέλει να χρησιμοποιήσει. Η εφαρμογή υποστηρίζει 2 είδη γραφικών παραστάσεων: γραφήματα γραμμών (π.χ., Σχήμα 2) και ραβδογράμματα (π.χ., Σχήμα 3). Εν συνεχεία, ο χρήστης καθορίζει ένα τίτλο για τη γραφική παράσταση, τίτλους για τους άξονες και τα δεδομένα που θα απεικονιστούν. Ο καθορισμός μπορεί να γίνει όπως και στην περίπτωση της επεξεργασίας δεδομένων με συναρτήσεις. Τέλος η γραφική παράσταση εμφανίζεται στο χρήστη. Στην περίπτωση που κάποια από τα στοιχεία που απαιτούνται για την δημιουργία των γραφικών παραστάσεων δεν καθοριστούν εμφανίζεται ενημερωτικό μήνυμα. 5
Άλλες Απαιτήσεις Μη λειτουργικές, τεκμηρίωση, διεργασία ανάπτυξης Εργαλεία Eclipse - https://eclipse.org/downloads/ Eclipse Violet UML Editor plugin για τη σχεδίαση UML διαγραμμάτων - http://sourceforge.net/projects/violetumlplugin/ Standalone Violet UML Editor(δεν χρειάζεται να χρησιμοποιηθεί μέσω του Eclipse) - http://alexdp.free.fr/violetumleditor/page.php Eclipse WindowBuilder plugin(προσφέρει ένα Eclipse editor για την υλοποίηση Java GUIs) - http://www.eclipse.org/windowbuilder/ Tutorial (youtube video) για τη χρήση του WindowBuilderhttps://www.youtube.com/watch?v=1sEYde5I7J8 JFreeChart βιβλιοθήκη για υλοποίηση γραφικών παραστάσεων σε Java - http://www.jfree.org/jfreechart/ Tutorial για το JFreeChart- http://www.codeproject.com/articles/650480/introduction-to- JFreeChart 6
Window Builder Window Builder Window Builder 7
Violet Violet 8