Κων/νου Στυλιάδη. Visual Basic στην Access Κλήρωση Εξεταστών Υποψηφίων Οδηγών

Σχετικά έγγραφα
Υπολογιστικά Συστήματα

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

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ-ΙΟΥΝΙΟΥ 2015

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Άσκηση 1 (α) Να διατυπώσετε την πιο κάτω λογική έκφραση στη Visual Basic κάνοντας χρήση μεταβλητών:

ΛΥΚΕΙΟ ΠΑΡΑΛΙΜΝΙΟΥ ΣΧΟΛΙΚΗ ΧΡΟΝΙΑ: ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ-ΙΟΥΝΙΟΥ ΜΑΘΗΜΑ: Πληροφορική Κατεύθυνσης ΗΜΕΡΟΜΗΝΙΑ: 10/06/2014

ΛΥΚΕΙΟ ΑΓΙΑΣ ΦΥΛΑΞΕΩΣ ΣΧΟΛΙΚΗ ΧΡΟΝΙΑ ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ. Ονοµατεπώνυµο :... Τµήµα :... Αριθµός :...

4. Επιλογή και Επανάληψη

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑΤΟΣ ασική Πληροφορική 1 Θεωρία 5 ου ΕΞΑΜΗΝΟΥ ΜΑΘΗΜΑ 1 ο Λάζαρος Σ. Ηλιάδης Αναπληρωτής Καθηγητής ΠΘ

ΛΥΚΕΙΟ ΠΑΛΟΥΡΙΩΤΙΣΣΑΣ ΣΧΟΛΙΚΟ ΕΤΟΣ ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΙΟΥ-ΙΟΥΝΙΟΥ 2014 ΟΝΟΜΑ:... ΤΜΗΜΑ:... ΑΡ.:...

Υπολογιστικά Συστήματα

Συναρτήσεις στη Visual Basic 6.0

5. MΑΚΡΟΕΝΤΟΛΕΣ. Η δηµιουργία Μακροεντολής γίνεται µε δύο τρόπους :

ΛΥΚΕΙΟ ΑΓΙΟΥ ΝΕΟΦΥΤΟΥ ΣΧΟΛΙΚΗ ΧΡΟΝΙΑ ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΙΟΥΝΙΟΥ 2011

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: Υλοποίηση προγράµµατος σε Visual Basic µε σκοπό τη δηµιουργία του προγράµµατος εξεταστικής του Τ.Ε.Ι.

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

ΔΟΜΗΜΕΝΟΣ ΟΠΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΠAΡΑΘΥΡΙΚΟ ΠΕΡΙΒΑΛΛΟΝ με τη Γλώσσα Προγραμματισμού VISUAL BASIC (1 ο ΕΠΙΠΕΔΟ)

Οδηγίες χρήσης ιστοσελίδας VOLVO

Συνεργείο Αυτοκινήτων

Υπολογιστικά Συστήματα

Προγραμματισμός και Εφαρμογές Υπολογιστών

If timi >20 Then Print ok Else Print ng EndIf. a = IIF(a>=20, 0, a)

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

Μονοδιάστατοι Πίνακες

ΛΥΚΕΙΟ ΠΑΛΟΥΡΙΩΤΙΣΣΑΣ ΣΧΟΛΙΚΟ ΕΤΟΣ ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΙΟΥ-ΙΟΥΝΙΟΥ 2015 ΟΝΟΜΑ:... ΤΜΗΜΑ:... ΑΡ.:...

Σύντοµος Οδηγός της Qbasic. Πέρδος Αθανάσιος Καθηγητής Πληροφορικής

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ(Visual Basic)

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται

Κεφάλαιο 5ο: Εντολές Επανάληψης

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

Εντολή If-Then-Else Σκοπός Μαθήματος

Προγραμματισμός και Εφαρμογές Υπολογιστών

ΛΥΚΕΙΟ ΠΑΡΑΛΙΜΝΙΟΥ ΣΧΟΛΙΚΗ ΧΡΟΝΙΑ: ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ-ΙΟΥΝΙΟΥ ΜΑΘΗΜΑ: Πληροφορική Κατεύθυνσης ΗΜΕΡΟΜΗΝΙΑ: 10/06/2013

