/****************************************************************************/ /* ** K E R H O . C ** ** ** Ohjelma pienen kerhon (1-500 j„sent„) j„senrekisterin yll„pitoon. ** Ohjelma tallettaa j„senist”n tiedostoon. Tiedoston muoto on kuvailtu ** aliohjelman lue_kerho (kerhota.c) yhteydess„. ** ** Ohjelmassa on seuraavat p„„toiminnot: ** ** Valitse: ** ? = avustus ** 0 = lopetus ** 1 = lis„„ uusi j„sen ** 2 = etsi j„senen tiedot ** 3 = tulosteet ** 4 = tietojen korjailu ** 5 = p„ivit„ j„senmaksuja ** ** J„senist„ k„ytett„v„t tiedot on esitelty tiedostoissa ** kerho.h - yhteiset tyypit ja m„„rittelyt ** kerhorak.c - rakenteeseen liittyv„t aliohjelmat ja muuttujat ** ** ** Muuten aliohjelmien esittelyt l”ytyv„t tiedostosta ** kerho.h. ** ** ** Ohjelman k„„nt„mist„ varten tarvitaan seuraavat tiedostot: ** ** ANSI C:n mukaiset kirjastot ** mjonot.h (ja mjonot.c tai mjonot.obj) ** pvm.h (ja pvm.c tai pvm.obj) ** help.h (ja help.c tai help.obj) ** kerho.h ** kerho.c ** kerhoali.c ** kerhorak.c ** kerhotal.c ** kerhoets.c ** ** ** Tekij„t: Vesa Lappalainen ** Ohjelmointikurssi 1991 ** Tehty: 20.12.1991 ** Muutettu: 21.12.1991/vl ** Mit„ muutettu: Tietojen sy”tt” lis„tty ** Muutettu: 21.12.1991/vl ** Mit„ muutettu: Tietojen oikeellisuustarkistukset ** kysy_jasenen_tiedot 2 uutta parametria ** Muutettu: 24.12.1991/vl ** Mit„ muutettu: Etsiminen ja korjailu ** ** Muutettu: 18.12.1992/vl ** Mit„ muutettu: korjattu tietueen poistossa ollut vika ** vaihdettu Jarjestystyypin tietueen nimi„ ** kenttia -> indekseja ** kentat -> indeksit ** Muutettu 19.12.1993/vl ** Mit„ muutettu: avustus ** ** Jatkosuunnitelmat: ** - j„senmaksujen k„sittely ** - tulosteet ** */ char *VERSIO = "19.12.1993"; #include #include #include #include "mjonot.h" #include "kerho.h" #include "help.h" /****************************************************************************/ void /* */ avustus( /* */ Kerho_tyyppi *kerho, /* s,t Kerho johon lis„t„„n */ char valinta /* s N„pp„in jota painamalla tultiin */ ) { if ( kerho ); printf("\n\n\n\n"); printf("%c. Avustus\n",valinta); printf( "===========\n"); help(NULL); } /****************************************************************************/ void /* */ lisaa_uusi_jasen( /* */ Kerho_tyyppi *kerho, /* s,t Kerho johon lis„t„„n */ char valinta /* s N„pp„in jota painamalla tultiin */ ) /* ** Aliohjelmalla kysell„„n uusia j„seni„ kunnes nimeksi annetaan [RET] ** ** Sy”tt”: P„„tteelt„ ** Tulostus: N„ytt””n ** Kutsuu: alusta_jasen ** kysy_jasenen_tiedot ** tulosta_jasen ** kylla_vastaus ** lisaa_jasen ----------------------------------------------------------------------------*/ { Jasen_tyyppi jasen; printf("\n\n\n\n"); printf("%c. Uuden j„senen lis„ys\n",valinta); printf( "==========================\n"); while (1) { /* Tyhjennet„„n tarvittavat kent„t oletusarvosta */ alusta_jasen(kerho,&jasen); printf("\n"); printf("J„seni„ on nyt %d.\n",kerho->jasenia); printf("Anna uusi nimi muodossa sukunimi etunimi etunimi\n"); do { if (kysy_jasenen_tiedot(kerho,&jasen,LISAYS)) return; printf("Lis„t„„nk”\n"); tulosta_jasen(stdout,&jasen); printf(":"); } while ( !kylla_vastaus() ); if ( lisaa_jasen(kerho,&jasen) ) { printf("\nLis„ys ei onnistunut!\n"); odota_jotakin(); } } } /****************************************************************************/ void /* */ etsi_jasenen_tiedot( /* */ Kerho_tyyppi *kerho ,/* s,t Kerho josta etsit„„n */ char valinta /* s N„pp„in jota painamalla tultiin */ ) /* ** Aliohjelmalla etsit„„n ja selaillaan tietyn ehdon t„ytt„vi„ ** j„seni„ kerhosta. ** ** Sy”tt”: P„„tteelt„ ** Tulostus: N„ytt””n ** Kutsuu: kysy_kentat_ja_etsi ----------------------------------------------------------------------------*/ { if (!kerho->jasenia) return; printf("\n\n\n\n"); printf("%c. Etsi j„senen tiedot\n",valinta); printf( "=======================\n"); printf("\n"); printf("Nykyinen henkil”:\n"); kysy_kentat_ja_etsi(kerho,EI_KORJAILUA); } /****************************************************************************/ void /* */ tulosteet( /* */ Kerho_tyyppi *kerho ,/* s,t Kerho josta etsit„„n */ char valinta /* s N„pp„in jota painamalla tultiin */ ) { int i; printf("\n\n\n\n"); printf("%c. Tulosteet\n",valinta); printf( "=============\n"); printf("Toimii toistaiseksi vain n„yt”lle\n\n"); printf("-----------------------------------------------------------\n"); for (i=0; ijasenia; i++) { printf("#%03d\n",i+1); tulosta_jasen(stdout,kerho->jasenet[i]); printf("\n"); } printf("-----------------------------------------------------------\n"); odota_jotakin(); } /****************************************************************************/ void /* */ tietojen_korjailu( /* */ Kerho_tyyppi *kerho ,/* s,t Kerho jota korjaillaan */ char valinta /* s N„pp„in jota painamalla tultiin */ ) /* ** Aliohjelmalla etsit„„n, selaillaan ja korjaillaan tietyn ehdon ** t„ytt„vi„ j„seni„ kerhosta. ** ** Sy”tt”: P„„tteelt„ ** Tulostus: N„ytt””n ** Kutsuu: kysy_kentat_ja_etsi ----------------------------------------------------------------------------*/ { printf("\n\n\n\n"); printf("%c. Tietojen korjailu\n",valinta); printf( "=====================\n"); printf("\n"); printf("Nykyinen henkil”:\n"); kysy_kentat_ja_etsi(kerho,KORJAILU); } void paivita_jasenmaksuja(Kerho_tyyppi *kerho,char valinta) { printf("\n\n\n\n"); printf("%c. P„ivit„ j„senmaksuja\n",valinta); printf( "========================\n"); ei_toimi(kerho); } /****************************************************************************/ void paamenu(Kerho_tyyppi *kerho) /* ** Funktiolla tulostetaan ohjelman p„„menu. ** Tulostus: N„ytt””n ----------------------------------------------------------------------------*/ { printf("\n\n\n\n\n"); printf("J„senrekisteri\n"); printf("==============\n"); printf("\n"); printf("Kerhossa %s on %d j„sent„.\n",kerho->kerhon_nimi,kerho->jasenia); printf("\n"); printf("Valitse:\n"); printf(" ? = avustus\n"); printf(" 0 = lopetus\n"); printf(" 1 = lis„„ uusi j„sen\n"); printf(" 2 = etsi j„senen tiedot\n"); printf(" 3 = tulosteet\n"); printf(" 4 = tietojen korjailu\n"); printf(" 5 = p„ivit„ j„senmaksuja\n"); printf(" :"); } /****************************************************************************/ int /* */ paavalinta( /* 0 = jatketaan, 1 = valittu lopetus */ Kerho_tyyppi *kerho /* s,t Kerho 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; while (1) { paamenu(kerho); nappain = odota_nappain("?012345",0,VAIN_ISOT); switch (nappain) { case '?': avustus(kerho,nappain); break; case '0': return 0; case '1': lisaa_uusi_jasen(kerho,nappain); break; case '2': etsi_jasenen_tiedot(kerho,nappain); break; case '3': tulosteet(kerho,nappain); break; case '4': tietojen_korjailu(kerho,nappain); break; case '5': paivita_jasenmaksuja(kerho,nappain); break; default : printf("N„in ei voi k„yd„!\n"); return 1; } } } /****************************************************************************/ void ohjeet(void) /* Funktiolla tulostetaan ohjelman k„ytt”ohjeet ** ** Tulotus: N„ytt””n ----------------------------------------------------------------------------*/ { logo(); printf("\n"); printf("T„ll„ ohjelmalla yll„pidet„„n kerhon j„senrekisteri„.\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"); } int main(void) { Kerho_tyyppi kerho; char *viesti; alusta_help("kerho"); ohjeet(); if ( (viesti=lue_kerho(&kerho)) != NULL ) { printf("%s\n",viesti); return 1; } paavalinta(&kerho); if ( (viesti=talleta_kerho(&kerho)) != NULL ) { printf("%s\n",viesti); return 1; } kiitokset(); vapauta_help(); return 0; }