29
Prof. Dr. Alois Schütte 1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte http://www.fbi.fh-darmstadt.de/~schuette/ Inhalt Problemstellung Projekt „Wertpapiergeschäft - Erfassen und Buchen“ Analyse Konzeption Realisierung Diskussion

Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Embed Size (px)

Citation preview

Page 1: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 1

Web-basierte Verbuchung eines Wareneingangs

Alois Schütte http://www.fbi.fh-darmstadt.de/~schuette/

Inhalt Problemstellung Projekt „Wertpapiergeschäft - Erfassen und Buchen“

Analyse Konzeption Realisierung

Diskussion

Page 2: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 2

Problemstellung

Eine Bank braucht eine Anwendung, bei der eine Einlieferung von Wertpapieren (Wareneingang)

z.B. 100 Apple-Aktion (mengenmäßig) zum aktuellen Kurs (wertmäßig)

in ein Kundendepot über ein Web-Frontend von einem Bankmitarbeiter für einen Bank-Kunden durchgeführt werden kann.

Die IT-Abteilung der Bank gibt vor, dass die Anwendung über eine bestehende 3-Ebenen-Architektur auf die Backend-Daten (Depots, Kunden, ...) zugreift. Die Datenhaltung soll in der Anwendung selbst in einer eigenen

relationalen freien Datenbank erfolgen. Die Schnittstelle zu den Bank-eigenen Systemen erfolgt durch die

Bank. Live Demo http://hal.local/WP/php/

Page 3: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 3

Analyse

Wir als Softwarehaus haben Erfahrung mit Php und MySql Aus der Problemstellung leiten sich 3 Komponenten ab:

Visualisierung mittels HTML in einem Web-Browser (keine Java-Anwendung)

Anwendungslogik per Php auf einem Anwendungs-Server (keine J2EE Anwendung)

Speicherung in einer MySql-Datenbank

Aus den Anforderungen resultiert folgende Anwendungsarchitektur:

Application-Server

DatenbankServer

Backend-Systeme

Visualisierung Anwendungslogik Speicherung

Page 4: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 4

Analyse

Beteiligte Projektmitarbeiten werden benötigt aus den Bereichen: Design (HTML-Masken) Programmierung (Php) Datenbankspezialisten (MySql)

Der Kern der Anwendung ist ein Datenmodell, dass die Speicherung von WP-Transaktionen für Kunden abbilden kann.

Page 5: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 5

Konzeption: ER-Modell

Der konzeptionelle Entwurf ist der Vorgang, bei dem das konzeptionelle Modell aus der Realität abgeleitet wird. Er mündet im konzeptionellen Datenmodell. Als Modell für die konzeptionelle Phase verwenden wird das Entity-Relationship Modell. Es definiert die Entitäten einer Anwendung zusammen mit ihren Beziehungen:

Entity (Objekttyp): Rechteck

Relationship (Beziehungstyp): Raute

Attribute: Ovale

Beziehungsart

Kunde

besitzt

KuNr

1 n

Page 6: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 6

Konzeption: ER-Modell (Ausschnitt) - Entitäten

Kunde

KuNr

Name

Adresse

Page 7: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 7

Konzeption: ER-Modell (Ausschnitt) - Entitäten

Kunde

KuNr

Name

Adresse

Depot

DeNr

Abr-Konto

WertAuf eine valutengerechteBetrachtung wird der Einfachheit halber verzichtet.

Page 8: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 8

Konzeption: ER-Modell (Ausschnitt) - Entitäten

Kunde Depot

KuNr

Name

Adresse

DeNr

Abr-Konto

Wert

Wertpapier

WKN

Kurs

Bez.

Auf eine valutengerechteBetrachtung wird der Einfachheit halber verzichtet.

Page 9: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 9

Konzeption: ER-Modell (Ausschnitt) - Beziehungen

Kunde Depot

KuNr

Name

Adresse

DeNr

Abr-Konto

Wert

Wertpapier

WKN

Kurs

besitzt

Bez.

n1

Auf eine valutengerechteBetrachtung wird der Einfachheit halber verzichtet.