Είσοδος Έξοδος - Μεταβλητές

ΛΥΚΕΙΟ ΠΑΛΟΥΡΙΩΤΙΣΣΑΣ ΣΧΟΛΙΚΟ ΕΤΟΣ ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΙΟΥ-ΙΟΥΝΙΟΥ 2013 ΒΑΘΜΟΣ: ΟΝΟΜΑ:... ΤΜΗΜΑ:... ΑΡ.:...

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

Πίνακας Περιεχομένων. 1. Locals Window & BreakPoints

Γραπτές εξετάσεις στο μάθημα: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Θ) Εισηγητής: Γεωργίου Χρήστος ΘΕΜΑΤΑ & ΑΠΑΝΤΗΣΕΙΣ. Β. Χαρακτήρας(Αλφαριθμητικά)

IMPLICIT NONE INTEGER :: a, b, c

A2. Να γράψετε για κάθε περίπτωση τον αριθμό της πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ

Προγραμματισμός και Εφαρμογές Υπολογιστών

Υπολογισμός - Εντολές Επανάληψης

Αποτελέσματα προόδου

1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομέας: Ηλεκτρονικής, Ηλεκτρολογίας και Αυτοματισμού Εκπαιδευτικοί: Μπουλταδάκης Στέλιος Μαυρίδης Κώστας

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

ΑΠΑΝΤΗΣΕΙΣ. α- Σωστό β- Σωστό γ- Λάθος δ- Λάθος ε- Σωστό στ- Σωστό

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Τα αντικείμενα ή Χειριστήρια και οι βασικές ιδιότητες τους (properties)

ΠΑΡΑΡΤΗΜΑΤΑ. ΠΑΡΑΡΤΗΜΑ 1 - ΕΙ ΙΚΑ ΜΑΘΗΜΑΤΑ 1 ης ΕΣΜΗΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Τοπικές vs Καθολικές Μεταβλητές ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΥ ΕΞΑΜΗΝΟ : Α. ΥΠΕΥΘΥΝΟΣ ΜΑΘΗΜΑΤΟΣ : Μάγια Σατρατζέµη

Αναλυτικός Πίνακας Περιεχομένων

SC : Αλλαγή είδους (Sales Change)- Αριθµός Πεδίων 6.

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Κων/νου Στυλιάδη. Εφαρµογή Video Club στην Access

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

ηµιουργία Β.. ανειστική Βιβλιοθήκη Μάθηµα 5 Ορισµός σχέσεων - Σύνδεση πινάκων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ Infocarina Net I57 MIRCA ARCADIA NET PLUS Infocarina NET Plus ΓΙΑ ΣΥΝ ΕΣΗ ΜΕ ΤΗΝ Γ.Γ.Π.Σ.

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

1. Καταχωρεί σ ένα πίνακα ΠΟΛΕΙΣ[10] τις 10 πόλεις της Ελλάδας.

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

ιαφάνειες παρουσίασης #4

ΣΗΜΕΙΩΣΕΙΣ ΓΙΑ ΤΗ VISUAL BASIC Γ ΓΥΜΝΑΣΙΟΥ

Μονάδες 4. β. x=20 και y=10

Πλήρης Διαχείριση Αδειών - Βιβλίο Αδειών - Μαζικές ενέργειες

Αρχή ή τέλος ή κοµβικό σηµείο. Λειτουργία εισόδου / εξόδου. Έλεγχος. Πράξεις / ενέργειες. Βρόχος R7 φορές

Κων/νου Στυλιάδη Χρήστου Ιωάννου. Εφαρµογή Αποθήκης σε Pascal

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΟΙΚΗΣΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ

15.1. προσδοκώμενα αποτελέσματα

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

Πώς εκτυπώνουμε μία λίστα από εγγραφές μίας Access database

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ ÈÅÌÅËÉÏ

Τεχνικές Προγραμματισμού και Χρήση Λογισμικού Η/Υ στις Κατασκευές

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

