Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης

Σχετικά έγγραφα
Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Οδηγίες Χρήσης της MySQL

Αντικειμενοστρεφής Προγραμματισμός

databases linux - terminal (linux / windows terminal)

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Οδηγίες Χρήσης της MySQL

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

Βάσεις Δεδομένων Ι Εξεταστική Περίοδος Φεβρουαρίου 2006

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

Από τη UML στον Κώδικα. Μέρος Α

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Αρχική Σελίδα χωρίς να έχει πραγματοποιηθεί Σύνδεση

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

Σύστημα υποβολής αιτήσεων υποψήφιων συνεργατών ΕΚΤ

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

TUTORIAL VERSION: 1.0

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Διάγραμμα Κλάσεων. Class Diagram

PHPMyAdmin: Σύντομος οδηγός για αρχάριους

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Εργαστήριο Βάσεων Δεδομένων

Προγραμματισμός Παγκόσμιου Ιστού

«Σύστημα ΔΕΠ» ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ. Έκδοση 1.1

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

Management School School Profile Save

Σχεδιασμός Βάσεων Δεδομένων

ΠΑ-24γ Εγχειρίδιο Χρήσης Δ.Δ.Π. Του Δήμου Αιγάλεω

Εργαστήριο Βάσεων Δεδομένων

ΠΡΟΓΡΑΜΜΑ ΑΠΕΙΚΟΝΙΣΗΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΔΕΔΟΜΕΝΩΝ ΧΡΗΜΑΤΙΣΤΗΡΙΟΥ ΑΞΙΩΝ ΑΘΗΝΩΝ

Management Classes Create Class Create Class Management Classes List of Classes

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

Εργαστήριο Βάσεων Δεδομένων. Triggers

2. Για να δημιουργήσουμε το πρώτο ή κάθε νέο Backup set πατάμε στο εικονίδιο και εμφανίζεται ο Wizard του Backup set

Μποχρίνη Σταυρούλα ΑΜ:3173 Σταθόπουλος Αναστάσιος ΑΜ:3220

Wrapper Classes, Abstract Classes and Interfaces

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

Τμήμα Διοίκησης Επιχειρήσεων

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Ανάπτυξη διαδικτυακών εφαρμογών με την Python Το εργαλείο Flask

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΓΕΩΠΟΝΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ. Εγχειρίδιο Χρήσης Διαχείριση Εφαρμογών για τον διαχειριστή Γραμματεία ΜΟΔΙΠ

Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Λογισμικού

Generics και ArrayLists

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΟΠΣ ΕΣΠΑ : Εγγραφή χρήστη δικαιούχου. Ειδική Υπηρεσία Ολοκληρωμένου Πληροφοριακού Συστήματος

Χειμερινό εξάμηνο Διδάσκοντες: Ν. Παπασπύρου, Β. Βεσκούκης, Κ. Σαΐδης

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Εφαρμογή Βάσης Δεδομένων για την Εθελοντική Αιμοδοσία στο ΑΤΕΙ-Θ. Αρ. Μητρώου: 06/3083

QEMS TUTORIAL CRM. Οδηγίες για το νέο πρωτοποριακό πρόγραμμα της QEMS.

Ανάλυση Πληροφοριακών Συστημάτων. «Βασικές Έννοιες Αντικειμενοστρεφούς Προγραμματισμού Διαγράμματα κλάσεων» Βασίλειος Καρακόιδας

Εκπαιδευτικό Υλικό για την. «Βάση σχολικών μονάδων ΠΣΔ»

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Οδηγίες συμπλήρωσης αίτησης στην Εφαρμογή Πρόσληψης Εκτάκτου Προσωπικού.

, Evaluation of a library against injection attacks

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης

Ανάκτηση Δεδομένων (Information Retrieval)

Lecture 3: Introduction III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

ΕΡΓΑΣΙΑ 4 - Αντικειμενοστραφής Υλοποίηση του Συστήματος Κατανομής Θέσεων σε Προγράμματα Σπουδών

Καλές επιτυχίες παιδιά στα υπόλοιπα μαθήματά σας και καλές γιορτές!!!!

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Εγχειρίδιο Χρήστη Φάση 1: Καταχώρηση Ειδικοτήτων

Αντικειμενοστρεφής Προγραμματισμός

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

Τεχνολογία Πολιτισμικού Λογισμικού

Οδηγίες Χρήσης της εφαρμογής Class-Web

ΚΕΦΑΛΑΙΟ Web Services

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

ΠΡΟΧΩΡΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Χαρίδημος Κονδυλάκης Εισαγωγή

Εγχειρίδιο διαχείρισης χρηστών και λιστών διανομής για τον Υπεύθυνο Φορέα του Δικτύου "Σύζευξις" -1-

Document Scanning System Ιανουάριος, 2014

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Από τη UML στον Κώδικα. Μέρος Β

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων

ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ Α2Α

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Συνεργασίας. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

Οντοκεντρικός Προγραμματισμός

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Σύστημα Αναθέσεων. Σχεδιασμός Υποσυστημάτων

Transcript:

