Distance tasks

# 1 / Week 36

Reading data from a file

Learning goal: file reading, exception handling

Create a console application that reads numbers from a file. In the file each number is own row, and there can be rows from one to about a thousand. Sort numbers from smallest to biggest and show them in a console each number in own line.  Create and name a test textfile yourself, and place the file for example to c:\temp folder. The file name must be defined in the starting argument of the program. Use normal try-catch-finally -exception handling.

Reading data from console and writing to a file

Learning goal: handle user inputs, file writing

Create a console application that reads positive numbers that an end user gives as long as user want to stop giving numbers. If the end user gives a number bigger than 0, put the number to an array. If user gives number zero we will end the reading. If user gives a number below zero or if the number is not valid number, the application will give a warning.
After the user has ended giving number, the application writes numbers to a file named in the starting argument of the program , each number to own row. Use normal try-catch-finally -exception handling, no other error handling needed yet.

# 2 / Week 37

Lotto with Class

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 that uses Lotto class.

# 3 / Week 38

Matikkanero

Oppimistavoite: GUIn ja businesslogiikan sisältävän luokan kytkeminen

Tee Windows-sovellus, jolla loppukäyttäjä voi tehdä seuraavat peruslaskutoimitukset:
Summa, Erotus, Tulo, Osamäärä ja Potenssiin korotus.
Sovelluksessa on kaksi tekstikenttä johon arvot voidaan syöttää, yksi valintalista josta laskutoimitus valitaan ja yksi selite, jossa laskutoimituksen tulos esitetään.
Toteuta tämän matikkaneron toiminnallisuus luokalla MatikkaNero, joka on oheisen speksin mukainen.
Muista että nollalla ei saa jakaa!

# 4 / Week 39

Lotto tarkastaja (Lotto checker)

Oppimistavoite: saada rutiinia tiedostojen käsittelyyn, tavallisimpien Windows-kontrollien käsittelyyn.

Lotto-rivejä on arvottu tiedostoon n kappaletta. Käytä aiemmin luomaasi sovellusta rivien arpomiseen ja tiedostoon tallentamiseen. Tiedoston formaatti on seuraava:

38/2005
1 19 20 21 37 38 39
12 14 16 20 22 25 39
...

Haluamme tarkistaa olemmeko voittaneet ja kuinka paljon. Luo Windows sovellus jolla voi tarkistaa arvotut rivit. Lomakkeelle käyttäjä syöttää viikon oikeat lottonumerot ja voittoluokkien voittosummat, käyttäjä voi kirjoitta tarkistettavan tiedoston nimen tai valita sen tiedostojen vakiovalintalomakkeella. Sovellus laskee sijoitetut eurot ja mahdolliset voitot ja ilmoittaa tuloksen käyttäjälle.

In English

We have numbers of drawns of Finnish Lotto in a file. Use your application that you made earlier to create the file. The file format is above. We have to check have we win and how much.  Create a Windows application to check our drawns. In a form an user puts the right Lotto numbers of the week and how much you would win if you had seven, six, five etc right. The application checks a file that an user gives, use . In file selection the user can select a file with standard Open -windows. The application counts how much you would win or lose. 
You can find the right numbers of the Finnish Lotto for example from here: www.veikkaus.fi and select Tulokset. A Lotto drawn costs 60 cents.

# 5 / Week 39

Hälyttävä kello

Oppimistavoite: käsitellä useampi lomakkeista sovellusta, tapahtumakäsittelijöiden käyttö

Tehtävänä on laatia Windows-sovellus Kello, joka hälyttää haluttuna ajankohtana. Kun ohjelma käynnistetään, kello sijoituu  automaattisesti näytön vasempaan yläkulmaan ja näyttää kuluvaa kellonaikaa. Kellotaulun (joko digitaalinen tai analoginen) päällä hiirellä napsautettaessa:
1) vasen hiiren painike: avaa About-lomakkeen
2) hiiren oikea: lopettaa ohjelman suorittamisen
3) hiiren vasen + Vaihto (Shift): avataan hälytysajan määritykseen tarkoitettu lomake kellon päälle.