ΕΠΕΝΔΥΤΕΣ ΣΤΑ ΠΑΡΑΓΩΓΑ ΑΠΟΣΤΟΛΗ ΣΤΟΙΧΕΙΩΝ ΕΠΕΝΔΥΤΩΝ ΣΤΗΝ ΕΧΑΕ ΓΙΑ ΕΝΕΡΓΟΠΟΙΗΣΗ ΤΟΥΣ ΣΤΑ ΠΑΡΑΓΩΓΑ

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2012 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

2. β. Συνθήκη ή επιλογή. 4. δ. Υποπρόγραμμα. 5. ε. ιαδικασία εισόδου ή εξόδου

ΠΕΡΙΕΧΟΜΕΝΑ. Εικονίδια ιαχείρισης Φορολογικών ηλώσεων. ηµιουργία Φορολογούµενου. ηµιουργία και υπολογισµός του εντύπου ΕΣΠ

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

ιαφάνειες παρουσίασης #4

Υπολογιστικά Συστήματα

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

ΜICROSOFT VISUAL STUDIO Eργ 1: Ανάπτυξη απλής εφαρµογής: Solutions, Projects, GUI, Events, Debugging. Εισαγωγή

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Transcript:

Προγραµµατισµός µε Visual Basic στην Access Κλήρωση Εξεταστών Υποψηφίων Οδηγών Φλώρινα, Ιανουάριος 2002

Να γίνει η παρακάτω εφαρµογή στην Access : Να δηµιουργηθεί µια βάση δεδοµένων µε όνοµα Exams.mdb, που θα περιέχει τους εξής πίνακες (tables) : Έναν πίνακα εξεταστών κατηγορίας Α µε όνοµα pinakas_a, µε τα εξής πεδία και µε πεδίο κλειδί το code : Όνοµα Πεδίου Περιγραφή Τύπος Μέγεθος code κωδικός υπαλλήλου Ν onoma ονοµατεπώνυµο υπαλλήλου C 30 fores πόσες φορές έχει πάει Ν switch διακόπτης Ν Έναν πίνακα εξεταστών κατηγορίας Β µε όνοµα pinakas_b, µε τα εξής πεδία και µε πεδίο κλειδί το code : Όνοµα Πεδίου Περιγραφή Τύπος Μέγεθος code κωδικός υπαλλήλου Ν onoma ονοµατεπώνυµο υπαλλήλου C 30 fores πόσες φορές έχει πάει Ν switch διακόπτης Ν Έναν πίνακα αποτελεσµάτων µε όνοµα results, µε τα εξής πεδία : Όνοµα Πεδίου Περιγραφή Τύπος Μέγεθος category_a ονοµ/πώνυµο υπαλλήλου κατ.α C 30 category_b ονοµ/πώνυµο υπαλλήλου κατ.β C 30 Οι τιµές που µπορούν να πάρουν τα πεδία των πινάκων pinakas_a και pinakas_b είναι οι εξής : code, ο κωδικός του υπαλλήλου, µε τιµές που να ξεκινούν από το 1 και να αυξάνουν υποχρεωτικά κατά 1. onoma, το επώνυµο και το όνοµα του υπαλλήλου µαζί. fores, πόσες φορές έχει πάρει µέρος στις εξετάσεις τον τρέχοντα µήνα ο υπάλληλος. switch, τιµή 1 που σηµαίνει ότι ο υπάλληλος δεν έχει κώλυµα να συµµετάσχει στις εξετάσεις και τιµή 0 που σηµαίνει ότι ο υπάλληλος απουσιάζει ή για κάποιον άλλον λόγο δεν µπορεί να συµµετάσχει στις εξετάσεις. Για τον πίνακα results θα πρέπει να έχουµε δηµιουργήσει 20 κενές εγγραφές πριν ξεκινήσει η εφαρµογή. Ο πίνακας αυτός θα περιέχει τα ονόµατα των υπαλλήλων που θα κληρωθούν να πάρουν µέρος στις εξετάσεις και θα µηδενίζεται κάθε φορά πριν από την κλήρωση. 2

