DAT09VBA:n koe

DAT09 Harjoitusprojektit

Asenna ensin Java ja Jcreator.

Käy läpi Internetixin materiaali tehtävineen.

Palautettavat tehtävät

Extratehtävä 1) Testaa ja kommentoi koodi. Onko virheitä ja voitko korjata ne?

0) Muuta yksinkertaisen käyttöliittymäesimerkin pylväät allekkain vasemmalta oikealle.

1-3) Tee VBA:sta tutut tilavuuslaskuri, polttoainelaskuri ja pankkisimulaattori.

4) Tee appletti, joka kysyy suorakulmion pituuden ja leveyden ja piirtää sen piirtoalueen keskelle.

5) Tee appletti, joka kysyy painon ja pituuden, laskee ja tulostaa painoindeksin ja piirtää sen pylväänä normaaliviivaan nähden. Painoindeksi lasketaan kaavalla massa / pituus /pituus. Pituus ilmoitetaan metreinä, desimaalimerkki on piste. Muuttujat x, y, ja z täytyy muuttaa double-tyyppisiksi. Tulosta painoindeksi nimiöön (label). Toteuta if-rakeenteella toiseen nimiöön, onko esimerkkihenkilö yli-, ali-, vai normaalipainoinen.

6) Tee appletti, joka vastaa toiminnaltaan katetuottotaulukkoa. Aiheeseen liittyvät kaavat. Toteuta laskenta ja grafiikka omilla luokilla.

7a) Tee appletti, joka vastaa toiminnaltaan lainataulukkoa. Aiheeseen liittyvät kaavat.

7b) Tee appletti, joka vastaa toiminnaltaan lainataulukkoa. Aiheeseen liittyvät kaavat. Toteuta laskenta, tulostus ja grafiikka omilla luokilla. Tee eri painikkeet annuiteetille ja tasalyhenteiselle lainalle.

7c) Tee sovellus, joka laskee auton polttoaineen kulutuksen l/100 km ja polttoainekustannukset/km. Syöttötietona lomakkeessa on kilometrit, litrat ja litrahinta.

8) Tee editori. Lisää runkoon Leikkaa, Kopioi ja Liitä-painikkeet. Katso mallia esimerkistä 36..  Lisää tekstikenttä tiedostonimeä varten ja lisää painikkeet Avaa ja Tallenna. Katso mallia esimerkistä.

9) Lisää tai muuta editorin komennot valikkoon.

10) Selvitä ja raportoi ohjelman toiminta.

11) Selvitä ja raportoi ohjelman toiminta.

12) Tee ohjelma, joka käyttää tietokantaa ODBC-JDBC -rajapinnan kautta. Ohjelma voi olla konsolipohjainen ja SQL-komennoksi riittää "SELECT * FROM TAULU".

Ohjelmointiprojekti

Tee lomakeversiona ohjelma, joka kysyy työntekijän tuntipalkan ja työtunnit ma-pe. Sitten ohjelma laskee työviikon palkan. Lisää ohjelmaan ylityökorvaus: 9. ja 10. tunti 50%, siitä eteenpäin 100%. Yläraja 16 h.

Lisää painikkeet, joilla lomakkeen voi tyhjentää ja tallentaa.

Viikonpäivien työtunnit, palkka ja viikon kokonaispalkka kirjoitetaan tekstitiedostoon palkkalaskelma.html.

Html-tiedostossa tulee olla standardin mukaiset aloitus- ja lopetustagit (<html><head></head><body>, loppuun </body></html>). Otsikoksi tulee Palkkalaskelma. Seuraavalla riville tulostetaan tuntipalkka. Seuraavalle riville tulostetaan tekstit Viikonpäivä, tunnit ja  palkka. Seuraaville riveille tulostetaan päivät, tunnit ja palkat. Viimeiselle riville tulostetaan teksti Yhteensä ja tunnit ja palkka yhteensä. Esimerkki.

 

Muistion koodi.

 import java.io.*;
public class TiedostonKirjoitus {
public static void main(String[] args) {
int luku = 42;
System.out.print("Luon tiedoston");
FileWriter filew = null;
try {
filew = new FileWriter("tiedosto.txt"); // luodaan tiedosto
} catch ( IOException ex ) {
System.out.println("Virhe tiedoston luonnissa");
}
BufferedWriter buffw = new BufferedWriter(filew); // luodaan kirjoitusolio
try {
buffw.write("Moi siellä!"); // kirjoitetaan tiedostoon
buffw.newLine(); //rivinvaihto
buffw.write("Luku on "+ luku ); // kirjoitetaan tiedostoon
buffw.close(); // suljetaan tiedosto
} catch ( IOException ex ) {
System.out.print("Virhe tiedostoon kirjoitettaessa");
}
}
}

 

 

Yksinkertainen käyttöliittymäesimerkki

import java.applet.*; // Applettiluokat
import java.awt.*; // Painikkeet, tekstikentät ym.
import java.awt.event.*; // Tapahtumien käsittely