Μιχάλης Μασούρας Επιβλέπων Καθηγητής: Ιγνάτιος Δεληγιάννης

Η ανάπτυξη ενός αντικειμενοστρεφούς συστήματος λογισμικού, το οποίο θα διαχειρίζεται δεδομένα των βιογραφικών σημειωμάτων των υποψηφίων.

Δυνατότητα αποθήκευσης και επεξεργασίας στοιχείων Πολλαπλές επιλογές αναζήτησης και ταξινόμησης με διάφορα κριτήρια Υπολογισμός προϋπηρεσίας Δημιουργία και αποστολή κωδικού στο email ενός νέου χρήστη

UML Java Java Swing JDBC SQLite JavaMail API

Visual Paradigm NetBeans SQLite Administrator hmailserver

Διάγραμμα περίπτωσης χρήσης: Δείχνει τους χρήστες και τη σχέση τους με την εφαρμογή.

Υποψήφιος Καταχώρηση, επεξεργασία και αποθήκευση προσωπικών βιογραφικών στοιχείων Γραμματεία Εγγραφή υποψηφίων χρηστών Επεξεργασία πίνακα ωρών διδασκαλίας και επιθυμητών μαθημάτων

Επιτροπή Εμφάνιση, επεξεργασία και αποθήκευση βιογραφικών υποψηφίων Αναζήτηση, ταξινόμηση βιογραφικών υποψηφίων Διαγραφή βιογραφικών

Διαχειριστής Προσθήκη ή διαγραφή χρηστών Επεξεργασία πίνακα διαθέσιμων μαθημάτων Επιλογές email SMTP server

Περιέχει πληροφορίες του χρήστη που προσπαθεί να μπει στο σύστημα μέσω ενός παραθύρου εισαγωγής στο σύστημα (LoginDialog). String username String password int id int type

Type definitions USER_UNDEFINED = 0 USER_CANDIDATE = 1 USER_SECRETARY = 2 USER_COMMISSION = 3 USER_ADMINISTRATOR = 4

LoginDialog : Dialog που περιμένει εισαγωγή username και password και αναλόγως με τον τύπο του χρήστη ανοίγει το αντίστοιχο Frame CvEditFrame : παράθυρο επεξεργασίας βιογραφικού υποψηφίου SecretaryFrame: παράθυρο γραμματείας CommisionFrame: παράθυρο επιτροπής AdministratorFrame: παράθυρο διαχειριστή

Περιέχει όλες τις πληροφορίες για την περιγραφή ενός βιογραφικού. Αποτελεί σύνθεση από άλλες κλάσεις. int id PersonalData personaldata ArrayList<EducationData> educationlist ArrayList<PublicationData> publicationlist ArrayList<WorkExperienceData> workexperiencelist ArrayList<CompanyData> companylist

String name String surname java.util.date birthdate String email String address String city String phone

int id java.util.date datefrom java.util.date dateto String description

int id java.util.date datefrom java.util.date dateto String description

int id java.util.date date String description

int id java.util.date date String description

Γενικώς χρησιμοποιώ την διεπαφή προγραμματισμού εφαρμογών JDBC για τη σύνδεση και την αποστολή ερωτημάτων στην SQLite. Την κατασκεύη και αποστολή ερωτημάτων για τη συγκεκριμένη βάση την πραγματοποιεί η κλάση DiaxeirisiCvDB η οποία κληρονομεί από μια abstract class, την DBConnection. Η DBConnection αναλαμβάνει διάφορες γενικές διεργασίες όπως την επιλογή του συγκεκριμένου DBMS (SQLite) κατά τη σύνδεση και ορισμένες εντολές για το κλείσιμο Statement ή Resultset αντικειμένων.

Για γενικότερη αναφορά στα ονόματα πινάκων και στηλών έχω προετοιμάσει κάποια Strings στα οποία αναφέρομαι καθώς κατασκευάζω τα SQL queries. Π.χ. για τον πίνακα χρηστών: protected static final String USERS_TABLE_NAME = "Users"; protected static final String[] USERS_TABLE_COLUMN_NAMES = { "UserID", "Username", "Password", "Type" };

Παράδειγμα: String query = "CREATE TABLE " + USERS_TABLE_NAME + " (" + USERS_TABLE_COLUMN_NAMES[0] + " INTEGER PRIMARY KEY AUTOINCREMENT," + USERS_TABLE_COLUMN_NAMES[1] + " VARCHAR (20)," + USERS_TABLE_COLUMN_NAMES[2] + " VARCHAR (20)," + USERS_TABLE_COLUMN_NAMES[3] + " INTEGER )";