Να καταχωρηθούν τουλάχιστον 30 εγγραφές και για τους δύο πίνακες των κατηγοριών Α και Β και να δηµιουργηθεί µια φόρµα µε όνοµα Κλήρωση Εξετάσεων, που θα περιέχει τα εξής πλήκτρα εντολής (command buttons) : Ένα πλήκτρο εντολής µε ετικέτα Κλήρωση Ονοµάτων και όνοµα draw, το οποίο θα καλεί µια λειτουργική µονάδα (πρόγραµµα σε Visual Basic) που θα κληρώνει και από τις δύο κατηγορίες, Α και Β, όσα ονόµατα τακτικών και αναπληρωµατικών υπαλλήλων ζητηθούν. Ένα πλήκτρο εντολής µε ετικέτα Μηδενισµός Αποτελεσµάτων Κλήρωσης και όνοµα initialize, το οποίο θα καλεί µια λειτουργική µονάδα που θα δίνει αρχικές τιµές στα πεδία fores (0) και switch (1) και των δύο κατηγοριών από τους αντίστοιχους πίνακες. Θα πρέπει να ζητηθεί έ- νας κωδικός για να µπορέσει να γίνει ο µηδενισµός των δύο πινάκων. Ο µηδενισµός αυτός θα γίνεται στην αρχή κάθε µήνα. Ένα πλήκτρο εντολής µε ετικέτα Εκτύπωση Αποτελεσµάτων Κλήρωσης και όνοµα print_results, το οποίο θα εκτυπώνει τα ονόµατα που κληρώθηκαν και από τις δύο κατηγορίες. Ένα πλήκτρο εντολής µε ετικέτα Εκτύπωση Στοιχείων Υπαλλήλων Κατηγορίας Α και όνοµα print_pinakas_a, το οποίο θα εκτυπώνει όλα τα στοιχεία των υπαλλήλων της κατηγορίας Α. Ένα πλήκτρο εντολής µε ετικέτα Εκτύπωση Στοιχείων Υπαλλήλων Κατηγορίας Β και όνοµα print_pinakas_b, το οποίο θα εκτυπώνει όλα τα στοιχεία των υπαλλήλων της κατηγορίας Β. Ένα πλήκτρο εντολής µε ετικέτα Έξοδος και όνοµα exit, το οποίο θα τερµατίζει την εφαρµογή. 3

Η εφαρµογή δουλεύει ως εξής : Για τη διενέργεια των εξετάσεων οδήγησης (πορείας) των υποψηφίων οδηγών αυτοκινήτου κατηγορίας διπλώµατος Β, δηµιουργούνται επιτροπές από υπαλλήλους του Υπουργείου Μεταφορών-Επικοινωνιών. Οι εξετάσεις αυτές γίνονται σε καθηµερινή βάση και ο αριθµός των επιτροπών κυµαίνεται από 8 έως 12 το πολύ κάθε µέρα. Σε κάθε επιτροπή συµµετέχει υποχρεωτικά ένας υπάλληλος από την Κατηγορία Α και ένας υπάλληλος από την Κατηγορία Β. Η επιλογή των υ- παλλήλων γίνεται µε κλήρωση. Κάθε υπάλληλος δικαιούται να συµµετάσχει µέχρι 3 φορές τον µήνα στις εξετάσεις και µόνο όταν έχουν συµµετάσχει όλοι οι υπάλληλοι από 3 φορές µπορεί να συµµετάσχει και περισσότερες. Αυτό σηµαίνει ότι όταν ένας υπάλληλος έχει συµπληρώσει 3 συµµετοχές στις εξετάσεις, βγαίνει εκτός κλήρωσης και συµµετέχει ξανά όταν έχουν συµπληρώσει όλοι οι υπάλληλοι από 3 φορές. Αν κάποιος υπάλληλος απουσιάζει κάποια µέρα ή έχει κάποιο άλλο κώλυµα, βγαίνει εκτός κλήρωσης για την ηµέρα εκείνη. Επειδή υπάρχει το ενδεχόµενο να παρουσιασθεί κώλυµα για κάποιον υπάλληλο ακόµη και αφού έχει κληρωθεί σε κάποια επιτροπή, πρέπει εκτός από τα ονόµατα των τακτικών επιτροπών να κληρώνονται καθηµερινά και κάποια ονόµατα για αναπληρωµατικές επιτροπές. Οι υπάλληλοι που θα κληρωθούν στις αναπληρωµατικές επιτροπές θα συµµετάσχουν στις εξετάσεις µε τη σειρά που κληρώθηκαν και µόνο εφόσον αποκλειστεί κάποιος από τις τακτικές επιτροπές. Στην περίπτωση αυτή, θα αφαιρεθεί η τιµή 1 από το πεδίο fores του υπαλλήλου που κληρώθηκε στις τακτικές επιτροπές αλλά αδυνατεί να συµµετάσχει στις εξετάσεις και θα αυξηθεί κατά 1 το πεδίο fores του υπαλλήλου που κληρώθηκε στις αναπληρω- µατικές επιτροπές αλλά συµµετέχει τελικά στις εξετάσεις. Η τροποποίηση αυτή θα γίνεται µε το χέρι και όχι µε κώδικα προγράµµατος. 4

