/***************************************************************************/ /* ** T U O T E E T S . C ** ** ** Tuotetietojen etsimiseen liittyvi„ aliohjelmia. ** ** Aliohjelmat: ** kysy_myyty_tuotemaara - kysyy myydyn tuotemaaran ** kysy_tuotenumero - kysyy etsitt„v„n tuotteen tuotenumeron ** kysy_tuotenimi - kysyy etsitt„v„n tuotteen nimen ** etsi_tuote_tuotenumero - etsii tuotetta tuotenumeron perusteella ** etsi_tuote_nimi - etsii tuotetta nimen perusteella ** ** ** Tekij„: Iiris Suutarinen 9.4.1992 ** */ #include #include #include #include "mjonot.h" #include "tuote.h" #define OLET_ALKU 22 /* Oletuksen alkusarake */ #define VAKANEN 36 /* V„k„sen alkusarake */ /***************************************************************************/ int /* 0 = hommat OK */ kysy_myyty_tuotemaara( /* 1 = lukeminen ep„onnistui */ int *maara /* t P„„tteelt„ luettu myyty tuotem„„r„. */ ) /* */ /* ** Funktiolla kysyt„„n myyty tuotem„„r„. Oletusarvoja ei k„ytet„. ** Mik„li sy”tteen lukeminen ep„onnistuu tai k„ytt„j„ vastaa [RET], ** palautetaan funktion arvona 1 ja myydyksi tuotem„„r„ksi j„„ nolla. ** Lukemisen onnistuessa palautetaan funktion arvona 0. ** ** Sy”tt”: P„„tteelt„ ** Tulostus: N„ytt””n ** Kutsuu: lue_jono_oletus, jono_intiksi ---------------------------------------------------------------------------*/ { int paluu; char apu[10]; *maara = 0; apu[0] = 0; printf("\n"); paluu = lue_jono_oletus(" Myyty m„„r„",OLET_ALKU,VAKANEN,apu,N_S(apu)); if (paluu < OLETUS || apu[0] == 0) return 1; *maara = jono_intiksi(apu,"%d"); return 0; } /***************************************************************************/ int /* 0 = hommat OK */ kysy_tuotenumero( /* 1 = halutaan pois kysymyksest„ */ char *tuotenumero, /* t P„„tteelt„ luettu tuotenumero. */ int max_pit /* s Tuotenumeron maksimipituus. */ ) /* */ /* ** Funktiolla kysyt„„n k„ytt„j„lt„ tuotenumero. Oletusarvoja ei k„ytet„. ** Mik„li sy”tteen lukeminen ep„onnistuu tai k„ytt„j„ vastaa [RET], ** palautetaan funktion arvona 1 ja tuotenumeron arvo on tyhj„ merkkijono. ** Lukemisen onnistuessa palautetaan funktion arvona 0. ** ** Sy”tt”: P„„tteelt„ ** Tulostus: N„ytt””n ** Kutsuu: lue_jono_oletus, poista_tyhjat ---------------------------------------------------------------------------*/ { int paluu; tuotenumero[0] = 0; printf("\n"); paluu = lue_jono_oletus(" Tuotenumero",OLET_ALKU,VAKANEN,tuotenumero, tuotenumero,max_pit); if (paluu < OLETUS || tuotenumero[0] == 0) return 1; poista_tyhjat(tuotenumero); return 0; } /***************************************************************************/ int /* 0 = hommat OK */ kysy_tuotenimi( /* 1 = halutaan pois kysymyksest„ */ char *nimi, /* t P„„tteelt„ sy”tetty tuotenimi. */ int max_pit /* s Tuotenimen maksimipituus. */ ) /* */ /* ** Funktiolla kysyt„„n k„ytt„j„lt„ tuoteen nimi. Oletusarvoja ei k„ytet„. ** Mik„li sy”tteen lukeminen ep„onnistuu tai k„ytt„j„ vastaa [RET], ** palautetaan funktion arvona 1 ja tuotteen nimen arvo on tyhj„ merkkijono. ** Lukemisen onnistuessa palautetaan funktion arvona 0. ** ** Sy”tt”: P„„tteelt„ ** Tulostus: N„ytt””n ** Kutsuu: lue_jono_oletus, poista_tyhjat ---------------------------------------------------------------------------*/ { int paluu; nimi[0] = 0; printf("\n"); paluu = lue_jono_oletus(" Nimi",OLET_ALKU,VAKANEN,nimi,nimi,max_pit); if (paluu < OLETUS || nimi[0] == 0) return 1; poista_tyhjat(nimi); return 0; } /***************************************************************************/ /* 0 = hommat OK */ Tuote_tyyppi /* Osoitin l”ydettyyn tuotteeseen. */ *etsi_tuote_tuotenumero( /* NULL = etsitty„ tuotetta ei l”ytynyt */ Rekisteri_tyyppi *rekisteri, /* s Rekisteri, josta tuotetta etsit„„n. */ char *tuotenumero /* s Tuotenumero, jonka perusteella etsit„„*/ ) /* */ /* ** Funktiolla etsit„„n tuoterekisterist„ tuotetta tuotenumeron perusteella. ** Toistaiseksi tuotenumerona oletetaan olevan merkkijono, jossa on vain ** numeromerkkej„. Jos tuotenumerossa esiintyy jokerimerkkej„ * tai ?, ** etsit„„n rekisterist„ ENSIMMŽINEN maskia vastaava tuotenumero. ** ** Kutsuu: wildmat ---------------------------------------------------------------------------*/ { int i; for (i = 0; i < rekisteri->tuotteita; i++) if (wildmat(rekisteri->tuotteet[i]->tuotenumero,tuotenumero) == 0) return rekisteri->tuotteet[i]; return NULL; } /***************************************************************************/ /* 0 = hommat OK */ Tuote_tyyppi /* Osoitin l”ydettyyn tuotteeseen. */ *etsi_tuote_nimi( /* NULL = etsitty„ tuotetta ei l”ytynyt */ Rekisteri_tyyppi *rekisteri, /* s Rekisteri, josta tuotetta etsit„„n. */ char *nimi /* s Nimi, jonka perusteella etsit„„n. */ ) /* */ /* ** Funktiolla etsit„„n tuoterekisterist„ tuotetta nimen perusteella. ** Jos tuotenimessa esiintyy jokerimerkkej„ * tai ?, etsit„„n rekisterist„ ** ENSIMMŽINEN maskia vastaava tuotenumero. ** ** Kutsuu: kopioi_jono, jono_isoksi, N_S, wildmat ---------------------------------------------------------------------------*/ { int i; char ituote[80], isana[80]; kopioi_jono(N_S(ituote),nimi); jono_isoksi(ituote); for (i = 0; i < rekisteri->tuotteita; i++) { kopioi_jono(N_S(isana),rekisteri->tuotteet[i]->nimi); if (wildmat(jono_isoksi(isana),ituote) == 0) return rekisteri->tuotteet[i]; } return NULL; }