public boolean dosomethingtoatable(possible arguments) { boolean success = true; String query = null; try { if (conn!= null) { Statement stmt = conn.createstatement(); query =... // δημιουργούμε το query με τον παραπάνω τρόπο που περιγράψαμε stmt.executeupdate(query); close(stmt); } } catch (SQLException e) { System.out.println("Problem in doing something to the " + OUR_TABLE_NAME + " table\n" + e.getmessage()); if (!query.isempty()) System.out.println(query); success = false; } return success; }

User user = new User(); int userid =... // pirame to userid try { if (conn!= null) { Statement stmt = conn.createstatement(); ResultSet rslt = null; } query = "SELECT * FROM " + USERS_TABLE_NAME + " WHERE " + USERS_TABLE_COLUMN_NAMES[0] + "=" + userid; rslt = stmt.executequery(query); while (rslt.next()) { user.id = rslt.getint(users_table_column_names[0]); user.username = rslt.getstring(users_table_column_names[1]); user.type = rslt.getint(users_table_column_names[3]); } close(stmt); close(rslt); }

Περιλαμβάνει τα εξής βήματα Ενημέρωση μιας ArrayList με το σύνολο των βιογραφικών από τη βάση (μια φορά). Κάθε ερώτημα αναζήτησης διαγράφει από την ArrayList τα στοιχεία που δεν ταιριάζουν στα κριτήρια. Ανανέωση του Graphical User Interface (GUI) με τα υπολειπόμενα αποτελέσματα στην ArrayList.

Η ταξινόμηση ξεκινάει όταν ο χρήστης στο παράθυρο της επιτροπής πατήσει πάνω στο header μιας στήλης του πίνακα και εκτελεστεί το αντίστοιχο event. Από το event παίρνουμε τον αριθμό της στήλης και αναλόγως καλούμε την μέθοδο sort της java με στοιχεία από την ArrayList που θέλουμε να ταξινομήσουμε και ένα Comparator object όπου ορίζουμε τον τρόπο σύγκρισης μεταξύ δύο στοιχείων της λίστας. Ανανεώνουμε το GUI του πίνακα με την ανανεωμένη ArrayList.

Θεωρούμε πως μέρες προϋπηρεσίας είναι όλες οι μέρες της βδομάδας εκτός από Σάββατο και Κυριακή. Έχει δημιουργηθεί ειδική κλάση DateTools με διάφορα εργαλεία για τον υπολογισμό των εργάσιμων ημερών από μια αρχική ημερομηνία έως μια τελική. Για κάθε ξεχωριστή δήλωση προϋπηρεσίας μέσα σε ένα βιογραφικό καλείται η μέθοδος getworkingdays(java.util.date datefrom, java.util.date dateto) από την DateTools και επιστρέφεται το αποτέλεσμα το οποίο προστίθεται σε ένα συνολικό άθροισμα.

Επιλέχθηκε πιο αποδοτικός τρόπος για την εύρεση από ότι μια απλή ανάγνωση κάθε μέρας ξεχωριστά σε όλο το χρονικό διάστημα με την Java.utils.Date.getDay(). Μέσα στο δίαστημα χρόνου που ζητούνται οι μέρες, ξεκαθαρίζουμε από πού ξεκινάνε και τελειώνουν οι πλήρεις βδομάδες και με απλό υπολογισμό πέντε εργασίμων ανά βδομάδα βρίσκουμε κομμάτι του αποτελέσματος χωρίς να κάνουμε μεγάλο βρόγχο. Συμπληρώνουμε και τις υπόλοιπες εργάσιμες μέρες από τα δύο κομμάτια μη ολοκληρωμένων βδομαδών στην αρχή και στο τέλος του χρονικού διαστήματος.

Ο χρήστης δίνει το email του μαζί με τα υπόλοιπα στοιχεία στη γραμματεία και αυτή εισάγει τον χρήστη στο σύστημα. Εφόσον η εγγραφή έγινε επιτυχώς, ένα αυτοματοποιημένο σύστημα αποστολής email στέλνει τον δημιουργημένο κώδικο στην διεύθυνση του χρήστη. Για τον σκοπό αυτό χρησιμοποιούμε το JavaMail API.

Χρειάζονται τέσσερις πληροφορίες που τροφοδοτούνται στο API: host hostname sender sendername Δίνουμε τη δυνατότητα στον διαχειριστή της βάσης να αλλάξει αυτές τις τέσσερις πληροφορίες. Για τη δοκιμή του email API δημιουργήσαμε έναν local mail server με την εφαρμογή hmailserver.

Αρχικός Στόχος: η δημιουργία ενός συστήματος διαχείρισης βιογραφικών υποψηφίων μελών ΕΠ Λειτουργίες καταχώρησης και ενημέρωσης του βιογραφικού από τους υποψηφίους, προβολής και ταξινόμησης βιογραφικών από τη επιτροπή και δημιουργίας και αποστολής κωδικών από τη γραμματεία. Τελική Υλοποίηση: Υλοποιήθηκαν όλες οι λειτουργίες που τέθηκαν στον αρχικό στόχο της εφαρμογής, αφού έγινε αρχικά η ανάλυση και ο σχεδιασμός τους με αντικειμενοστραφείς μεθόδους (περιπτώσεις χρήσεις, διαγράμματα κλάσεων, διαγράμματα αλληλεπίδρασης κ.τ.λ.). Μελλοντικές επεκτάσεις και βελτιώσεις: Η ανάρτηση του συστήματος σε ιστοσελίδα Επιπλέον επιλογές αναζήτησης και ταξινόμησης κατά την προβολή των βιογραφικών, (π.χ. με βάση τις ώρες μη διαθεσιμότητας)