1 zu n

Page 10: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 10

Konzeption: ER-Modell (Ausschnitt) - Beziehungen

Kunde Depot

KuNr

Name

Adresse

DeNr

Abr-Konto

Wert

Wertpapier

WKN

Kurs

besitzt beinhaltet

Bez.

n1 nm

Anzahl

Auf eine valutengerechteBetrachtung wird der Einfachheit halber verzichtet.

n zu m

Page 11: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 11

Konzeption: ER-Modell (Ausschnitt) - Beziehungen

Kunde Depot

KuNr

Name

Adresse

DeNr

Abr-Konto

Wert

Wertpapier

WKN

Kurs

besitzt beinhaltet

Bez.

n1 nmn

m

OrderNr

ordertkauft/verkauft

Anzahl

Anzahl

Auf eine valutengerechteBetrachtung wird der Einfachheit halber verzichtet.

3 stellig

Page 12: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 12

Konzeption: ER-Modell -> Relationalen Modell

Verfahren: ER-Modell -> Relationenmodell: Abbildung von Entity-Typen auf Relationenschematas Abbildung von Beziehungstypen auf Relationenschemata Attribute werden zu Attributen des Relationenschemas Schlüssel werden übernommen Wenn möglich: Verschmelzung von Relationenschemata von Entity-

und Beziehungstypen Einführung von Fremdschlüsseln in verbleibenden

Relationenschemata zur Referenzierung der Entities Normalisierung des entstandenen Schemas

Page 13: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 13

Konzeption: ER-Modell -> Relationalen Modell

Kunde

KuNr

Name

Adresse

Name Attribut:Type

Kunde KuNr: Integer

Name:String

Adresse:String

Entität Relation

Page 14: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 14

Konzeption: ER-Modell -> Relationalen Modell

Name Attribut:Type

beinhaltet(WpBestand)

DeNr: Integer

WKN:String

Anzahl:Integer

Beziehung Relation

Depot

DeNr

Abr-Konto

Wert

Wertpapier

WKN

Kurs

beinhaltet

Bez.

nm

Anzahl

Page 15: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 15

Konzeption: Relationenschema

Name Attribut_ Typ

Kunde KuNr:Integer

Name:String

Adresse:String

Depot DeNr:Integer

KuNr:Kunde.KuNr

Wert:String

KoNr:Konto.KoNr

Wertpapier WKN:Integer

Bezeichnung:String

Kurs:Float

WpBestand DeNr:Integer

WKN:Wertpapier.WKN

Anzahl:Integer

WpUmsatz OrNr:Integer

DeNr:Depot.DeNr

Ausführung:Date

WKN:Integer

Anzahl:Integer

Konto KoNr:Integer

KuNr:Kunde.KuNr

Saldo:Float

GeldUmsatz UmNr:Integer

KoNr:Kunde.KuNr

Ausführung:Date

Betrag:Float

Relationenschema insgesamt (nach Vereinfachung und Normalisierung)

Page 16: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 16

Konzeption: Design

Die Konzeption der Design-Komponente wird hier nicht näher betrachtet.

Als einzigen Aspekt wird die Anforderung nach Validierung von Formularfeldern erörtert: In Formularfelder soll die Benutzereingabe auf

korrekte Typen sinnvolle Wertegeprüft werden.

Zur Anzeige wird der QuickTime™ Dekompressor „TIFF (LZW)“

benötigt.

Page 17: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 17

Konzeption: Anwendungslogik

Php bietet die Möglichkeit, objektorientiert zu programmieren. Somit sind die elementaren Bestandteile in Klassen zu „verpacken“. Grundlegende Funktionalitäten, z.B.:

Allgemeiner Datenbankzugriff Benutzerauthentifizierung Kursimport

Klassen für Entitäten, Beziehungen und Anwendungsfunktionalitäten, z.B.: Kunde Buchen

Der Zugriff auf eine MySQL-Datenbank erfolgt über Php spezifische API‘s.

Page 18: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 18

Realisierung: Datenbank