Κάθε φορά που θα κάνουµε κλικ στο πλήκτρο εντολής µε ετικέτα Κλήρωση Ονοµάτων, θα γίνονται οι εξής εργασίες : Για καθένα από τους πίνακες των δύο Κατηγοριών Α και Β θα βρίσκουµε το πλήθος των εγγραφών (synolo_a και synolo_b), το πλήθος των υπαλλήλων που δεν έχουν κώλυµα συµµετοχής στις εξετάσεις (plithos_a και plithos_b) καθώς και το πλήθος των υπαλλήλων που έ- χουν ήδη συµµετάσχει περισσότερες από 3 φορές (>=3) στις εξετάσεις αλλά και που δεν έχουν κώλυµα συµµετοχής στις εξετάσεις (plithos3_a και plithos3_b). Θα µηδενίζονται µε κενούς χαρακτήρες και τα δύο πεδία όλων των εγγραφών του πίνακα αποτελεσµάτων results. Θα ζητείται να καταχωρηθούν µε δύο πλαίσια διαλόγου InputBox() ο αριθµός των τακτικών επιτροπών k καθώς και ο αριθµός των αναπληρωµατικών επιτροπών ka. Ενδεικτικές τιµές, για παράδειγµα, είναι οι 10 και 3. Στη συνέχεια, το πρόγραµµα θα διαπιστώνει αν επαρκούν οι διαθέσι- µοι υπάλληλοι για να συγκροτήσουν τις τακτικές και τις αναπληρωµατικές επιτροπές των εξετάσεων. Στην περίπτωση αυτή θα τίθεται η τιµή 0 στις µεταβλητές diktis_a και diktis_b αντίστοιχα, ενώ στην περίπτωση που οι διαθέσιµοι υπάλληλοι που δεν έχουν συµπληρώσει 3 φορές συµµετοχής δεν επαρκούν για να συγκροτήσουν τις τακτικές και τις αναπληρωµατικές επιτροπές των εξετάσεων, θα τίθεται η τιµή 1 στις µεταβλητές diktis_a και diktis_b αντίστοιχα. Θα µηδενίζονται όλα τα στοιχεία ενός πίνακα (array) µε όνοµα flag. Ο πίνακας αυτός θα έχει τόσα στοιχεία όσο είναι το σύνολο των υπαλλήλων σε κάθε κατηγορία. Κάθε στοιχείο του πίνακα αυτού θα έχει την τιµή 0 αν ο υπάλληλος που ο κωδικός του είναι ίδιος µε τη θέση του πίνακα δεν έχει κληρωθεί να συµµετάσχει σε µια επιτροπή και την τιµή 1 αν ο υπάλληλος που ο κωδικός του είναι ίδιος µε τη θέση του πίνακα έχει κληρωθεί να συµµετάσχει σε µια επιτροπή. Στη συνέχεια, θα γίνεται η κλήρωση των τακτικών ονοµάτων από τον πίνακα Κατηγορίας Α, ως εξής : o Δηµιουργούµε έναν βρόχο (loop) που θα εκτελεσθεί τόσες φορές όσος είναι ο αριθµός των τακτικών επιτροπών k. o Ξεκινάµε από την πρώτη εγγραφή του πίνακα Α. o Δηµιουργούµε έναν τυχαίο ακέραιο αριθµό a στο διάστηµα 1 έως synolo_a µε τις συναρτήσεις Randomize και Rnd(). o Σαρώνουµε όλες τις εγγραφές του πίνακα Α και επιλέγουµε έ- ναν υπάλληλο για να συµµετάσχει σε µια τακτική επιτροπή αν ισχύουν οι εξής προϋποθέσεις : Ο κωδικός του (code) είναι ίσος µε τον τυχαίο αριθµό a που κληρώθηκε. ((Έχει πάει λιγότερες από 3 φορές και (And) η τιµή της µεταβλητής diktis_a είναι 0) ή (Or) (η τιµή της µεταβλητής diktis_a είναι 1 ανεξάρτητα από το πόσες φορές έχει πάει)) και (And) δεν έχει ήδη κληρωθεί για να συµµετά- 5