Kun hälytysaika asetetaan, ilmestyy se näkyville kellon otsikkoriville; jollei hälytysaikaa ole asetettu otsikkorivi on tyhjä. Kellon saavuttaessa asetetun hälytysajan avataan näytölle hälytys-lomake, joka suurentuu koko näytön kokoiseksi 10 sekunnin kuluessa jollei käyttäjä reagoi lomakkeeseen. Hälytys-lomakkeella oleva teksti on automaattisesti lomakkeen keskelle. Kun hälytys-lomaketta napsautetaan hiirellä, suljetaan se pois näytöltä. About-lomakkeella on lyhyet käyttöohjeet ja tekijätiedot. Käytä projektissa seuraavan nimisiä lomakkeita: frmKello, frmHalytysAika, frmHalytys ja frmAbout.

Bonustehtävä:  Tasan minuutin kuluttua ohjelman käynnistämisestä ohjelma muuttuu pikkuruiseksi kuvakkeeksi Windowsin työkalurivin oikeaan reunaan.

#6 / Viikko 40

Pieni Viinikellari

Oppimistavoite: oppia käyttämään DataAdapter ja DataSet -olioita

Tehtävänä on laatia oheisen kuvan mukainen Windows-sovellus tiedon hakuun Wines-tietokannasta.
Luo toiminnallisuus Get Data ja Save Data -komentopainikkeille. Katso apua Holznerin kirjasta luvusta 9, sivut 343-358.

#7 / Viikko 41

DataReader asiakastietojen lukemiseen

Oppimistavoite: kerrata DataReader-objektin käyttöä

Tee Windows-sovellus jolla voi katsoa asiakastietoja Customers.mdb kannan Company -taulusta. Lue kaikki tietueet ja kirjoita Name-kentän tiedot listboxiin. Kun käyttäjä klikkaa yrityksen nimeä listboxissa, näytä yrityksen kaikki tiedot textboxeissa. Suunnittele ja toteuta käyttöliittymä itse. Käytä Microsoft.Jet.4.0 provideria.

#8 / Viikko 42

Korttipakka

Oppimistavoite: oppia käyttämään valmista komponenttia, komponentin olioita ja niiden ominaisuuksia

Luo kuvasarjan kaltainen Windows-sovellus, jolla voi selata korttipakan kortteja läpi. Harjoituksessa tarvitset tämän DLL-kirjaston .

Vinkkejä:
- pöydällä on kaksi CardCntl -kontrollia ja "näkymän" Deck-objekti eli korttipakka
  private HookWare.Gaming.Cards.CardCntl myDeck;
  private HookWare.Gaming.Cards.Deck Pakka;