Aus dem Relationenschema wird nach dem konzeptionellen Entwurfs eine Datenbank erzeugt, die dann Ausgangspunkt für die Implementierung ist.

SQL-Anweisungen:create table kunde ( KuNr integer primary key, Name varchar(100), Adresse varchar(100)) type=innodb;

create table konto ( KoNr integer primary key, KuNr integer not null references kunde.KuNr on delete cascade, Saldo float) type=innodb;...

Zur Anzeige wird der QuickTime™ Dekompressor „TIFF (LZW)“

benötigt.

Page 19: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 19

Realisierung: Anwendungslogik - Grundlage Php

Die Anwendungslogik wird in Php realisiert. Im praktischen Umfeld würde man große Teile allerdings in PL/SQL als Stored-Procedure umsetzen.

Php ist Server-seitig ausführbarer Kode, der in HTML-Seiten eingefügt ist und vom Server ausgeführt wird, wenn die HTML Seite aufgerufen wird. Das Ergebnis ist eine an der aufrufenden Browser zurück gelieferte HTML-Seite.

Php Beispiel:http://hal.local/WP/php/erstesProgramm.php

<html>

<head><title>Beispiel</title>

</head>

<body>

<p>php start </p>

<?php

echo "Hallo, ich bin ein PHP-Skript!";

?>

<p>php end</p>

</body>

</html>

Page 20: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 20

Realisierung: Anwendungslogik - Datenbankzugriff

Der Zugriff auf unsere Datenbank erfolgt mittels eine selbst definierten Php-Klasse über Php-API‘s zum Zugriff auf eine MySql Datenbank:

