/* kerhomain.cpp */ /* ** Kerho-ohjelman pääohjelma ** ** Tekijät: Vesa Lappalainen ** Ohjelmointikurssit 1991-1997 ** Tehty: 20.12.1991 ** Muutettu 19.12.1993/vl ** 06.12.1995/vl - C++ versio ** Mitä muutettu: avustus ** Muutettu 06.12.1995/vl ** Mitä muutettu: tehty C++ versio ** Muutettu 07.12.1995/vl ** Mitä muutettu: tehty document/view C++ versio ** Muutettu 09.12.1995/vl ** Mitä muutettu: jaettu osiin ** Muutettu 11.01.1996/vl ** Mitä muutettu: + argv-käsittely jotta voidaan käynnistää: ** kerho kelmit ** onnistuu lue_tiedosto(argv[1]), koska standardi ** takaa että argv[1] == NULL tai osoitin merkkijonoon ** Muutettu 20.01.1997/vl ** Mitä muutettu: kerho ja jäsenistö eri luokiksi ** Muutettu 03.04.2000/vl ** Mitä muutettu: const char *:iä poistettu ** poistettu ystävyyksiä ** kerholle lisää töitä ** Muutettu 20.01.2001/vl ** korjattu bugi argumenttien käsittelyssä ** ** ** Projektiin mukaan: ** ** kerhomain.cpp - tämä tiedosto ** jasen.cpp - yksittäisen jäsenen käsittely ** jasenet.cpp - jäsenistön käsittely ** kerho.cpp - kerhon käsittely kokonaisuudessaan ** naytto.cpp - näyttöön liittyvä kerhon käsittely ** muunnos.c - jasenen vaatimat muunnokset merkkijonoksi ja takaisin ** CPP\ALI\help.c - avustusten käsittely ** CPP\ALI\ioali.c - yleiskäyttöiset käyttöjärjestelmä-riippuvat io-rut. ** CPP\ALI\mjonot.c - yleikäyttöisiä aliohjelmia merkkijonojen ** käsittelyyn ** CPP\ALI\pvm.c - päivämäärän käsittely ** CPP\ALI\vstring.cpp- c++ -merkkijonoluokka (korvike std-versiolle) ** (jollei ole jo mukana systeemissä) ** CPP\ALI\mjonotpp.cpp - mjonot++ string-luokan käsittelyyn ** CPP\ALI\lyhenne.c - hoitaa lyhenteiden käsittelyn ** ** Lisäksi tarvitaan tietysti otsikkotiedostot: ** ** help.h ** pvm.h ** kentta.h ** jasen.h ** jasenet.h ** kerho.h ** naytto.h ** muunnos.h ** CPP\ALI\ioali.h ** CPP\ALI\mjonot.h ** CPP\ALI\string - jollei ole virallista string-luokkaa ** CPP\ALI\mjonotpp.h ** CPP\ALI\lyhenne.h ** CPP\ALI\wout.h - konsolille tulosta tietovirta ** ** Jos halutaan käyttää rivieditointia, pitää projektiin laittaa ** lisäksi ** CPP\ALI\console.c - konsolia kästtelevät funktiot ** CPP\ALI\wout.cpp - konsolille tulostava tietovirta ** CPP\ALI\editlue.c - korvaa lue_jono_oletuksen lukemisen ** ** Samalla pitää määrietllä kääntämiseen vakio USE_CONSOLE ** Tarvitaan tietysti vielä h-tiedosto ** CPP\ALI\console.h ** ** ** Luokkahierarkia: ** ** string - yleinen merkkijonoluokka ** cKentta - yleinen kenttätyyppi + sen perilliset ** cJasen - jäsenen ominaisuudet (ks. jasen.cpp ja jasen.h) ** cJasenet - jäsenet kokoava tietorakenne (ks. jasenet.cpp ja jasent.h) ** cKerho - kerhon käsittely kokonaisuudessaan ** cNaytto - käyttöliittymää ylläpitävä luokka (sisältää osoittimen ** kerhoon, ks. naytto.cpp ja naytto.h) ** ** Jos tämä ohjelma halutaan kirjoittaa muulle kuin standardipäätteelle, ** esim. johonkin graafiseen käyttöjärjestelmään, pitää kirjoittaa uusiksi ** ** naytto-luokka - joutuu täydelliseen remonttiin, voi jopa ** tulla lisää toimintoja, kuten "Avaa uusi näkymä" ** kerhomai.cpp - tämä pääohjelma ** ioali.? - korvautuu todennäköisesti käyttöliittymän vast. ** rutiineilla */ #include "naytto.h" int main(int argc, char *argv[]) { cKerho kerho; cNaytto naytto(&kerho,argv[0]); naytto.ohjeet(); string tiedosto; if ( argc > 1) tiedosto = argv[1]; if ( naytto.lue_tiedosto(tiedosto) != 0 ) return 1; naytto.paavalinta(); if ( naytto.talleta() != 0 ) return 2; naytto.kiitokset(); return 0; }