- lomakkeen latauksen yhteydessä pakkaan lisätään kortit
  HookWare.Gaming.Cards.Card[] myCards = new Card[6] { new Card(Rank.Ace, Suit.Clubs ) ...

- aseta kontrollien ominaisuudet ja luo vasemman puoleiselle kontrolille tapahtumankäsittelijä Click
  //tapahtumakäsittelijä
   myDeck.Click += new System.EventHandler(Napsautus);

- tässä osa vasemman puoleisen kontrollin ominaisuuksia (opiskele loppu VS:ssä)
  //nostopakka
   myDeck = new CardCntl();
   myDeck.Back = HookWare.Gaming.Cards.CardBacks.LINES_ISLAND;
   myDeck.Card = null;
   myDeck.Location = new System.Drawing.Point(10, 9);
   myDeck.Name = "cardDeck";
   myDeck.Size = new System.Drawing.Size(85, 111);
   ...

- tarvitset Card -objektia pakan napsautuksen yhteydessä eli
  //Draw a Card from the Deck
  Card Nostettu = Pakka.Draw();
  ...

#9 / Viikko 43

SM-liigan outojen olioitten tallentaminen

Oppimistavoite: opetella ja/tai kerrata kuinka tietoja voidaan kirjoittaa sovelluksesta eri tallennuspaikkoihin, enum

Tee aiemmin tehtyyn Windows-sovellukseen OudotOliot SMLiigassa toiminnallisuus jolla käyttäjä voi tallentaa luomiensa olioitten tiedot. Käyttäjä voi valita mihin tiedot tallennetaan:
- näytölle (ei siis varsinaisesti tallenna mihinkään sic)
- tekstitiedostoon (järjestyksessä sukunimi, etunimi, seura, siirtohinta - tiedot erotetaan toisistaan puolipisteelllä)
- XML-tiedostoon (käytä DataSettiä!)
- tietokantaan (tallenna haluamaasi tietokantaan esim Access, SQL Server, mySQL; tietokannan tiedot voi olla vakioina Tallennus-luokassa)

Tee tallennusta varten oheisten kuvien mukainen lomake frmTallennus sekä luokka Tallennus. Se sisältää tarvittavan toiminnallisen logiikan sekä oheisen esimerkin mukaisen arvotaulukon eli enum -määrittelyn. Käytä samaa arvotaulukkoa myös lomakkeella.

public enum Tallennuspaikka
{Määrittelemätön, Näyttö, Serialisoi, Tekstitiedosto, XMLtiedosto, Tietokanta}

Bonustehtävä 1: Luo mahdollisuus tallentaa olioitten tiedot myös serialisoimalla, katso serializing aiheeseen lisävinkkiä esim. Holznerin kirjasta s 212-215.

Bonustehtävä 2: olisihan se nyt kiva kun tiedot on jossain tallessa, niin myös lukea ne takaisin sovellukseen, joten tee toiminnallisuus lukea tiedot käyttäjän valitsemasta tietolähteestä.

#10 / Viikko 43+

Oma tietokanta sovellus

Oppimistehtävä: harjoitella ADO.NETin käyttöä ja ulkoistaa osaamista uuteen sovellustarpeeseen

Luo tietokantapohjainen sovellus, jolla voidaan lukea, päivittää, luoda uutta ja poistaa tietoa=tietueita tietokannasta ADO.NETin avulla. Voit valita aihealueen mistä sovelluksen vapaasti vaikkapa jostain omaan harrastuksiisi liittyen tms. Ainut vaatimus sisällön suhteen on että keksit yksilöllisen sovelluksen. Luo tarvittava tietokanta ja sille tarvittavat taulut; tietokanta voi olla Access, SQL Server tai muu relaatiokanta. Vaatimus toteutuksen suhteen on että käytät käyttöliittymän ja tietokannan välissä erillistä BL-luokkaa kuten oheisessa kuvassa.
Huom. Poikkeuksellisesti tämä etätehtävä palautetaan ennen harjoituskoetta, sillä siitä saa bonuspisteitä ohjelmointikokeeseen. Palauta työsi sähköpostilla zippaamalla projekti, liitä mukaan tekstimuotoinen esitys jossa kerrot sovelluksen tarkoituksen, lyhyesti sen käytöstä (jollei ilmene käyttöliittymästä), suunnitteluperusteista db vaatimuksista, luokkarakenteesta jne.

#11 / Viikko 44

Yksinkertainen Webbi-laskin

Oppimistavoite: kontrollien luonti, tapahtumakäsittely ja field validator-kontrollien käyttö

Tee kaksi yksinkertaista Web-laskinta: tee ensin laskin pelkästään editorilla ja C# skriptaamalla, eli luo kontrollit ja toiminnallisuus kirjoittamalla kaikki itse. Tee toinen laskin Visual Studiolla WebFormsilla. Sivulla on kaksi tekstin syöttökenttää johon käyttäjä voi syöttää haluamansa luvut, lisäksi on viisi toimintopainiketta peruslaskutoimituksille  : + - * / ^. Kun käyttäjä napsauttaa jotain em. painikkeista suoritetaan laskutoimitus ja esitetään tulos. WebForms versiossa käytä field validator -kontrolleja joilla tarkistat etukäteen että tekstikentissä on kelvolliset arvot.

#12 / Viikko 45

Yksinkertainen autentikointi Web-sivulle, malli "hardcoded"

Oppimistavoite: sivujen käsittely, session -olio

Luo yksinkertainen Webbi-sovellus jossa käyttäjä autentikoidaan ennen kuin hän voi käyttää varsinaisia suojattuja webbi-sivuja. Joten tee web-sovellus, jossa on kolme sivua:

  1. Sovelluksen aloitussivuna on Tervetuloa-sivu, jolle kaikki pääsevät. Sivulla on painike Login, josta käyttäjä käynnistää autentikoinnin.
  2. Login-sivu, jossa tekstilaatikot käyttäjänimen ja salasanan syöttöä varten.
    Kovakoodaa hyväksytyksi yhdistelmäksi: käyttäjätunnus "oppilas" ja salasana "salippo" ja joku toinen vain sinun tietämäsi yhdistelmä. Tallenna käyttäjänimi ja login aika Session-olioon
    Vinkki: kts MSDN:stä kohdat 1) Session State 2) Page and Application Context in Web Forms Applications.
  3. Suojattu sivu vain autentikoidulle käyttäjille, näytä sivun ylälaidassa käyttäjänimi, login aika ja yksilöllinen SessionID