σχει σε κάποια επιτροπή (flag(i)=0) και (And) δεν έχει κώλυµα συµµετοχής (switch=1). Στην περίπτωση που ο κληρωθείς υπάλληλος επιλεγεί για να συµµετάσχει στις εξετάσεις, αυξάνουµε το πεδίο fores της εγγραφής του κατά 1, δίνουµε την τιµή 1 στον πίνακα (array) flag() στην αντίστοιχη θέση i, αυξάνουµε τον µετρητή i των υπαλλήλων που έχουν κληρωθεί να πάρουν µέρος στις τακτικές επιτροπές, προσθέτουµε τον αύξοντα αριθµό της επιτροπής i και το όνοµα του υπαλλήλου σε µια µεταβλητή τύπου string µε όνοµα epitropi, καταχωρούµε τον αύξοντα αριθµό της επιτροπής i και το όνοµα του υπαλλήλου στο πεδίο category_a του πίνακα results και τέλος πηγαίνουµε στην επόµενη εγγραφή του πίνακα results. o Όταν τελειώσουµε µε την κλήρωση των ονοµάτων της κατηγορίας Α για όλες τις επιτροπές που ζητήθηκαν (k), εµφανίζουµε ένα µήνυµα MsgBox µε τον τίτλο Κλήρωση Α της : 10/02/2002 και κείµενο τα ονόµατα των υπαλλήλων του πίνακα Α που κληρώθηκαν για να συµµετάσχουν στις εξετάσεις. Στη συνέχεια, µε εντελώς παρόµοιο τρόπο, θα γίνει η κλήρωση των α- ναπληρωµατικών ονοµάτων από τον πίνακα Κατηγορίας Α. Η µόνη διαφορά είναι ότι δεν θα ενηµερώνεται το πεδίο fores του πίνακα pinakas_a. Στη συνέχεια, µε εντελώς παρόµοιο τρόπο, θα γίνει η κλήρωση των τακτικών και των αναπληρωµατικών ονοµάτων από τον πίνακα Κατηγορίας Β. 6

Private Sub draw_click() η διαδικασία για την κλήρωση των ονοµάτων δήλωση των µεταβλητών που θα χρησιµοποιήσουµε Dim k%, ka%, i%, j, a As Integer Dim synolo_a, synolo_b As Integer Dim plithos_a, plithos_b As Integer Dim plithos3_a, plithos3_b As Integer Dim diktis_a, diktis_b As Integer Dim flag(80) As Integer Dim epitr As String Dim an_epitr As String δήλωση µιας µεταβλητής βάσης δεδοµένων και τριών µεταβλητών πινάκων Dim db As DATABASE Dim rsa As Recordset Dim rsb As Recordset Dim rsr As Recordset ορισµός της τρέχουσας βάσης δεδοµένων και των τριών πινάκων που θα χρησιµοποιήσουµε Set db = CurrentDb() Set rsa = db.openrecordset("pinakas_a") Set rsb = db.openrecordset("pinakas_b") Set rsr = db.openrecordset("results") εύρεση του πλήθους των εγγραφών για τον πίνακα Α σύνολο των εγγραφών (υπαλλήλων) του πίνακα Α synolo_a = 0 πλήθος των υπαλλήλων που µπορούν να συµµετάσχουν plithos_a = 0 πλήθος των υπαλλήλων που µπορούν να συµµετάσχουν αλλά και έχουν ήδη συµπληρώσει 3 φορές συµµετοχής plithos3_a = 0 πηγαίνουµε στην πρώτη εγγραφή του πίνακα Α rsa.movefirst βρόχος µέχρι να τελειώσουν οι εγγραφές του πίνακα Α Do Until rsa.eof() synolo_a = synolo_a + 1 If rsa![switch] = 1 Then plithos_a = plithos_a + 1 If rsa![switch] = 1 And rsa![fores] >= 3 Then plithos3_a = plithos3_a + 1 πηγαίνουµε στην επόµενη εγγραφή του πίνακα Α rsa.movenext 7

