Goal: to learn to use arrays
Task: In Finnish Lotto there is 39 numbers, and seven (7) numbers are
drawn at randomly. Create a console application that drawn seven numbers out of
39 and shows numbers in order in the console. Example: 1, 10, 20, 21, 37, 38,
39. As a matter of course same number cannot occur. An user can select how many
drawns will be made, default is one (1).
ExtraNote: If you are really interested about random numbers, look this
"Computers are
Lousy Random Number Generators"
Additional task: In Viking Lotto six (6) numbers are drawn from 48, in your national lotto is drawn 5 from 90 or like, create also possibility for that. An user can select which Lotto he will play.
Learning goal: to create classes, to use classes
Create a class named Lotto, where two types (tyyppi) of lotto drawns can be made, types are Suomi and VikingLotto. Suomi is original Finnish Lotto where seven numbers from 39 will be drawned, VikingLotto is played around Nordic Countries and there is six numbers from 48 drawned. Create a method ArvoRivi for the class. When Tyyppi is set, change SuurinNro and NumeroLkm to the right values.
Create a console application for testinng Lotto class.
Oppimistavoite: tutustuminen Windows Forms käyttöön ja COM-komponenttien mahdollisuuksiin
Tehtävä: Tee oma MP3 soitin käyttämällä DirectX mukana tulevaa kirjastoa quartz.dll. Käyttöliittymä WinFormsilla ja mahdollisimman simppeli. Tarvittavat kontrollit: textbox johon käyttäjä voi kirjoittaa musiikkitiedoston nimen ja painikkeet: Browse, Play/pause, Stop sekä lisäksi tilarivi (statusbar).
![]() |
![]() |
![]() |
Oppimistavoite: Dynaamiset taulukot, Hashtable, serialisointi
Tehtävä: Tee konsolisovellus joka aluksi kysyy käyttäjältä n-määrän asiakkaitten nimiä ja yhteystietoja (osoite), lisää tiedot hashtableen ja serialisoi tiedot tiedostoksi; lopuksi ohjelma lukee asiakkaitten tiedot serialisoidusta tiedostosta, lajittelee ne aakkosjärjestykseen nimen perusteella ja näyttää näytöllä kukin asiakas omalla rivillään. |
![]() |
Oppimistavoite: Luokkien ja olioitten luonti ja käsittely C#:lla
Tehtävä: | |
Oy Yritys Ab
tarvitsee yksinkertaista ohjelmaa kuukausipalkkojen laskentaa varten.
Yrityksellä on kolmenlaisia työntekijöitä: 1) vakituisia kuukausipalkkaisia 2) osa-aikaisia tuntipalkkaisia (tekevät kuukaudessa x tuntia) 3) "keikkamiehiä" (tekevät silloin tällöin urakkaluonteisesti, eli korvaus sovitaan) Alustavan analyysin perusteella on päätetty luoda oheisen kuvan mukainen luokkarakenne (huom suunnitelma ei ole vielä täydellinen). Tee olio-orientoitunut yksinkertainen konsolisovellus, joka laskee: 1) kunkin työntekijän kk-palkan 2) kuukauden koko palkkasumman Verotusta ja ns. palkan sivukuluja ei tässä vaiheessa huomioida. Sovelluksen tullaan myöhemmin lisäämään tietokanta, josta työntekijätiedot luetaan. Tee tässä vaiheessa testausta varten staattinen luokka dbYritys ja sille staattinen metodi HaeTyöntekijätTesti(). Mieti mikä olisi "järkevä" palautustyyppi metodille, helpon siirrettävyyden ja ylläpidettävyyden kannalta. Sovellus on tarkoitus myöhemmin sovittaa Windows, Web ja mobiili-ympäristöihin, joten erota toiminnallisuus (ns business-logiikka) ja käyttöliittymä (UI) toisistaan eli noudata MVC-mallia. |
![]() |
Oppimistavoite: WinForms perusteet, tärkeimmät kontrollit, luokkien/olioiden käyttö
![]() |
Tee oheisen
kaltainen käyttöliittymä yrityksen työntekijöitten palkanlaskentaa
varten (kts edellinen harjoitus). Käytä siis edellisen harjoituksen
luokkia, ja sovitaan että työntekijä on abstrakti-luokka joten käytetään
vain Vakituinen, OsaAikainen ja Keikkamies-luokkia Nimeä kontrollit käyttäen ns. unkarilaista notaatiota; eli esimerkiksi vasemmanpuoleisen ListBox-tyyppisen kontrollin nimi on lstTyöntekijät. Toiminnallisuudesta: - Listassa esitetään kaikkien työntekijöitten kokonimi ja ttnumero. - Painikkeella Hae Työntekijät ohjelma hakee työntekijätiedot tässä vaiheessa koodista ja lisää työntekijöitten nimet listaan (myöhemmin haetaan tietokannasta) - Kun käyttäjä napsauttaa listassa olevaa nimeä, työntekijän tiedot siirtyvät keskellä näkyviin tekstikenttiin. - Lisää-painike lisää uuden työntekijän (pakollisia kenttiä etunimi, sukunimi, ttnumero ja työsuhteen tyyppi - Päivitä-painikkeella muutetut arvot päivitetään vastaavaan olioon - Poista poistaa ko. työntekijän, kysytään kuitenkin varmistus "Haluatko todella poistaa..." - Laske palkkasumma laskee kuluvan kuukauden palkkasumman. |
Oppimistavoite: DLL- kirjaston luominen ja sen hyödyntäminen
Tehtävä: luo Windows-sovellus jolla loppukäyttäjä Pankkiiri voi laskea asuntolainan korot ja
lyhennykset. Pankkiiri syöttää seuraavat tiedot: lainapääoma euroina, laina-aika
vuosina ja vuosikorko esim 2,225%. Sovellus laskee lainan kuukausimaksun, joka
koostuu lyhennyksestä ja korosta.
Lainapääomaa lyhennettään kuukausittain lyhennyksellä. Lyhennys lasketaan
jakamalla lainasumma kuukausierien määrällä. Korko lasketaan kertomalla
kuukausikorko (vuosikorko/12) sen hetkisellä lainapääomalla.
Käyttöliittymä toteutetaan WinForms-lomakkeilla. Koska sovelluksen pitää olla:
a) siirrettävä b) ylläpidettävä, niin päätettiin luoda PankkiBL-DLL, joka sisältää
Lainan kuukausimaksun laskentalogiikan. DLL sisältää staattisen luokan
LainaLaskenta, ja jolla on staattinen metodi LaskeKuukasiMaksut().
Toteuta ensin PankkiBL.dll ja testaa se TestiPenkki-konsolisovelluksella että se
laskee kuukausimaksun oikein-Luon sen jälkeen näyttävä ja käyttäjäystävällinen
Windos-sovellus, joka
hyödyntää dll:ää.
Oppimistavoite: MVC-mallin toteutus Windows-sovelluksessa Windows-datan esittämiskomponenttien käyttö ja BusinessLogiikka-luokan käyttö
Tehtävä: Tee oheisen kuvan mukainen käyttöliittymä ja tarvittava
toiminnallisuus yrityksen Asiakasrekisterin ylläpitoon. Kutakin Yritystä sovelluksessa vastaa luokan Yritys-ilmentymä.
Yritys-luokalla on seuraavat julkiset jäsenmuuttujat: Ytunnus, nimi, kaupunki ja liikevaihto
euroina (double).
Mieti & suunnittele millaista kokoelma, taulukkoa tms kannattaisi käyttää
Yritysten-tietojen varastointiin sovelluksessa.
Erota käyttöliittymä, sovelluksen kontrolli ja tietosisältö toisistaan, eli
suunnittele ja toteuta sovellus
MVC-mallin
mukaisesti.
Luo myös AsiakasRekisteri-niminen luokka jolla on staattinen
metodi TuoAsiakastiedot. Sovellus käynnistettäessä asiakastiedot tuodaan
automaattisesti em. metodilla DataGridView:iin.
Toteuta painikkeiden Näytä lukumäärä ja Laske liikevaihto toiminnallisuus.
Suodatus toiminto toteutetaan myöhemmin.
Oppimistavoite: Tietokannan tietojen lukeminen/muuttaminen.
Tehtävä: Tee Windows-sovellus jolla käyttäjä voi hakea Access-tietokannasta
SMLiiga09 taulusta Pisteet kaikki tiedot lomakkeelle.
Käyttäjä voi myös muokata tietoja
ja tallentaa muutokset tietokantaan painikkeen Update-toiminnolla.
Oppimistavoite: Tietokannan tietojen lukeminen OLEDB-rajapinnan avulla tietokannasta DataReader/DataSet-objekteilla
Tehtävä 1a) Tee konsoli-sovellus jolla käyttäjä voi näyttää
Access-tietokannan SMLiiga09.accdb taulun XXX tiedot konsolilla.
Oletusarvoisesti sovellus hakee tiedot ja esittää ne siinä järjestyksessä kun ne
ovat taulussa. Käytä DataReader-objektia.
Tehtävä 1b) Jos käyttäjä antaa käynnistysparametrin -sort tiedot lajitellaan
sukunimen mukaan nousevaan järjestykseen.
Tehtävä 2a) Tee konsoli-sovellus jolla käyttäjä voi näyttää Access-tietokannan SMLiiga09.accdb taulun XXX tiedot konsolilla. Sovellus hakee tiedot ja esittää ne aakkosjärjestyksessä sukunimen mukaan kun ne ovat taulussa. Käytä DataSet/DataTable-objekteja.
private enum myDataStores{Code,CSV,MDB,SQLServer,XLS,XML}
Luo formille metodi private void SetDataToGrid(myDataStores ds)jolla asetat DataGridView tiedot muuttamalla sen DataSeource-ominaisuutta.
Toteuta sovellukseen asiallinen virhekäsittely, eli jos haku ei onnistu, niin sovellus ei saa kaatua vaan se ilmoittaa virheestä lomakkeen alareunassa olevalla toolStripStatusLabel:ssa, siinä kaiutetaan siis ilmoitus onnistuneesta hausta sekä mahdolliset virheilmoitukset.
![]() |
|
![]() |