<?phpclass DB { var $host = "localhost"; var $user = "jenni"; var $passwd = "lopez"; var $database = "wp";

function connect() { // Verbindung zur Datenbank $db = mysql_pconnect($this->host, $this->user, $this->passwd) or die("Verbindung zum MySQL Server fehlgeschlagen!"); mysql_select_db($this->database, $db) or die("Verbindung mit $this->database fehlgeschlagen!<br>"); return $db; } function close($db) { // Verbindung zur Datenbank abbrechen mysql_close($db) ; }}?>

Page 21: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 21

Realisierung: Anwendungslogik - Erzeugung dynamischer Inhalte

Als Beispiel für den Zugriff auf Daten in der Datenbank betrachten wir die Kursabfrage (//hal.local/WP/php/):

require_once("class/db.php"); // Datenbank Klasse$wpDB = new DB;$db = $wpDB->connect();// DB Query definieren$sql_query = "SELECT wkn, bezeichnung, kurs " ."FROM wertpapier “;// Query an Datenbank$result = mysql_query($sql_query, $db);echo "<table>";echo " <tr>";echo " <td>WKN</td><td>Bezeichnung</td><td>Kurs</td>";echo " </tr>";while ($row = mysql_fetch_array($result)) { echo " <tr>"; echo " <td>".$row["wkn"]."</td>"; echo " <td>".$row["bezeichnung"]."</td>"; echo " <td>“.$row["kurs"]</td>"; echo " </tr>";} // whileecho "</table>";

Page 22: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 22

Realisierung : Anwendungslogik - Buchen, Php-Klasse definieren

Die eigentliche Buchungslogik ist als Php-Klasse realisiert, in der es Methoden für Wp- und Geld-Transaktionen gibt.

Dabei ist z.B. in der Methode WpKauf, die Geld- und Stückeseite zusammengefasst, so dass die buchhalterischen Einzelaktionen in einer Transaktion gekapselt sind.

class Buchung {... function wpKauf($kunr, $denr, $wkn, $anzahl) { ... // Stückebuchung $resWp = $this->wpOrder($kunr, $denr, $wkn, $anzahl); $sql_query = "select konr from depot " // Geld-Konto zum Depot ... $sql_query = "select kurs from wertpapier " // WP Kurs zur WKN ... $kurs = $row[kurs]; ... $betrag = $anzahl * $kurs; // Geldbuchung $resGeld = $this->belastung($kunr, $konr, $betrag); ...

Page 23: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 23

Realisierung : Anwendungslogik - Buchen, Php-Klasse verwenden

Verwendung der Klasse „buchen“, um WP-Kauf durchzuführen (//hal.local/WP/php/):

<body><?phprequire_once("class/buchen.php");$kunr = $HTTP_POST_VARS["kunr"]; // Werte vom Aufruf der Seite ...// Bestaetigungstextecho "<span style='font-family: Verdana;'>";echo $kuname.",<br><br>";echo "Sie haben folgende <b>WP Kauf</b> abgeschlossen:<br>";echo "Ihr Depot: ".$denr."<br>";echo "Wertpapier: ".$wpinfo."<br>";echo "Anzahl: ".$anzahl."<br><br>";// Buchen durchfuehren mit Methode der Klasse Buchung$buchung = new Buchung();$resultat = $buchung->wpKauf($kunr, $denr, $wkn, $anzahl);if ($resultat) echo "Der Kauf ist gebucht!";else echo "Kauf wg. techn. Probleme nicht gebucht!";?></body>

Zur Anzeige wird der QuickTime™ Dekompressor „TIFF (LZW)“

benötigt.

Page 24: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 24

Realisierung: Design

Die Realisierung der Design-Komponente betrachtet nur die Thematik der Validierung von Formularelementen.

Die Validierung kann Client-seitig oder Server-seitig erfolgen: Client-seitig ohne Server-Zugriff mit JavaScript Server-seitig mit Php http://hal.local/WP/php/

Page 25: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 25

Realisierung: Design - Validierung von Formulardaten, JavaScript

<html><head><script language="JavaScript"> function testeZahl(str) { var reg = /^[0-9]+$/; if (!reg.exec(str) || str <= 0 ) return false; return true; } function add(x ,y) { var res; if (!(testeZahl(x) && testeZahl(y))) { alert("Bitte pos. Zahl eingeben!"); } res = parseInt(x) + parseInt(y); return res; }</script></head><body>...

Zur Anzeige wird der QuickTime™ Dekompressor „TIFF (LZW)“

benötigt.

Funktionsdefinition in JavaScript

Page 26: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 26

Realisierung: Design - Validierung von Formulardaten, JavaScript

<html><head><script language="JavaScript"> ...</script></head><body> ... <form method="get" name="Bestand"> <input type="button" value="berechne" name="rechnen" onclick="document.Bestand.neu.value = add(document.Bestand.alt.value, document.Bestand.veraenderung.value );" > </form></body></html>

Zur Anzeige wird der QuickTime™ Dekompressor „TIFF (LZW)“

benötigt.

Funktionsaufruf in JavaScript

Page 27: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 27

Realisierung: Design - Validierung von Formulardaten, Php

<html><head></head><body> ... <form method="get" name="Bestand" action="Bestandsrechner.php"> ... <input type="submit" value="berechne" name="rechnen">

</form></body></html>

Formularanzeige

Zur Anzeige wird der QuickTime™ Dekompressor „TIFF (LZW)“

benötigt.

Page 28: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 28

Realisierung: Design - Validierung von Formulardaten, Php

<html><head></head><body><?php $alt = $HTTP_GET_VARS["alt"]; $ver = $HTTP_GET_VARS["veraenderung"]; if (isset($alt) && isset($ver)) {// Wurde Formular bereits ausgefüllt, // dann erfolgt hier Verarbeitung // der gesendeten Daten $neu = $alt + $ver; echo "Neuer Bestand: " . $neu; } else // zeige Formular {?><form method="get" name="Bestand" action="Bestandsrechner.php">...</form><?php}?></body></html>

Von Php neu erzeugte Ergebnisseite

Zur Anzeige wird der QuickTime™ Dekompressor „TIFF (LZW)“

benötigt.

Page 29: Prof. Dr. Alois Schütte1 Web-basierte Verbuchung eines Wareneingangs Alois Schütte schuette/ Inhalt Problemstellung Projekt

Prof. Dr. Alois Schütte 29

Diskussion

Test und Going Live sind wichtige Phasen, die wir hier unberücksichtigt lassen.

Vielen Dank für Ihre Aufmerksamkeit! ??