εύρεση του πλήθους των εγγραφών για τον πίνακα Β σύνολο των εγγραφών (υπαλλήλων) του πίνακα Β synolo_b = 0 πλήθος των υπαλλήλων που µπορούν να συµµετάσχουν plithos_b = 0 πλήθος των υπαλλήλων που µπορούν να συµµετάσχουν αλλά και έχουν ήδη συµπληρώσει 3 φορές συµµετοχής plithos3_b = 0 πηγαίνουµε στην πρώτη εγγραφή του πίνακα Β rsb.movefirst βρόχος µέχρι να τελειώσουν οι εγγραφές του πίνακα Β Do Until rsb.eof() synolo_b = synolo_b + 1 If rsb![switch] = 1 Then plithos_b = plithos_b + 1 If rsb![switch] = 1 And rsb![fores] >= 3 Then plithos3_b = plithos3_b + 1 πηγαίνουµε στην επόµενη εγγραφή του πίνακα Β rsb.movenext µηδενισµός του πίνακα results πηγαίνουµε στην πρώτη εγγραφή του πίνακα results rsr.movefirst βρόχος µέχρι να τελειώσουν οι εγγραφές του πίνακα results Do Until rsr.eof() επεξεργασία της εγγραφής rsr![category_a] = " " rsr![category_b] = " " rsr.update ενηµέρωση της εγγραφής πηγαίνουµε στην επόµενη εγγραφή του πίνακα results καταχώρηση του αριθµού των µελών των τακτικών και των αναπληρωµατικών επιτροπών σε πλαίσια διαλόγου k% = InputBox(" Αριθµός Επιτροπών της : " & Date) ka% = InputBox(" Αριθµός Αναπλη/κών Επιτροπών της : " & Date) µηδενισµός του µετρητή των υπαλλήλων που θα κληρωθούν i% = 0 διαπίστωση αν έχουν πάει όλοι από 3 φορές για τον πίνακα Α diktis_a = 0 If plithos_a plithos3_a k% ka% < 2 Then diktis_a = 1 έχουν πάει όλοι από 3 φορές 8

διαπίστωση αν έχουν πάει όλοι από 3 φορές για τον πίνακα Β diktis_b = 0 If plithos_b plithos3_b k% ka% < 2 Then diktis_b = 1 έχουν πάει όλοι από 3 φορές µηδενισµός του πίνακα (array) flag For j = 1 To synolo_a flag(j) = 0 Next j κλήρωση των τακτικών επιτροπών της κατηγορίας Α δηµιουργία της επικεφαλίδας για την πρώτη στήλη του πίνακα results rsr.movefirst rsr![category_a] = "Κλήρωση της : " & Date rsr!update βρόχος µέχρι να κληρωθούν όλες οι επιτροπές Do Until i% = k% δηµιουργία ενός τυχαίου αριθµού από 1 έως synolo_a Randomize 0 a = Int(synolo_a * Rnd() + 1) rsa.movefirst σάρωση όλων των στοιχείων του πίνακα Α For j = 1 To synolo_a έλεγχος αν βρήκαµε την εγγραφή του υπαλλήλου που έχει κληρωθεί If rsa![code] = a Then αν ναι, µπορεί να συµµετάσχει; If ((rsa![fores] < 3 And diktis_a = 0) Or (diktis_a = 1)) And flag(a) = 0 And rsa![switch] = 1 Then ενηµέρωση του πίνακα Α rsa.edit rsa![fores] = rsa![fores] + 1 rsa.update i% = i% + 1 flag(a) = 1 epitr = epitr & Str$(i) & ". " & rsa![onoma] & Chr$(13) ενηµέρωση του πίνακα results rsr![category_a] = Str$(i) & ". " & rsa![onoma] rsr.update 9