public class Kayttoliittyma extends Applet implements ActionListener {

TextField tx, ty; // Määritellään oliot ja muuttujat
Label lz;
Button blaske;
int x, y, z;

public void init () { // Appletin alustus
add(tx = new TextField()); // Olioiden luonti
add(ty = new TextField());
add(lz = new Label(""));
add(blaske = new Button("Laske"));
x = 0; y = 0; z = 0; // Muuttujien alustus
blaske.addActionListener(this); // Kuuntelija painikkeelle laske
}

public void paint(Graphics g) { // Piirtoalusta
tx.reshape(20, 20, 100, 20); // Olioiden paikka ja koko
ty.reshape(20, 40, 100, 20);
lz.reshape(20, 60, 100, 20);
blaske.reshape(20, 100, 60, 40);

g.setColor(Color.red); // Suorakulmioiden väri ja piirto
g.fillRect(200, 300-x, 50, x);
g.setColor(Color.green);
g.fillRect(300, 300-y, 50, y);
g.setColor(Color.blue);
g.fillRect(400, 300-z, 50, z);
}

public void actionPerformed(ActionEvent e) { // Tapahtumankäsittelijä
if (e.getActionCommand().equals("Laske")){ // Jos painiketta laske painettu:
x=Integer.valueOf(tx.getText()); // Tekstien muunnos ja sijoitus
y=Integer.valueOf(ty.getText()); // muuttujiin x ja y
z=x+y; // Summa
lz.setText(String.valueOf(z)); // Summan muunnos ja sijoitus nimiöön lz
repaint(); // Piirtoalustan päivitys
}
}
}

Viivan piirto

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Viiva extends Applet implements ActionListener {
TextField tx1,tx2,ty1,ty2;
Button laske;
int x1,y1,x2,y2;
public void init () {
add(tx1 = new TextField());
add(ty1 = new TextField());
add(tx2 = new TextField());
add(ty2 = new TextField());
add(laske = new Button("Laske"));
x1=0;y1=0;x2=0;y2=0;
laske.addActionListener(this);
}
public void paint(Graphics g) {
g.drawString("X1",10,30);
g.drawString("Y1",10,50);
g.drawString("X2",10,70);
g.drawString("Y2",10,90);
tx1.reshape(30,20,100,20);
ty1.reshape(30,40,100,20);
tx2.reshape(30,60,100,20);
ty2.reshape(30,80,100,20);
laske.reshape(30,100,60,40);
g.drawLine(x1,y1,x2,y2);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Laske")) {
x1=Integer.valueOf(tx1.getText());
y1=Integer.valueOf(ty1.getText());
x2=Integer.valueOf(tx2.getText());
y2=Integer.valueOf(ty2.getText());
repaint();
}
}
}
Viivan piirto erillisellä luokalla
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
class Piirto extends java.applet.Applet {
private int x1,y1,x2,y2;
public void piirra (int xx1, int yy1, int xx2, int yy2, Graphics p) {
x1=xx1;
y1=yy1;
x2=xx2;
y2=yy2; p.drawLine(x1,y1,x2,y2);
}
}
public class Viiva extends Applet implements ActionListener {
TextField tx1,tx2,ty1,ty2;
Button Piirra;
int x1,y1,x2,y2;
public void init () {
add(tx1 = new TextField());
add(ty1 = new TextField());
add(tx2 = new TextField());
add(ty2 = new TextField());
add(Piirra = new Button("Piirrä"));
x1=0;y1=0;x2=0;y2=0;
Piirra.addActionListener(this);
}
public void paint(Graphics g) {
g.drawString("X1",10,30);
g.drawString("Y1",10,50);
g.drawString("X2",10,70);
g.drawString("Y2",10,90);
tx1.reshape(30,20,100,20);
ty1.reshape(30,40,100,20);
tx2.reshape(30,60,100,20);
ty2.reshape(30,80,100,20);
Piirra.reshape(30,100,60,40);
Piirto Kaavio = new Piirto();
Kaavio.piirra(x1,y1,x2,y2,g);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Piirrä")) {
x1=Integer.valueOf(tx1.getText());
y1=Integer.valueOf(ty1.getText());
x2=Integer.valueOf(tx2.getText());
y2=Integer.valueOf(ty2.getText());
repaint();
}
}
}
Koodirunko lainatehtävään:
/**
* @(#)Laina.java
*
* Laina Applet application
*
* @author * @version 1.00 2012/1/11
*/
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Laina extends Applet implements ActionListener {
TextField tpo, tai, tkk;
Button bann, btas;
int ai, i;
double po, kk, ly, ko, ann;
public void init () {
add(tpo = new TextField("150000"));
add(tai = new TextField("10"));
add(tkk = new TextField("5"));
add(bann = new Button("Annuiteetti"));
add(btas = new Button("Tasaerä")); bann.addActionListener(this);
btas.addActionListener(this);
}
public void paint(Graphics g) {
g.drawString("Pääoma:",5,33);
g.drawString("Aika:",5,53);
g.drawString("Korkokanta:",5,73);
g.drawString("Annuiteetti:",5,93);
tpo.reshape(70, 20, 70, 20);
tai.reshape(70, 40, 70, 20);
tkk.reshape(70, 60, 70, 20);
bann.reshape(70, 120, 70, 30);
btas.reshape(70, 150, 70, 30); g.drawString("Vuosi",150,13);
g.drawString("Lyhennys",200,13);
g.drawString("Korko",300,13);
g.drawString("Pääoma",400,13);
for ( i = 1 ; i <= ai ; i++ ) {
g.drawString(""+i,150,13+i*15);
g.drawString(""+ly,200,13+i*15);
g.drawString(""+ko,300,13+i*15);
g.drawString(""+po,400,13+i*15);
}
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Annuiteetti")){
po=Double.valueOf(tpo.getText());
ai=Integer.valueOf(tai.getText());
kk=Double.valueOf(tkk.getText());
repaint();
}
if (e.getActionCommand().equals("Tasaerä")){
po=Double.valueOf(tpo.getText());
ai=Integer.valueOf(tai.getText());
kk=Double.valueOf(tkk.getText());
repaint();
}
}
}

Linkit
Etusivu
Sun Developer Network
Java-ohjelmoinnin perusteet
Mureakuha
Aloittelijan Java-opas
Java-ohjelmointi
API documentation
The Java Tutorials
Pedacode
Java-tietokantaohjelmointi