/*******************************************************************/ /* Ohjelmointi-kurssin harjoitusty” */ /* Juha Ala-Aho */ /*******************************************************************/ /* */ /* TEHTŽVŽN MŽŽRITYS */ /* C 130 */ /* Perusta joukkue- ja pelaajatiedostot seuraavien mallien mukaan: */ /* Joukkuetiedoston tietue sis„lt„„ joukkueen nimen, kotipaikan, */ /* pisteiden lukum„„r„n, maalien m„„r„„n (erikseen omat ja toisten */ /* tekem„t). Joukkueen numero = tietueen numero. Pelaajatiedoston */ /* tietue sis„lt„„ pelaajan nimen, syntym„ajan, maalit ja sy”t”t. */ /* Saman joukkueen pelaajat talletetaan per„kk„in tiedostoon. */ /* Kullakin joukkueella on vakiom„„r„ pelaajia (sama kaikilla). */ /* Ottelukierroksen j„lkeen tiedostojen p„ivitys suoritetaan seu- */ /* raavien sy”tt”tietueiden avulla: Sy”tt”tietueessa on joukkueen */ /* numero ja ottelun tulos, ao. joukkueen maalit ensimm„isen„ mai- */ /* nittuna. Lis„ksi jokaista joukkueen tekem„„ maalia kohti on */ /* yksi sy”tt”tietue, jolla on maalintekij„n ja sy”tt„j„n numerot. */ /* Pelaajien numeroina voidaan k„ytt„„ heid„n j„rjestysnumeroaan */ /* joukkueen pelaajien tietueiden j„rjestyksess„. */ /* */ /*******************************************************************/ /* */ /* TEHTŽVŽN TARKENNUS */ /* */ /* Perusta joukkue-, pelaaja-ja ottelutiedostot seuraavien mallien */ /* mukaan: Joukkuetiedoston tietue sis„lt„„ joukkueen nimen, koti- */ /* paikan, pisteiden lukum„„r„n, maalien m„„r„„n (erikseen omat ja */ /* toisten tekem„t)ja joukkueen tunnuksen. Pelaajatiedoston tietue */ /* sis„lt„„ pelaajan nimen, syntym„ajan, pelipaikan ja joukkueen. */ /* Saman joukkueen pelaajat talletetaan per„kk„in tiedostoon. */ /* Ottelukierroksen j„lkeen tiedostojen p„ivitys suoritetaan seu- */ /* raavien sy”tt”tietueiden (ottelutiedoston tietueen) avulla: */ /* Sy”tt”tietueessa on joukkueiden nimet ja ottelun tulos, koti- */ /* joukkueen maalit ensimm„isen„ mainittuna. */ /* Pelaajien numeroina voidaan k„ytt„„ korkeintaan kaksinumeroista */ /* lukua. */ /* */ /*******************************************************************/ /****************************************************************************/ /* ** S A R J A . C ** ** ** Ohjelma sarjan (1-300 pelaajaa,1-12 joukkuetta) joukkue- ja ottelu- ** rekisterin yll„pitoon. Ohjelma tallettaa joukkueet, pelaajat ja ottelut ** omiin tiedostoihinsa. Tiedostojen muodot on kuvailtu aliohjelmien ** lue_sarja (sarjatal.c), lue_pelaajarekisteri (pelaatal.c) ja ** lue_ottelurekisteri (otteltal.c) yhteydess„. ** ** Ohjelmassa on seuraavat p„„toiminnot: ** ** Valitse: ** 0 = lopetus ** 1 = joukkuetietojen yll„pito ** 2 = ottelutietojen yll„pito ** 3 = tulosteet ** ** Joukkueista, pelaajista ja otteluista k„ytett„v„t tiedot on esitelty ** tiedostoissa ** sarja.h - yhteiset tyypit ja m„„rittelyt ** sarjarak.c - joukkueiden rakenteeseen liittyv„t aliohjelmat ja muuttujat ** pelaarak.c - pelaajien rakenteeseen liittyv„t aliohjelmat ja muuttujat ** ottelrak.c - otteluiden rakenteeseen liittyv„t aliohjelmat ja muuttujat ** ** ** Muuten aliohjelmien esittelyt l”ytyv„t tiedostosta ** sarja.h. ** ** ** Ohjelman k„„nt„mist„ varten tarvitaan seuraavat tiedostot: ** ** ANSI C:n mukaiset kirjastot ** mjonot.h (ja mjonot.c tai mjonot.obj) ** sarja.h ** sarja_a.c ** sarjarak.c ** sarjatal.c ** pelaarak.c ** pelaatal.c ** ottelrak.c ** otteltal.c ** ** ** Tekij„t: Vesa Lappalainen ** Ohjelmointikurssi 1991 ** Tehty: 13.11.1991 ** Muutettu: 07.01.1992/Juha Ala-Aho ** Mit„ muutettu: Vastaamaan omaa harjoitusty”t„ ** ** Jatkosuunnitelmat: ** - sy”tt”jen oikeellisuuden tarkistus ** - maalin tekij”iden ja sy”tt„jien lis„„minen ottelutietoihin ** - pelaajien pisteiden laskeminen ja pistep”rssin tulostaminen ** - voidaan vastata nimell„ tai joukkueella ja numerolla kysytt„ess„ ** pelaajaa ** - voidaan vastata kotijoukkue-vierasjoukkue kysytt„ess„ ottelua ** */ char *VERSIO = "10.01.1992"; #include #include #include #include "mjonot.h" #include "sarja.h" /****************************************************************************/ void joukkueet( Sarja_tyyppi *sarja, /*s,t Sarja jota k„sitell„„n */ Pelaajarekisteri_tyyppi *sarja_pelaajat, /* s,t Pelaajarek jota k„sitell*/ Ottelurekisteri_tyyppi *sarja_pelit, /* s,t Ottelurek jota k„sitell„„n */ char valinta /* s N„pp„in jota painamalla tultiin*/ ) /* Aliohjelmalla lis„t„„n ja korjataan joukkueiden ja pelaajien tietoja. ** ** Sy”tt”: P„„tteelt„ ** Tulostus: N„ytt””n ** Kutsuu: lisaa_uusi_joukkue ** joukkueen_tietojen_korjailu ** pelaajat ** Tekij„: Juha Ala-Aho ** Pvm: 11.12.1991 ---------------------------------------------------------------------------*/ { char nappain; int toista=1; do{ printf("\n\n\n\n"); printf(" %c. Joukkuetietojen yll„pito\n",valinta); printf( " ============================\n"); printf("\n"); printf(" Valitse toiminto\n"); printf(" 1 = joukkueiden lis„ys\n"); printf(" 2 = joukkueen tietojen korjaus\n"); printf(" 3 = pelaajien k„sittely\n"); printf("\n :"); nappain = odota_nappain("123",'0',VAIN_ISOT); switch (nappain) { case '0': toista=0; break; case '1': lisaa_uusi_joukkue(sarja); break; case '2': joukkueen_tietojen_korjailu( sarja,sarja_pelaajat,sarja_pelit); break; case '3': pelaajat(sarja_pelaajat); break; } } while (toista); } /****************************************************************************/ void ottelut( Sarja_tyyppi *sarja, /* s,t Sarja jota p„ivitet„„n */ Ottelurekisteri_tyyppi *sarja_pelit, /* s,t Ottelurek jota k„sitell„„*/ char valinta /* s N„pp„in jota painamalla tultiin */ ) /* Aliohjelmalla lis„t„„n otteluita ja korjataan otteluiden tietoja. Lopuksi ** ohjelma p„ivitt„„ joukkueita ottelutiedoilla. ** ** Sy”tt”: P„„tteelt„ ** Tulostus: N„ytt””n ** Kutsuu: lisaa_uusi_ottelu ** ottelun_tietojen_korjailu ** Tekij„: Juha Ala-Aho ** Pvm: 11.12.1991 ---------------------------------------------------------------------------*/ { char nappain; int toista=1; do{ printf("\n\n\n\n"); printf(" %c. Ottelutietojen yll„pito\n",valinta); printf( " ===========================\n"); printf("\n"); printf(" Valitse toiminto\n"); printf(" 1 = ottelutulosten lis„ys\n"), printf(" 2 = ottelutietojen korjaus\n"); printf("\n :"); nappain = odota_nappain("12",'0',VAIN_ISOT); switch (nappain) { case '0': toista=0; break; case '1': lisaa_uusi_ottelu(sarja_pelit,sarja); break; case '2': ottelun_tietojen_korjailu(sarja_pelit,sarja); break; } } while (toista); } /***************************************************************************/ void tulosteet( /* */ Sarja_tyyppi *sarja, /* t Sarja jota tulostetaan */ Pelaajarekisteri_tyyppi *sarja_pelaajat, /* t Pelaajarek jota tulostet */ Ottelurekisteri_tyyppi *sarja_pelit,/* t Ottelurek jota tulostetaan */ char valinta /* s N„pp„in jota painamalla tultiin*/ ) /* Aliohjelmalla tulostetaan joukkue- ja pelaajarekisterin tietoja. ** ** Sy”tt”: Tiedostosta ** Tulostus: N„ytt””n ** Kutsuu: tulosta_sarjatilanne ** tulosta_pelaajat ** tulosta_joukkueet ** tulosta_ottelut ** Tekij„: Juha Ala-Aho ** Pvm: 11.12.1991 ---------------------------------------------------------------------------*/ { char nappain; int toista=1; do{ printf("\n\n\n\n"); printf(" %c. Tulosteet\n",valinta); printf( " =============\n"); printf("\n"); printf(" Toimii toistaiseksi vain n„yt”lle\n"); printf("\n"); printf(" Valitse tulostustapa\n"); printf(" 1 = joukkueiden sarjatilanne\n"); printf(" 2 = pelaajien tiedot\n"); printf(" 3 = joukkueiden tiedot\n"); printf(" 4 = otteluiden tiedot\n"); printf("\n :"); nappain = odota_nappain("1234",'0',VAIN_ISOT); switch (nappain) { case '0': toista=0; break; case '1': tulosta_sarjatilanne(sarja); break; case '2': tulosta_pelaajat(sarja_pelaajat); break; case '3': tulosta_joukkueet(sarja); break; case '4': tulosta_ottelut(sarja_pelit); break; default : printf("N„in ei voi k„yd„!\n"); } } while (toista); } /****************************************************************************/ void paamenu(Sarja_tyyppi *sarja, Pelaajarekisteri_tyyppi *sarja_pelaajat ) /* ** Funktiolla tulostetaan ohjelman p„„menu. ** Tulostus: N„ytt””n ----------------------------------------------------------------------------*/ { printf("\n\n\n\n"); printf(" ===========================\n"); printf(" Joukkue- ja ottelurekisteri\n"); printf(" ===========================\n"); printf("\n"); printf(" Sarjassa %s on %d joukkuetta ja %d pelaajaa.\n", sarja->sarjan_nimi, sarja->joukkueita, sarja_pelaajat->pelaajia); printf("\n"); printf(" Valitse toiminto\n"); printf(" 0 = lopetus\n"); printf(" 1 = joukkuetietojen yll„pito\n"); printf(" 2 = ottelutietojen yll„pito\n"); printf(" 3 = tulosteet\n"," "); printf(" :"); } /****************************************************************************/ int /* */ paavalinta( /* 0 = jatketaan, 1 = valittu lopetus */ Sarja_tyyppi *sarja, /* s,t sarja jota k„sitell„„n */ Pelaajarekisteri_tyyppi *sarja_pelaajat, /* s,t pelaajarek jota k„sitell„„*/ Ottelurekisteri_tyyppi *sarja_pelit /* s,t ottelurek jota k„sitell„„n */ ) /* ** Funktiolla luetaan ja k„sitell„„n p„„menun vaatimat n„pp„imen painallukset. ** ** Sy”tt”: P„„tteelt„ ** Tulostus: N„ytt””n ** Kutsuu: ks. alla ----------------------------------------------------------------------------*/ { char nappain; nappain = odota_nappain("0123",0,VAIN_ISOT); switch (nappain) { case '0': return 1; case '1': joukkueet(sarja,sarja_pelaajat,sarja_pelit,nappain); break; case '2': ottelut(sarja,sarja_pelit,nappain); break; case '3': tulosteet(sarja,sarja_pelaajat,sarja_pelit,nappain); break; default : printf("N„in ei voi k„yd„!\n"); return 1; } return 0; } /****************************************************************************/ void ohjeet(void) /* Funktiolla tulostetaan ohjelman k„ytt”ohjeet ** ** Tulostus: N„ytt””n ----------------------------------------------------------------------------*/ { logo(); printf("\n"); printf("T„ll„ ohjelmalla yll„pidet„„n joukkue- ja ottelurekisteri„.\n"); printf("Pelaajia k„sitell„„n joukkueiden yll„pidon alaisuudessa.\n"); printf("Joukkueiden, pelaajien ja otteluiden tiedot ovat omissa" " tiedostoissa.\n"); printf("\n"); } /****************************************************************************/ void kiitokset(void) /* Funktiolla tulostetaan kiitokset ohjelman k„yt”st„. ** Tulostus: N„ytt””n ----------------------------------------------------------------------------*/ { printf("\n"); printf("KIITOS KŽYT™STŽ JA TERVETULOA UUDELLEEN\n"); printf("\n\n\n"); } /*******************************PŽŽOHJELMA***********************************/ int main(void) { Sarja_tyyppi sarja; Pelaajarekisteri_tyyppi sarja_pelaajat; Ottelurekisteri_tyyppi sarja_pelit; char *viesti; ohjeet(); if ( (viesti=lue_sarja(&sarja)) != NULL ) { printf("%s\n",viesti); return 1; } if ( (viesti=lue_pelaajarekisteri(&sarja_pelaajat)) != NULL ) { printf("%s\n",viesti); return 1; } if ( (viesti=lue_ottelurekisteri(&sarja_pelit)) != NULL ) { printf("%s\n",viesti); return 1; } do { paamenu(&sarja,&sarja_pelaajat); } while (!paavalinta(&sarja,&sarja_pelaajat,&sarja_pelit)); logo(); if ( (viesti=talleta_sarja(&sarja)) != NULL ) { printf("%s\n",viesti); return 1; } if ( (viesti=talleta_pelaajarekisteri(&sarja_pelaajat)) != NULL ) { printf("%s\n",viesti); return 1; } if ( (viesti=talleta_ottelurekisteri(&sarja_pelit)) != NULL ) { printf("%s\n",viesti); return 1; } kiitokset(); return 0; }