rsa.movenext Next j εµφάνιση µηνύµατος MsgBox epitr, 0, "Κλήρωση Πίνακα Α της : " & Date κλήρωση των αναπληρωµατικών επιτροπών της κατηγορίας Α i% = 0 rsr![category_a] = " " rsr!update rsr![category_a] = "Αναπληρωµατικοί της : " & Date rsr!update Do Until i% = ka% Randomize 0 a = Int(synolo_a * Rnd() + 1) rsa.movefirst For j = 1 To synolo_a If rsa![code] = a Then If ((rsa![fores] < 3 And diktis_a = 0) Or (diktis_a = 1)) And flag(a) = 0 And rsa![switch] = 1 Then i% = i% + 1 flag(a) = 1 an_epitr = an_epitr & Str$(i) & ". " & rsa![onoma] & Chr$(13) rsr![category_a] = Str$(i) & ". " & rsa![onoma] rsr.update rsa.movenext Next j MsgBox an_epitr, 0, "Αναπληρωµατικοί Πίνακα Α της : " & Date 10

µηδενισµός µεταβλητών για να χρησιµοποιηθούν στον πίνακα Β i% = 0 epitr = " " an_epitr = " " µηδενισµός του πίνακα (array) flag For j = 1 To synolo_b flag(j) = 0 Next j κλήρωση των τακτικών επιτροπών της κατηγορίας Β rsr.movefirst rsr![category_b] = "Κλήρωση της : " & Date rsr!update Do Until i% = k% Randomize 0 a = Int(synolo_b * Rnd() + 1) rsb.movefirst For j = 1 To synolo_b If rsb![code] = a Then If ((rsb![fores] < 3 And diktis_b = 0) Or (diktis_b = 1)) And flag(a) = 0 And rsb![switch] = 1 Then rsb.edit rsb![fores] = rsb![fores] + 1 rsb.update i% = i% + 1 flag(a) = 1 epitr = epitr & Str$(i) & ". " & rsb![onoma] & Chr$(13) rsr![category_b] = Str$(i) & ". " & rsb![onoma] rsr.update rsb.movenext Next j MsgBox epitr, 0, "Κλήρωση Πίνακα Β της : " & Date 11

End Sub κλήρωση των αναπληρωµατικών επιτροπών της κατηγορίας Β i% = 0 rsr![category_b] = " " rsr.update rsr![category_b] = "Αναπληρωµατικοί της : " & Date rsr!update Do Until i% = ka% Randomize 0 a = Int(synolo_b * Rnd() + 1) rsb.movefirst For j = 1 To synolo_b If rsb![code] = a Then If ((rsb![fores] < 3 And diktis_b = 0) Or (diktis_b = 1)) And flag(a) = 0 And rsb![switch] = 1 Then i% = i% + 1 flag(a) = 1 an_epitr = an_epitr & Str$(i) & ". " & rsb![onoma] & Chr$(13) rsr![category_b] = Str$(i) & ". " & rsb![onoma] rsr.update rsb.movenext Next j MsgBox an_epitr, 0, "Αναπληρωµατικοί Πίνακα Β της : " & Date 12

Private Sub initialize_click() µηδενισµός των αποτελεσµάτων της κλήρωσης στους πίνακες Α και Β Dim k% Dim db As DATABASE Dim rsa As Recordset Dim rsb As Recordset Set db = CurrentDb() Set rsa = db.openrecordset("pinakas_a") Set rsb = db.openrecordset("pinakas_b") k% = InputBox("Δώστε τον κωδικό : ") If k% = 1234 Then rsa.movefirst Do Until rsa.eof() rsa.edit rsa![switch] = 1 rsa![fores] = 0 rsa.update rsa.movenext rsb.movefirst Do Until rsb.eof() rsb.edit rsb![switch] = 1 rsb![fores] = 0 rsb.update rsb.movenext MsgBox "Μηδενισµός", 32, "Μηδενισµός Στοιχείων Κλήρωσης" Else MsgBox "Λάθος Κωδικός!", 32, "Προσοχή!" End Sub 13