College Compass

College Compass

Advanced Programming

CN5004
  • Έτος 2 · Εξάμηνο 2
  • Αρχείο

Προχωρημένη Java: εφαρμογές με γραφικό περιβάλλον σε JavaFX, αρχεία, νήματα, δικτυακός προγραμματισμός και σύνδεση με βάση δεδομένων.

Εργασίες με προθεσμία

Εργασία

Ατομική Εργασία Επανεξέτασης 2025–26

Προθεσμία
Βαρύτητα
100%
Υποβολή
Moodle — ένα μόνο .zip αρχείο

Ανάπτυξη ενός συστήματος σε Java, με γραφικό περιβάλλον και μόνιμη αποθήκευση, σε ένα από 10 θέματα της επιλογής σας.

Εκφώνηση

Learning outcomes που εξετάζονται: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11.

Στις σελίδες 3-4 περιγράφονται 10 διαφορετικές εργασίες. Θα πρέπει να ολοκληρώσετε μία μόνο από αυτές. (Kατ επιλογήν σας)

εργασία σας περιγράφετε σε πολύ γενικές γραμμές. Είστε ελεύθεροι να αποφασίσετε τα ακριβή χαρακτηριστικά του συστήματος που θα αναπτύξετε. Προσέξετε τόσο τις λειτουργίες που θα εκτελεί το σύστημά σας όσο και τη διεπαφή με το χρήστη σας. Η εργασία παρέχει αρκετή ευελιξία για να ορίσετε/υλοποιήσετε αρχικά τα βασικά χαρακτηριστικά του συστήματος σας και στη συνέχεια να προσθέσετε ένα αριθμό από πιο πολύπλοκα χαρακτηριστικά.

Προσοχή

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

Παραδοτέα

  1. Προαιρετικό: Το πρόγραμμά σας σε μορφή εκτελέσιμου JAR αρχείου (δημιουργείται εύκολα από οποιοδήποτε εργαλείο χρησιμοποιείται για την ανάπτυξη). – Δεν επηρεάζει τη βαθμολογία σας

  2. Μια περιγραφή (2-3 σελίδες Α4) του συστήματος που έχετε υλοποιήσει. Αυτή θα πρέπει να περιλαμβάνει:

    • Συνοπτικές και λογικές οδηγίες χρήσης για την εφαρμογή (οι οποίες θα λειτουργήσουν και σαν οδηγός για τον βαθμολογητή της εργασίας)
    • Επεξηγήσεις των λειτουργιών που μπορεί να εκτελέσει το σύστημά σας
    • Επεξηγήσεις του πως λύσατε αλγοριθμικά συγκεκριμένα προβλήματα που παρουσιάστηκαν
    • Μερικά screenshots της εφαρμογής (δεν υπολογίζονται στις σελίδες της περιγραφής σας.
  3. a) Παραδίδεται το γραφικό περιβάλλον της εφαρμογής σε μορφή project έτοιμου να ανοίξει και να εκτελεστεί από το περιβάλλον που το δημιουργήσατε.

    b) Παραδίδεται η λειτουργία αποθήκευσης των δεδομένων της εφαρμογής σε μορφή project έτοιμου να ανοίξει και να εκτελεστεί από το περιβάλλον που το δημιουργήσατε.

    Παραδίδεται τo σύνολο του κώδικά σας (κατάλληλα μορφοποιημένος και σχολιασμένος) σε μορφή project έτοιμου να ανοίξει και να εκτελεστεί από το περιβάλλον που το δημιουργήσατε. Σε περίπτωση που αυτό δεν συμβαίνει η εργασία δεν θα βαθμολογηθεί.

    Κάθε παραδοτέο περιλαμβάνει και το περιεχόμενο του προηγούμενου. Τα ενδιάμεσα παραδοτέα είναι υποχρεωτικά.

  4. Screencasting της εφαρμογής. Θα καταγράψετε την οθόνη σας όσο α) δείχνετε τον τρόπο λειτουργίας και β) εξηγώντας την εφαρμογή σας. Για να είναι πλήρης φροντίστε να δείξετε όλα τα σημεία που ζητούνται από το marking scheme. Διάρκεια βίντεο 1-1.5 λεπτά.

