Concetti Chiave

  • La segreteria deve gestire le iscrizioni stilando una graduatoria basata su punteggi e età degli aspiranti.
  • La procedura automatizzata prevede l'acquisizione di dati del corso e degli aspiranti, fino a un massimo di 100 iscrizioni.
  • In caso di parità di punteggio, la precedenza è data al candidato più anziano e, se necessario, a chi ha presentato prima la domanda.
  • La procedura include meccanismi per correggere errori di battitura durante l'inserimento dei dati da parte dell'operatore.
  • Il programma sviluppato gestisce l'ordinamento degli ammessi e la stampa della lista in formato alfabetico.

Gestione delle iscrizioni

Un ufficio di una società che gestisce corsi di specializzazione per l'uso di macchine di analisi mediche ha ricevuto un gran numero di iscrizioni per un ciclo di lezioni sull'utilizzo dell'HPLC (High Pressare Liquid Chromatography). Dato che i posti sono limitati la segreteria deve stendere una graduatoria e compilare una lista in ordine alfabetico dei nomi di coloro che sono stati accettati al corso, per poterla stampare sul bollettino della società. La graduatoria deve essere stilata in base ad un punteggio assegnato a ciascun aspirante dall'ufficio organizzatore e, a parità di punteggio, la precedenza è data al candidato più anziano. Dato che questo tipo di problema si ripresenta per ogni corso, si vuole automatizzare la procedura, utilizzando un personal computer presente nell'ufficio.

1. Analisi e specifica dei requisiti:

Procedura di selezione

La segretaria, nello svolgimento del suo lavoro, dovrà:

1. ricevere l’elenco degli aspiranti corredato delle date di nascita e dei punteggi assegnati;

2. dopo aver attivato la procedura, inserire i dati relativi al corso e successivamente quelli degli aspiranti;

3. prendere la lista dei nomi stampata dall’elaboratore e consegnarla al responsabile.

- Da un colloquio con i responsabili della società si è determinato che il numero di domande pervenute per l’iscrizione ai corsi precedenti non è mai stato superiore a 100.

- Il formato stampa deve comprendere il nome del corso, il periodo di effettuazione, l’elenco alfabetico degli aspiranti ammessi alla frequenza del corso e la data di nascita (per evitare malintesi in caso di omonimia).

- Nella procedura sono previsti meccanismi per poter correggere un eventuale errore di battitura da parte dell’operatore in fase di inserimento dei dati.

- Il corso viene tenuto anche nel caso in cui non vengano occupati tutti i posti disponibili.

- La graduatoria viene stilata esclusivamente in base ai criteri specificati dalla società. (In caso di parità assoluta la precedenza viene assegnata a chi ha presentato per 1° la domanda).

- acquisizione dei dati del corso;

- acquisizione dei dati degli aspiranti;

- definizione (stesura) della graduatoria;

- stampa ordinata degli ammessi dell’ufficio.

1. ricevere il numero di posti disponibili per il corso in esame, nonché il titolo del

corso e il periodo di effettuazione;

2. acquisire, uno per volta, tutti i dati dei candidati;

3. stilare la graduatoria dei candidati;

4. estrarre dalla graduatoria i nominativi degli ammessi e porli in ordine alfabetico;

5. stampare il tabulato richiesto.

Strutture dati e funzioni

Strutture dati in memoria centrale:

#define MAX_ASPIRANTI 100

typedef {

int giorno;

int mese;

int anno;

}data;

typedef{

char cognome[26];

char nome[21];

data dataNascita;

int punteggio;

}persona;

persona aspiranti[MAX_ASPIRANTI];

int numAspiranti;

int numPostiDisponibili;

INIZIO

acquisizione dei dati del corso

acquisizione dei dati degli aspiranti

SE (numAspiranti > numPostiDisponibili)

ALLORA

definizione della graduatoria

FINE_SE

ordinamento degli ammessi alla frequenza

stampa dei nominativi nel formato richiesto

FINE

void insertCorso(const char *nomeCorso,const char *dataCorso,int *numPosti);

void insertAspirante(persona *aspiranti);

void graduatoria(persona *aspiranti,int numAspiranti);

void sort(persona *aspiranti,int numAmmessi);

void stampa(const char *nomeCorso,const char *dataCorso,const persona *aspiranti,int numAmmessi);

bool sonoInOrdine(const data *data1, const data *data2);

Sviluppo del sottoprogramma

Sviluppo del sottopgm: void graduatoria(persona *aspiranti,int numAspiranti);

sort per confronti sequenziali

utilizza una funzione booleana: bool sonoInOrdine(const data *data1, const data *data2);

per confrontare due date

Sviluppo del sottopgm: bool sonoInOrdine(const data *data1, const data *data2);

La funzione si limita a controllare prima gli anni, poi i mesi e infine i giorni e a

restituire il valore vero solo se le date sono in ordine.

Sviluppo del sottopgm: void sort(persona *aspiranti,int numAmmessi);

sort per confronti sequenziali

Test data set

Fare tabella dei casi di test come visto in classe terza, tenendo presente i seguenti casi:

- numero di aspiranti ³ a quello dei posti disponibili

- numero di aspiranti > di quello dei posti disponibili, senza casi di parità di punteggio

- numero di aspiranti > di quello dei posti disponibili, con casi di parità di punteggio

- numero di aspiranti > posti disponibili, con casi di parità di punteggio n cui uno solo degli

aspiranti a pari merito viene ammesso al corso

- casi di parità di punteggi tra persone nate nello stesso anno ma mesi diversi

- casi di parità di punteggi tra persone nate nello stesso anno, nello stesso mese ma in giorni

diversi.

Domande da interrogazione

  1. Come viene stilata la graduatoria per l'ammissione ai corsi?
  2. La graduatoria è stilata in base al punteggio assegnato a ciascun aspirante; in caso di parità di punteggio, ha la precedenza il candidato più anziano.

  3. Quali dati devono essere raccolti per l'iscrizione al corso?
  4. È necessario ricevere l'elenco degli aspiranti con le date di nascita e i punteggi, oltre ai dati relativi al corso, come il titolo e il periodo di effettuazione.

  5. Cosa succede se il numero di aspiranti supera i posti disponibili?
  6. Se il numero di aspiranti è maggiore rispetto ai posti disponibili, viene stilata una graduatoria e solo i candidati selezionati vengono ammessi al corso.

  7. Quali meccanismi sono previsti per la correzione degli errori?
  8. Nella procedura è previsto un meccanismo per correggere eventuali errori di battitura durante l'inserimento dei dati da parte dell'operatore.

  9. Qual è il formato di stampa richiesto per l'elenco degli ammessi?
  10. Il formato di stampa deve includere il nome del corso, il periodo di effettuazione, l'elenco alfabetico degli aspiranti ammessi e la loro data di nascita per evitare malintesi in caso di omonimia.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community