previous next Up Title Contents Index

21.4 Kerhorekisterin tarkistukset?

Entä kerhon jäsenrekisteri. Ohjelma on jo kirjoitettu hyvin pitkälle, eikä tarkistuksiin ole puututtu juuri lainkaan. Merkkijonoina lukemisen ansiosta ohjelmaa ei voida kaataa väärillä syöttötiedoilla, mutta rekisterin kannalta virheellisiä tietoja, kuten samoja nimiä ja sotuja, voi esiintyä useita, numeerisiksi tarkoitetuissa kentissä voi olla kirjaimia jne. Osa ominaisuuksista voi olla toivottujakin.

Mutta entäpä jos tiettyjä tarkistuksia haluttaisiin kuitenkin tehdä. Pitääkö koko ohjelma kirjoittaa uusiksi?

Ei! Kriittinen on tietenkin vain kysy_tiedot. Mikäli aliohjelma on toteutettu ilman silmukkaa, kysymällä kukin tieto omalla lauseellaan, niin siitä sitten vaan lisäämään tarkistus kunkin lukemisen ympärille. Tämä on aivan hyvä ratkaisu, mikäli kenttiä on vähän tai kentät ovat eri tietotyyppiä.

	int cNaytto::kysy_tiedot(cJasen &jasen)
	{
	. . .
	  do {
	    cout << "Hetu          >"; getline(cin,apujasen.hetu,'\n');
	    poista_tyhjat(apujasen.hetu);
	    if ( apujasen.hetu == "q" ) return 1;
	  } while ( tarkista_hetu(apujasen.hetu) );
	. . .
	 do {
	   cout << "Jäsenmaksu mk >"; cin.getline(N_S(jono),'\n');
	   if ( strcmp(jono,"q") == 0 ) return 1;
	   apujasen.jmaksu = jono_doubleksi(jono,"%lf");
	 } while ( (apujasen.jmaksu < 0) || ( 500 < apujasen.jmaksu ) );
Voiko tarkista_hetu edes selvitä tarkistuksista? Osasta voi, mutta entäpä jos esimerkiksi hetu pitää olla erisuuri kullekin jäsenelle. Aliohjelma ei tiedä mihin hetuja verrattaisiin! Siis aliohjelmalle pitäisi parametrina viedä tietysti myös käsiteltävä kerho tai ainakin jäsenistö.



previous next Up Title Contents Index