#13 / Viikko 45

tulossa datasidonnainen komponentti Webissä...

#14 / Viikko 46

Autentikointi tietokannasta

Oppimistehtävä: harjoitella autentikoinnin logiikkaa, oman luokan luomista ja ulkoistaa osaamista Windows- että Web-sovelluksiin.

Tee Windows-sovellus, jossa on toiminnallisuus jolla käyttäjä autentikoidaan sovellukseen. Luo sovellukseen kaksi lomaketta (Windows Form): autentikointi-lomake (frmLogin) ja päälomake (frmMain).
Kun sovellus käynnistetään, ilmestyy näytölle ensin autentikointi-lomake; jos autentikointi onnistuu siirrytään sovelluksen päälomakkeelle ja näytetään autentikoituneen käyttäjän käyttäjätunnus, etunimi ja sukunimi päälomakkeella.
Muita vaatimuksia:
- Tee autentikoinnin suorittava toiminnallisuus luokkaan JAMK.IT.IIO10500.Autentikointi. Kaikki tietokannan määrittelyt ja toiminnallisuus luokkaan. Luokalla on oltava metodi boolean Autentikoi(string userid, string password). Jo autentikointi onnistuu etunimi ja sukunimi voidaan lukea vain luku tyyppisistä attribuuteista.
- Käyttäjä voi koettaa kirjautua kolme kertaa ja jollei onnistu annetaan virheilmoitus ja suljetaan sovellus.
- Autentikointi tapahtuu Pubs-kannasta authors –taulusta: käyttäjätunnus kenttä au_id salasana kenttä phone. Käytä joko tätä tiedostoa tai SQL Serverin pubs-tietokantaa.

 

Lisätehtävä: Tee sama Web-sovelluksena. Käytä edellä luomaasi luokkaa ja tee kaksi WebForms-sivua: Main ja Login.  

 

Coming distance tasks...

Authentication in website from database

Create a ASP.NET application where an enduser has to authenticate before he or she can continue. So there must be at least four webpages:

  1. a welcome page where everybody can come and there is button where an enduser can authenticate.
  2. an authenticate page, where is textboxes for name and password, name and password are in db
  3. a secure page for authenticated user, the page also shows information of user (read from db) and a button or link where to user can go to a change data page.
  4. (optional) a page where an authenticated user can view and change his/her data in database

 

Back