• No results found

problem_s

En struct som ska hålla reda på två stycken heltal. Heltalen ska representera ett multiplikationsproblem, t.ex.

7•3.

answered_problem_s

En struct som ”är en” problem_s med ett heltal för avgivet svar och ett heltal för den tid det tog att avge svaret.

answers_log_c

Klass som ska hålla ordning på tio stycken answered_problem_s. Ska hantera data för facitfönstret.

details_answer_s

Struct som ska hålla reda på detaljer om ett enda problem för detaljstatistiken. I praktiken en problem_s och

en vektor med alla elevens svar, dock högst 30 stycken. Att det ska vara högst 30 stycken ges av detaljkraven för MultiPC.

detailed_answers_log_c

Klass som ska hantera detaljstatistik för samtliga 100 multiplikationstal som är möjliga.

statistics_problem_s

En struct som ”är en” problem_s förstärkt med två heltal för antalet försök och antalet rätt.

statistics_log_c

Klass som ska hantera statistik för samtliga 100 multiplikationstal som är möjliga.

problem_generator_c

Klass som ska slumpa fram nya multiplikationstal. Den får aldrig slumpa samma två tal i rad, det ges av kravställningen för MultiPC.

multidb_c

Klass som ska fungera som gränssnitt mot filhantering av elevnamn. Eftersom den troligen ska byggas ut till ett generellt databasgränssnitt i framtida utgåvor får den namnet multidb_c.

multipc_logic_c

Ska ge GUI-klasserna ett snällt gränssnitt via vilket de kan manipulera logiken.

6.3.2 Krävda gränssnitt

En C++ kompilator.

6.3.3 Erbjudet gränssnitt

En fasadklass multipc_logic_c med följande gränssnitt:

// Konstanter för felhantering vid läsning och skrivning // av elevnamn

// Ska returnera en unik instans av multipc_logic_c // Parametrar: INGA

//

// Retur:

// Pekare till unik instans //

// Felhantering: INGEN

// static multipc_logic_c *get_instance();

// Returnerar status för elev DB

// För anrop INNAN get_first_pupil/get_next_pupil // Parametrar: INGA

//

// Retur:

// Status hos elev DB: DB_OK eller DB_CORRUPT //

// Felhantering:

// Via statusvärdet

// Om status är DB_CORRUPT kommer ny och tom elevfil // att skapas. Anroparen kan sedan fortsätta.

// Jämför med detaljkraven under 120

// db_status_t get_db_status();

// För att loopa över och läsa in elevnamn // Parametrar:

// first_name: för lagring av elevs förnamn, minst 40 tecken // last_name: för lagring av elevs efternamnnamn, minst 40 tecken // item_found: sätts till 1 om elev fanns, 0 annars

//

// Retur:

// item_found = 1 indikerar att det fanns ytterligare en elev // item_found = 0 ==> Ingen elev, övriga param oförändrade //

// Felhantering: INGEN

// void get_first_pupil(

char first_name[], char last_name[], int &item_found );

void get_next_pupil(

char first_name[], char last_name[], int &item_found );

// Sätter aktuell elev // Parametrar:

// first_name: elevens förnamn, max 40 tecken // last_name: elevens efternamn, max 40 tecken //

// Retur: INGEN //

// Felhantering: INGEN

// void set_pupil(

char first_name[], char last_name[] );

// Ger tillbaka namn på aktuell elev // Parametrar:

// first_name: elevens förnamn, minst 40 tecken // last_name: elevens efternamn, minst 40 tecken //

// Retur:

// Namndata i first_name och last_name //

// Felhantering: INGEN

// void get_pupil(

char first_name[], char last_name[] );

// För lagring av nytt elevnamn

// Sätter också aktuell elev, d.v.s. anropar set_pupil // Parametrar:

// first_name: elevens förnamn, max 40 tecken

// last_name: elevens efternamn, max 40 tecken // db_status: sätts till DB_OK om det gick bra //

// Retur:

// db_status = DB_OK ==> skrivning gick bra

// db_status = WRITE_FAILED ==> skrivning misslyckades, // elev EJ lagrad

// db_status = DB_FULL ==> redan fullt i elev-DB // elev EJ lagrad

//

// Felhantering:

// Via db_status

// void store_name(

char first_name[], char last_name[],

db_status_t &db_status );

// För inställning av tabell

// Felhantering: INGEN

// void set_table( int table );

// Returnerar inställd tabell // Parametrar: INGA

//

// Retur:

// Vald tabell, ett heltal inom [1 .. 10]

//

// Felhantering: INGEN

// int get_table();

// Ska ge nästa framslumpade problem // Parametrar:

// Felhantering: INGEN

// void get_next_problem(

answered_problem_s &problem );

// Rensar den interna svarsloggen // För anrop innan ett prov startar // Parametrar: INGA

//

// Retur: INGEN //

// Felhantering: INGEN

// void clear_answers();

// För lagring av ett besvarat tal // Parametrar:

// answer: svarsdata som ska lagras

//

// Retur: INGEN //

// Felhantering: INGEN

// void store_answer(

answered_problem_s &answer );

// För att loopa över de givna svaren i ett prov

// item_found = 1 indikerar att det fanns ytterligare ett svar // item_found = 0 ==> Inget svar, övriga param oförändrade //

// Felhantering: INGEN

// void get_first_answer(

answered_problem_s &answer, int &correct_answer,

int &item_found );

void get_next_answer(

answered_problem_s &answer, int &correct_answer,

int &item_found );

// För att loopa över statistiken i vald tabell // Parametrar:

// answer_statistics: får statistik om ett tal // item_found: sätts till 1 om svar fanns, 0 annars //

// Retur:

// item_found = 1 indikerar att det fanns ytterligare statistik // item_found = 0 ==> Ingen statistik, övriga param oförändrade //

// Felhantering: INGEN

// void get_first_stats(

statistics_problem_s &answer_statistics, int &item_found );

void get_next_stats(

statistics_problem_s &answer_statistics, int &item_found );

// För att ställa in aktuellt tal för detaljstatistiken // Ska kombineras med set_table()

// Parametrar:

// operand_a: värdet av första operanden //

// Retur: INGEN //

// Felhantering: INGEN

// void set_details_number( int number );

// Returnerar inställt details_number // Parametrar: INGA

//

// Retur:

// Inställd detaljoperand, ett heltal inom [1 .. 10]

//

// Felhantering: INGEN

// int get_details_number();

// För att loopa över detaljstatistik för vald tabell och valt // detaljnummer

// Parametrar:

// answer_details: data får svar som avgivits // correct_answer: får korrekt svar

// item_found: sätts till 1 om svar fanns, annars 0 //

// Retur:

// item_found = 1 indikerar att det fanns ytterligare svar // item_found = 0 ==> Inget svar, övriga param oförändrade //

// Felhantering: INGEN

// void get_first_detail(

int &answer,

int &item_found );

void get_next_detail(

int &answer,

int &item_found );

6.3.4 Funktion

Subsystemet ska tillhandahålla ett lätthanterligt skal ovanpå MultiPC logikklasser.

6.3.5 Övrigt

Inga för utvecklingsverktyget specifika datatyper ska utnyttjas av multipc_logic_c eller dess stödklasser.

multipc_logic_c fungerar som en fasadklass och den uppfyller designmönstret Singleton.

Related documents