Σχήμα Βαθμολόγησης

Διαβάστε προσεκτικά το σχήμα βαθμολόγησης (που δίνεται σε ξεχωριστό αρχείο στο moodle). Θα σας βοηθήσει καταλάβετε πως θα κατανεμηθούν οι βαθμοί της εργασίας για να έχετε το καλύτερο δυνατό αποτέλεσμα. Ισχύουν οι κανόνες για καθυστερημένη παράδοση.

ΠΡΟΣΟΧΗ: παρακάτω δίνεται μόνο η γενική ιδέα της εργασίας σας και οι πιο βασικές απαιτήσεις της.

Εργασία 1

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

Εργασία 2

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

Εργασία 3

Υλοποιήστε ένα σύστημα που χρησιμοποιείται από μια εταιρεία ενοικίασης αυτοκινήτων. Το σύστημα διαχειρίζεται τις πληροφορίες των αυτοκινήτων της εταιρείας και δεσμεύει ένα αυτοκίνητο σε ένα συγκεκριμένο πελάτη σε συγκεκριμένες ημερομηνίες. Παράγει λεπτομερείς αναφορές για κάθε αυτοκίνητο και τις ημερομηνίες που είναι κλεισμένο. Επιπλέον μπορεί να δώσει την τρέχουσα κατάσταση του αυτοκινήτου (διαθέσιμο ή ποιος πελάτης το έχει και πότε το επιστρέφει).

Εργασία 4

Υλοποιήστε ένα σύστημα που χρησιμοποιεί μια εταιρεία για να καταγράψει τις αγορές κάποιων προϊόντων. Μια αγορά ξεκινά με ένα δελτίο παραγγελίας που στέλνεται στον έμπορο. Στη συνέχεια ο πελάτης παίρνει μια απόδειξη από τον έμπορο και ακολουθεί η πληρωμή και η παράδοση του προϊόντος. Το σύστημα θα πρέπει να καταγράφει τα στοιχεία του εμπόρου καθώς τις πληροφορίες για κάθε στάδιο της συναλλαγής. Θα πρέπει να παράγονται τουλάχιστον οι αναφορές που περιγράφονται.

Εργασία 5

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

Εργασία 6

Υλοποιήστε ένα σύστημα που χρησιμοποιείται από ένα πάρκινγκ αυτοκινήτων και καταγράφει όλες τις πληροφορίες για τα αυτοκίνητα που είναι παρκαρισμένα σε αυτό. Η είσοδος επιτρέπεται μόνο σε εγγεγραμμένα αυτοκίνητα οπότε το σύστημα θα πρέπει κρατάει μια λίστα τόσο από τα αυτοκίνητα αυτά (καθώς και τα ονόματα των ιδιοκτητών τους) όσο και από αυτά που είναι πραγματικά παρκαρισμένα στο πάρκινγκ κάθε στιγμή. Θα πρέπει επίσης να μπορεί να εμφανίζει αν το πάρκινγκ είναι πλήρως γεμάτο ή όχι καθώς λεπτομερείς αναφορές.

Εργασία 7

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

Εργασία 8

Υλοποιήστε ένα σύστημα που διαχειρίζεται μια ποδοσφαιρική κατηγορία (ή ένα οποιοδήποτε άλλο σπορ της επιλογής σας – θα μπορούσε να είναι ακόμα και ένα παιχνίδι ερωτήσεων/απαντήσεων). Το σύστημα καταγράφει τις πληροφορίες των ομάδων συμπεριλαμβανομένων και των αποτελεσμάτων των παιχνιδιών που έπαιξαν (μπορεί να είναι ένα από σύστημα πόντων που καταγράφονται μετά από κάθε αγώνα για τη συγκεκριμένη ομάδα). Το σύστημα εκτός από άλλες λεπτομερείς αναφορές παράγει και έναν πίνακα με την κατάταξη των ομάδων.

Εργασία 9

