Technical Computing. Technical Computing Team emazing 1

Vergelijkbare documenten
public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

IMP Uitwerking week 13

Een stoomcursus door Edgar de Graaf, november 2006

Game of Life in Java

Lessen Java: Reeks 3. David Blinder Jan G. Cornelis

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Imperatief Programmeren, derde deeltentamen (INFOIMP) 4 november 2005

Wat is een grafische gebruikersinterface (GUI)?

Tentamen Imperatief Programmeren

Ingebouwde klassen & methodes

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Zelftest Programmeren in Java

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Modelleren en Programmeren

Swing.

Opdracht 7a. Applicatiebouw 2014/2015


Abstracte klassen & Interfaces

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

Modelleren en Programmeren

NAAM: Programmeren 1 Examen 21/01/2011

Modelleren en Programmeren

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Programmeren in Java. De Java-GUI

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

Zo vind u hierin de volgende documentatie over de klasse Applet: +----java.awt.panel java.applet.applet

eerste voorbeelden in Java

Modelleren en Programmeren

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Kleine cursus PHP5. Auteur: Raymond Moesker

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Vraag 1: Software Levenscyclus

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Applicaties met een grafische user-interface

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Terugkoppeling 12

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Overerving & Polymorfisme

Modelleren en Programmeren

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Objectgeoriënteerd programmeren in Java 1

Een fragment wordt afgeleid van de basis klasse "Fragment".

Voor het bepalen van de getalswaarde van een string is een standaardmethode beschikbaar: n = Integer.parseInt(s);

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Modelleren en Programmeren

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Modelleren en Programmeren

Deel 1 : Gesloten Boek

Design principes.

NAAM: Programmeren 1 Examen 29/08/2012

INFITT01 - Internettechnologie WEEK 8

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Handleiding gebruik Basispoort XML Maker

X. Grafische elementen

Objectgericht programmeren 1.

In gesprek met externe toepassingen

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

Objectgericht programmeren 1.

1. Achtergrond. 1.1 Het M2M-Platform

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Hst 1 Klassen en methoden

1 Ontwerppatronen. 1.1 Het Command patroon

NAAM: Programmeren 1 Examen 31/08/2011

Deeltentamen Grammatica s en ontleden 22 december 2005

Design patterns Startbijeenkomst

Modelleren en Programmeren

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Lessen Java: Reeks pag. 1

De sheets zijn gebaseerd op met name hoofdstuk. D. Bell en M. Parr, Java voor studenten, Prentice Hall,

Java Objectgeoriënteerd ontwerpen en programmeren

JShell in Java 9 - De eerste officiële Java REPL

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

DOMjudge teamhandleiding

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur

Vakgroep CW KAHO Sint-Lieven

File Uploads met standaard ASP.NET

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Bijlage I. 2. Kies : Weergave op kleine pictogrammen. 3. Kies Java en de tab General : Kamer van Koophandel Nederland

Programmeren in Java 3

Design principes.


Dynamisch Programmeren. Het Rugzakprobleem

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

van C++ studiematriaal " diverse Java tutorials op WWW " Thinking in Java.

Extra oefening Probeer de voorbeeldprogramma s uit de LeJOS tutorial en de samples die bij de LeJOS software geïnstalleerd zijn.

Koksijde augustus 2008

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Oefeningen Java Oplossingen

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Werken met App Inventor. {1} Hallo wereld!

Versturen van vanuit een Delphi VCL toepassing

Labo 1 Programmeren II

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Programmeren (1) Examen NAAM:

APPLICATIEBOUW 7E COLLEGE: DPU3, OEFENEN TOETS. Onderdeel van SmartProducts

Transcriptie:

