ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Μάθημα: Μεθοδολογίες και Γλώσσες Προγραμματισμού Ι (C++) Διδάσκουσα: Καβαλλιεράτου Εργίνα Διάρκεια: 2 ώρες 17/9/2009 ΘΕΜΑΤΑ 1) (2 μονάδες) Δεδομένης της περιγραφής που ακολουθεί δώστε το σχεδιασμό κλάσεων του συστήματος: Προδιαγράφετε ένα σύστημα ηλεκτρονικής υποβολής εργασιών σε πανεπιστήμιο, μέσω διαδικτυακής πύλης (portal). Το σύστημα προορίζεται για χρήση από σπουδαστές, αξιολογητές και συντονιστές. Οι σπουδαστές εισέρχονται στο portal και, αφού περάσουν από μια διαδικασία εγγραφής αποκτούν στοιχεία πρόσβασης (username, password), με βάση τα οποία μπορούν να χρησιμοποιούν την υπηρεσία της ηλεκτρονικής υποβολής εργασιών. Ο σπουδαστής πρέπει να εισάγει τα πλήρη προσωπικά του στοιχεία, καθώς και τα στοιχεία επικοινωνίας. Το σύστημα αφού ελέγξει και διαπιστώσει ότι ο σπουδαστής δεν έχει εγγραφεί ξανά, δημιουργεί μια νέα εγγραφή, η οποία εμπεριέχει τα στοιχεία πρόσβασης, με όνομα χρήστη τον ΑΜ που θα δίνει ο σπουδαστής. Οι συντονιστές που χρησιμοποιούν το σύστημα, εισάγουν στο σύστημα τα στοιχεία για κάθε γραπτή και την εκφώνησή της. Το σύστημα δημιουργεί μια εγγραφή για την εργασία και της αποδίδει αυτόματα έναν κωδικό. Το θέμα είναι θεωρητικό και η απάντηση προκύπτει εξολοκλήρου από τη διάλεξη 7. Σχεδιασμός κλάσεων. 2) (4 μονάδες) Φτιάξτε πρόγραμμα βασισμένο σε κλάσεις, που θα δέχεται από το χρήστη ημερομηνία (ημέρα, μήνα, χρόνο) και αφού ελέγξει την ορθότητα της θα είναι σε θέση να υπολογίσει και να τυπώσει μία ημερομηνία Ν μέρες μετά. Το Ν είναι επιλογή του χρήστη. Το Ν μπορεί να πάρει τιμή 0 100. Να γίνεται έλεγχος κατά την ανάγνωση. Η προώθηση ημερομηνίας να γίνεται με συνάρτηση. Κατά τον έλεγχο της ορθότητας να ελεγχθεί το πλήθος ημερών για κάθε μήνα αλλά αγνοήστε την περίπτωση δίσεκτου έτους. O Φλεβάρης θα θεωρείται ότι έχει πάντα 28 μέρες. #include <iostream> using namespace std; class Date protected: int day; int month; int year; public: Date(int d,int m,int y): day(d),month(m),year(y);
~Date(); void proceed(int n); void printdate() const; ; void Date::proceed(int n) int day=day+n; do switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: if (day>31) day=day-31; month=month+1; else case 4: case 6: case 9: case 11: if (day>30) day=day-30; month=month+1; else case 2: if (day>28) day=day-28; month=month+1; else case 13: year=year+1; month=1;
default: while(change==1); void Date::printDate() const cout<<endl<<endl<<day<<"\\"<<month<<"\\"<<year; int main () int d,m,y; int fecha=1,next; cout<<"give year: "; do cin>>y; while(y<=0 y>=3000); cout<<"\ngive month: "; do cin>>m; while(m<1 m>12); cout<<"\ngive day: "; do cin>>d; switch (m) case 1: case 3: case 5: case 7: case 8: case 10: case 12: if (d>31) fecha=0; else fecha=1; case 4: case 6: case 9: case 11: if (d>30) fecha=0; else fecha=1; case 2: if (d>28) fecha=0; else fecha=1; default:
fecha=1; while (d<0 fecha==0); cout<<"\ngive number of days to proceed (1-100): "; do cin>>next; while(next<1 next>100); Date simera(d,m,y); simera.proceed(next); simera.printdate(); return 0; 3) (4 μονάδες) Δεδομένων των πιο κάτω κλάσεων φτιάξτε πρόγραμμα ατζέντα όπου ο χρήστης θα έχει τη δυνατότητα, είτε να αναζητήσει κάποια επαφή ή να καταχωρήσει επαφή. Στην πρώτη περίπτωση (αναζήτηση επαφής) ζητείται από το χρήστη να δοθεί κάποιο όνομα (μέχρι 20 χαρακτήρων) και στη συνέχεια αναζητείται μεταξύ των επαφών. Αν υπάρχει τυπώνεται η πλήρης επαφή αλλιώς μήνυμα μη ύπαρξης. Στην περίπτωση δημιουργίας νέας επαφής, ζητείται από το χρήστη να δώσει όνομα (μέχρι 20 χαρακτήρων). Αν υπάρχει ήδη τυπώνεται μήνυμα ύπαρξης αλλιώς ζητείται και η διεύθυνση (μέχρι 20 χαρακτήρων), τυπώνονται για επιβεβαίωση και καταχωρούνται. Το σύστημα μπορεί να δεχθεί μέχρι 100 επαφές. Συμπληρώστε τις συναρτήσεις που δεν ορίζονται και δημιουργήστε όποια άλλη συνάρτηση εντός ή εκτός κλάσης θεωρείται απαραίτητη. #include <iostream> #include <string.h> using namespace std; class Name public: Name(void) myname = 0; ~Name(void) if (myname) delete[] myname; void SetName(char* n) myname=n; ; char* GetName() const return myname;; void PrintName(void)cout<<endl<<"Name: "<<myname;; private: char* myname; ; class Contact: public Name public: Contact(void) myaddress = 0; ~Contact(void) if (myaddress) delete[] myaddress;
void SetAddress(char* c) myaddress=c; ; char* GetAddress() const return myaddress;; void PrintAddress(void)cout<<endl<<"Address: "<<myaddress;; private: char* myaddress; ; int main() Contact agenda[100]; int choice, i; char *str=new char[20]; char *str1=new char[20]; while(1) cout<<endl<<"1. Find a contact"<<endl cout<<"2. New Entry"<<endl<<"0. Exit"<<endl; cout<<"choose: "; do cin>>choice; switch(choice) case 1: cout<<endl<<"give Name to find: "; cin>>str; i=0; str1=agenda[i].getname(); while(i<100 && strcmp(str,str1)!=0) i++; if(i!=100) agenda[i].printname(); agenda[i].printaddress(); case 2: cout<<endl<<"give Name: "; cin>>str; cout<<endl<<"give Address: "; cin>>str1; cout<<str1; i=0; while(i<100 && agenda[i].getname()!=0) i++; agenda[i].setname(str); agenda[i].setaddress(str1); agenda[i].printname(); agenda[i].printaddress(); case 0: return 0;
while(choice!=1 && choice!=2 && choice!=0); return 0;