Υλοποιήστε ένα σύστημα που καταγράφει κλήσεις προς 3 διαφορετικές υπηρεσίες έκτακτης ανάγκης (π.χ, πυροσβεστική, αστυνομία, ασθενοφόρα, κλπ.). Το σύστημα καταγράφει τις πληροφορίες αυτού που καλεί καθώς, μια σύντομη περιγραφή της κατάστασης καθώς και σε ποια υπηρεσία απευθύνεται (μπορεί να είναι και πάνω από μία). Το σύστημα εκτός από άλλες λεπτομερείς αναφορές παράγει και μια ταξινομημένη λίστα για κάθε υπηρεσία. Οι καταστάσεις έκτακτης ανάγκης αφαιρούνται από τη λίστα όταν ολοκληρώνεται η διαχείρισή τους από τη υπηρεσία.

Εργασία 10

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

Ασκήσεις εξάσκησης

Άσκηση

Ιδέες για καλοκαιρινά projects

Προθεσμία
Χωρίς προθεσμία — για εξάσκηση

Οκτώ ιδέες για προγράμματα εξάσκησης, ιδανικά με γραφικό περιβάλλον.

Εκφώνηση

Φτιάξτε προγράμματα (ιδανικά και με γραφικό περιβάλλον) για τα παρακάτω:

  1. παιχνίδι Πέτρα-μολύβι-ψαλίδι-χαρτί
  2. calculator με γραφικό κλπ.
  3. μια προσομοίωση του πώς δουλεύει ένα ATM μιας τράπεζας
  4. ένα server που να σου δίνει ένα RestFull API που θα φτιάξεις εσύ.
  5. speech recognition δηλαδή να δείτε βιβλιοθήκες για AI κλπ. Αυτό ίσως αρχικά να το επιχειρούσατε να το κάνετε στη python πρώτα.
  6. μια εφαρμογή για face detection χρησιμοποιώντας τη βιβλιοθήκη τησ OperCV.
  7. OpenCV να πειραματιστείτε με image tracking και object detection.
  8. Μετά από όλα τα παραπάνω αξίζει να δε το Java Spring Framework ιδίως αν θέλετε να δουλέψετε με Java.

Επισκόπηση

Το Advanced Programming συνεχίζει τον προγραμματισμό σε Java από εκεί που τον άφησαν τα μαθήματα του 1ου έτους. Το βάρος πέφτει σε εφαρμογές που μοιάζουν με πραγματικές: έχουν γραφικό περιβάλλον, κρατούν τα δεδομένα τους μόνιμα και κάνουν πολλά πράγματα ταυτόχρονα.

Το μάθημα ξεκινά με το JavaFX και το FXML για το γραφικό περιβάλλον. Ακολουθούν η διαχείριση αρχείων και οι ροές χαρακτήρων, ο δικτυακός προγραμματισμός με sockets, το serialization και η σύνδεση με βάση δεδομένων MySQL. Το εξάμηνο κλείνει με τα νήματα: πώς δημιουργούνται, ο κύκλος ζωής και οι προτεραιότητές τους, και πώς συγχρονίζονται. Κάθε ενότητα έχει στο Moodle ένα σύντομο βίντεο και παραδείγματα κώδικα.

Τι θα μάθουμε

  • Να φτιάχνεις εφαρμογές με γραφικό περιβάλλον σε JavaFX, και με FXML για τον σχεδιασμό των οθονών.
  • Να αποθηκεύεις και να διαβάζεις δεδομένα από αρχεία: properties, CSV, ροές χαρακτήρων και byte.
  • Να αποθηκεύεις ολόκληρα αντικείμενα με serialization και να τα επαναφέρεις.
  • Να συνδέεις μια εφαρμογή Java με βάση δεδομένων MySQL.
  • Να γράφεις προγράμματα που επικοινωνούν μέσω δικτύου με sockets και WebSockets.
  • Να δημιουργείς νήματα (threads), να τα συγχρονίζεις και να αποφεύγεις τις συνθήκες ανταγωνισμού (race conditions).