Technical Computing Beschrijving van het opgeleverde product Om de kaarten uit te lezen hebben we gebruik gemaakt van een TCP-server en Java framework. Van het framework hebben we een werkende smartcardreader gemaakt. De TCP-server hebben we niet zelf gemaakt. Deze hebben we gekregen om de applicatie van de smartcardreader te testen. De reader is verbonden met de TCP-server. Deze verbinding komt tot stand door een TCP socket. Sockets worden gebruikt om te communiceren tussen applicaties via het netwerk of het internet. De smartcardreader kan kaartnummers lezen via de TCP-server. Deze TCP-server kan ook een dummycode versturen. Hierbij wordt hetzelfde gedaan als wanneer er een smartcard wordt gescand, alleen hebben we dan geen echte smartcardreader nodig om de applicatie te testen. De kaartnummers van de smartcards zijn uniek en bestaan uit 8 bytes en een afsluit byte. Door middel van de Refresh -button kunnen de ingelezen kaartnummers die in de lijst staan worden verwijderd en staat er weer een lege lijst. Aan het gegeven framework hebben we ook nog extra functies toegepast voor een hogere beoordeling. Een van de extra functies is het toevoegen van de datum en tijd waarop een kaartnummer is ingelezen. Een andere extra functie is de Save -button. De ingelezen kaartnummers kunnen nu worden opgeslagen. Beschrijving van de toepassing van smartcards Als de klant een keuze heeft gemaakt uit de collectie en zijn maten wil scannen, worden deze opgeslagen op een smartcard die de klant daarna krijgt. Als het een nieuwe klant is moet hij bij de counter zijn gegevens opgeven zodat hij geregistreerd wordt in het systeem. Als de klant de volgende keer weer in de winkel komt, hoeft hij niet meer in de bodyscan, tenzij de maten zijn veranderd. Hierdoor gaat het winkelproces sneller. Hoe zijn we als team te werk gegaan? Wij hebben besloten om de projectopdrachten te verdelen. We hebben deze opdracht dus niet met z n allen gemaakt. Vidjai is aan deze opdracht begonnen en heeft steeds tussentijds zijn bevindingen met de groep gedeeld. Bij het maken van de opdracht zaten we wel met z n allen bij elkaar aan het project. Ieder deed zijn deel van het project. Af en toen lieten we wat zien als we iets af hadden of als we iets niet snapten en gaven er uitleg bij. 1

Korte reflectie per teamlid Vidjai Kalloe Ik dacht eerst dat het een onmogelijke opdracht voor mij zou zijn. Omdat ik het toch interessant vond, heb ik voorgesteld om deze opdracht te gaan maken. Ik had wel hulp nodig van mijn teamgenoten en docenten, want anders zou ik er helemaal niet uitkomen. Het samenwerken binnen het projectgroepje ging erg goed. Ik vond dat alles wel goed is gegaan, er hebben zich geen problemen opgedaan, behalve dat ik er soms niet uit kwam en dat ik dan hulp nodig had van anderen. Hierdoor hebben we het deels gezamenlijk gemaakt. Met deze opdracht heb ik meer geleerd over het programmeren in JAVA, maar alsnog heb ik er wel moeite mee. Ik vond het een leuke opdracht om te doen. Door deze opdracht te maken heb ik een beetje kunnen zien wat TC inhoud, want ik wilde misschien wel de richting TC kiezen. Mijn voorkeur gaat nog steeds uit naar SNE. Maarten Lapére TC is één van de richtingen die mij het meest aanspreken (samen met SE en GD), omdat ik erg van programmeren houd. Daarom heb ik er ook voor gekozen om Vidjai zo veel mogelijk te helpen bij deze opdracht. Het was leuk om hier samen aan te werken en ik heb een paar interessante nieuwe dingen geleerd over JAVA, bijvoorbeeld hoe je moet schrijven naar en lezen van een extern tekstbestand. Django Drost De colleges van Technical Computing waren in mijn optiek interessant. Het is waarschijnlijk de meest technische richting binnen de ICT en dat hebben we gemerkt. Het ontwikkelen van de applicatie was ondanks de onderbouwing en theorie moeilijk. Gelukkig hebben we door steeds samen de problemen te bespreken uiteindelijk een goed werkende applicatie kunnen maken. Bovendien heb ik geleerd hoe het nou eigenlijk achter de schermen werkt en eruit ziet bij het uitlezen van een SMART-card en dat zie je overal in de samenleving terug. Joep van der Ben Het was een mooie opdracht, waar je helaas niet met de hele groep aan had kunnen werken. Gelukkig heeft Vidjai het grootste deel in handen genomen, en met wat hulp van de rest zijn we tot een mooi resultaat gekomen. Voor mij zaten er wel een aantal leer momenten in zoals het verbinden met de TCP server en het opslaan van bestanden in een kladblok. Jelle Wolkers Het maken van het programma was sowieso lastig, dit kwam door een gebrek aan kennis. Er is vooral veel onderzoek vooraf gegaan aan het maken van het programma. Het contact maken met de server voor het uitlezen van de kaartnummers was het grootste struikelblok. Dit is uiteindelijk toch goed gekomen. Ik heb geleerd hoe je knoppen kunt linken aan functies ook al waren deze voor een deel al geconfigureerd. Daarnaast is het handig om te weten hoe je contact kunt maken met de server. De opdracht vond ik zeer leerzaam, en zal de kennis die ik heb opgedaan zeker utiliseren in de toekomst. Raymond Wiering Ik vond de opdracht van TC interessant om te doen. We leerden onder andere hoe we verbinding konden maken met de TCP server en hoe we een refreshknop konden maken. Aan het begin was het best lastig, maar na enig hulp van een docent waren we toch een eind op weg. Het laten uitlezen van de code was het moeilijkst om te ontwikkelen. 2

Code /** * TC-project smartcards * * @author: R. Slokker * @version 1 (28 mei 2007) * * */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*; import java.util.*; import java.text.*; public class TCproject extends JFrame // De klasse-attributen; de attributen die in main // gebruikt worden moeten static zijn. JTextArea txtinput; static JTextArea tekstarea; JButton startb; JButton refreshb; JButton saveb; static InputStream input; static boolean start; static Socket sockcl; static String str = new String(""); static String date; public TCproject() // Dit is de constructor van de klasse TCproject // Eerst wordt de constructor van de superklasse JFrame // uitgevoerd en daarbij wordt een frame voor de applicatie // aangemaakt; vervolgens wordt deze constructor uitgevoerd. settitle("tcproject Smartcards"); setsize(new Dimension(800, 600)); setresizable(false); setdefaultcloseoperation(jframe.exit_on_close); // Een panel is een onzichtbare component waarin user interface // componenten kunnen worden gegroepeerd. // Een pane is een bijzonder soort panel. // Panels en panes kunnen vervolgens weer in een Frame worden // geplaatst. 3

tekstarea=new JTextArea(20,20); tekstarea.seteditable(false); tekstarea.setforeground(color.black);// kleur van de letters JScrollPane panel1=new JScrollPane(tekstarea,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLB AR_ALWAYS); panel1.setpreferredsize(new Dimension(200,800)); add(panel1,borderlayout.west); tekstarea.append("ingelezen kaartnummers:\n\n"); // Plaats drie buttons in een panel en het panel // vervolgens in het frame startb=new JButton("Start Reading"); refreshb=new JButton("Refresh"); saveb=new JButton("Save"); JPanel panel2=new JPanel(); panel2.add(startb); panel2.add(refreshb); panel2.add(saveb); add(panel2,borderlayout.center); ActionListener listener1=new StartHandler(); startb.addactionlistener(listener1); ActionListener listener2=new RefreshHandler(); refreshb.addactionlistener(listener2); ActionListener listener3=new SaveHandler(); saveb.addactionlistener(listener3); setvisible(true); start=false; // Te ondernemen actie bij het klikken op de start-button class StartHandler implements ActionListener public void actionperformed(actionevent event) start=true; 4

// Te ondernemen actie bij het klikken op de refresh-button class RefreshHandler implements ActionListener public void actionperformed(actionevent event) // Plaats hier eigen code tekstarea.settext("ingelezen kaartnummers:\n\n"); //wist het scherm // Te ondernemen actie bij het klikken op de save-button class SaveHandler implements ActionListener public void actionperformed(actionevent event) FileWriter fwriter = null; BufferedWriter writer = null; try fwriter = new FileWriter("Saved//SavedScans.txt"); // maakt of overschrijft een tekstbestand waar de gegevens in worden opgeslagen writer = new BufferedWriter(fWriter); writer.write("opgeslagen gegevens met datum en tijd"); // Schrijft deze regel aan de top van het tekstbestand writer.newline(); // Maakt een nieuwe regel aan writer.newline(); //,,,,,,,,,, writer.write(date + ": " + str); // slaat de gegevens op in het tekstbestand writer.close(); catch (Exception e) //sluiten van het schrijven naar bestand //Functie om de huidige datum en tijd te verkrijgen public static String getcurrenttime() //Maak een virtuele kalender aan Calendar cal = Calendar.getInstance(); //Geef aan in welk formaat je de tijd wil hebben (Dag/Maand/Jaar - Uren:Minuten:Seconden SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy - HH:mm:ss"); //Geef het antwoord op de aanvraag terug return sdf.format(cal.gettime()); 5

public static void main(string[] args) // Hier start het programma int i; TCproject tc=new TCproject(); // Constructor wordt uitgevoerd // Constructor van JFrame wordt eerst uitgevoerd // Wacht op het aanklikken van de start-button while(start==false) try Thread.sleep(500); catch(interruptedexception exception); // Maak hier verbinding met de TCP-server ; char[] data = new char[20]; try sockcl = new Socket("127.0.0.1", 3000); // verbinding maken met de tcp server InputStream input = sockcl.getinputstream(); // int x; char c; while ( (i = input.read())!= -1) date = getcurrenttime(); for (i = 0; i < 8; i++) // 8x herhalen om de gehele kaartnummer te weergeven x = input.read(); // Lees één byte data[i] = (char) x; // str += data[i]; // tekstarea.append(date+"\n"); //weergeeft de datum en tijdstip in het scherm tekstarea.append(str+"\n"); //weergeeft de kaartnummer in het scherm str=""; catch (IOException ex) System.err.println(ex);// 6