Web-basierte Verbuchung eines Wareneingangs

Slides:



Advertisements
Ähnliche Präsentationen
ER-Datenmodell und Abfragen in SQL
Advertisements

Zur Rolle der Sprache bei der Modellierung von Datenbanken
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
spezielle Nutzersichten formale Ebene (deskriptive Regeln)
Einsatz von SiSy in der Berufsausbildung
Aufbau des Internets Überblick Prof. Dr. T. Hildebrandt
Das Entity-Relationship-Modell
Allgemeine Technologien II
Seite 1Maria, Philipp, Herbert Seite 1 Fitnessplaner Ziele: >Fitnessplaner für Onlinebetrieb >Registrierung >individuelle Trainingsplanerstellung.
Objektorientierter Entwurf (OOD) Übersicht
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Objektorientierung
Colibi Bibliothekssystem der Computerlinguistik. Einführung Motivation Was braucht Colibi? Software Datenbankdesign.
XINDICE The Apache XML Project Name: Jacqueline Langhorst
Datenbankentwurf mit Hilfe des ER-Modells entwickeln
Datensicherheit in DBMS
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Dynamische Webseiten mit PHP
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Relationaler Datenbankentwurf (I)
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Übung Datenbanksysteme WS 2003/ Übung Datenbanksysteme Hierarchische DBMS
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
Transaction Script Software Component Technology for Distributed Applications.
Projekt Web Engineering
1 WS 2012 Software-Engineering II Aspektorientierung.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Datenbanken 10: Einfügen, Ändern, Löschen
Buch S70ff (Informatik I, Oldenbourg-Verlag)
Einführung MySQL mit PHP
3.5.2 Fremdschlüssel/ Referentielle Integrität (1/9)
2.2 Definition eines Datenbankschemas (SQL-DDL)
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
JDBC: JAVA Database Connectivity
objekt-relationale Datenbanken
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
... und alles was dazugehört
Visualisierung objektrelationaler Datenbanken
Objektorientierte Modellierung
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Wir bauen uns eine Webapplikation!
Relationale Datenbanken II
Relationale Datenbanken III
O.Univ.-Prof. Dr. Dimitris Karagiannis Datenbanken administrieren mit phpMyAdmin Martin Marinschek
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
SPODAT - Blick nach vorn
Relationales Datenmodell und DDL
Einführung in PHP.
Einführung in PHP 5.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Objektorientierte Modellierung mit UML
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Datenbanken im Web 1.
DaimlerChrysler Workshop Architektur HyperbolicModeler  Notes Client  Notes native Java Klassen  Mehr Informationen über Design  Zugriff auf Dokumente.
Datenbank für Skriptenverkauf
Vom Konzept zur Datenbank
SQL Lutz KleinostendarpJOBELMANN-SCHULE Datendefinition Die Organisation einer Datenbank basiert auf einer Anzahl verschiedener Objekte. Diese können physikalischer.
Entwicklung einer Webapplikation mittels HTML, PHP, MySQL, jQuery, und Smarty-Templates am Beispiel einer Studienarbeitsverwaltung.
Objektorientierte Programmierung Was ist das eigentlich ?
SQL Basics Schulung –
(Structured Query Language)
 Präsentation transkript:

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ütte

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/ Prof. Dr. Alois Schütte

Analyse Aus den Anforderungen resultiert folgende Anwendungsarchitektur: Application- Server Datenbank Backend- Systeme Visualisierung Anwendungslogik Speicherung 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 Prof. Dr. Alois Schütte

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. Prof. Dr. Alois Schütte

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 Prof. Dr. Alois Schütte

Konzeption: ER-Modell (Ausschnitt) - Entitäten Kunde KuNr Name Adresse Prof. Dr. Alois Schütte

Konzeption: ER-Modell (Ausschnitt) - Entitäten Kunde Depot DeNr Abr-Konto Wert Auf eine valutengerechte Betrachtung wird der Einfachheit halber verzichtet. KuNr Name Adresse Prof. Dr. Alois Schütte

Konzeption: ER-Modell (Ausschnitt) - Entitäten Kurs Bez. WKN Wertpapier Kunde Depot KuNr DeNr Name Abr-Konto Auf eine valutengerechte Betrachtung wird der Einfachheit halber verzichtet. Adresse Wert Prof. Dr. Alois Schütte

Konzeption: ER-Modell (Ausschnitt) - Beziehungen Kurs 1 zu n Bez. WKN Wertpapier 1 n besitzt Kunde Depot KuNr DeNr Name Abr-Konto Auf eine valutengerechte Betrachtung wird der Einfachheit halber verzichtet. Adresse Wert Prof. Dr. Alois Schütte

Konzeption: ER-Modell (Ausschnitt) - Beziehungen Kurs n zu m Bez. WKN Wertpapier m 1 n n besitzt beinhaltet Kunde Depot KuNr DeNr Anzahl Name Abr-Konto Auf eine valutengerechte Betrachtung wird der Einfachheit halber verzichtet. Adresse Wert Prof. Dr. Alois Schütte

Konzeption: ER-Modell (Ausschnitt) - Beziehungen Kurs 3 stellig Anzahl Bez. OrderNr WKN ordert kauft/verkauft m Wertpapier n m 1 n n besitzt beinhaltet Kunde Depot KuNr DeNr Anzahl Name Abr-Konto Auf eine valutengerechte Betrachtung wird der Einfachheit halber verzichtet. Adresse Wert Prof. Dr. Alois Schütte

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 Prof. Dr. Alois Schütte

Konzeption: ER-Modell -> Relationalen Modell Entität Relation Kunde Name Attribut:Type Kunde KuNr: Integer Name: String Adresse: KuNr Name Adresse Prof. Dr. Alois Schütte

Konzeption: ER-Modell -> Relationalen Modell Beziehung Relation Kurs Bez. WKN Wertpapier m n beinhaltet Depot DeNr Anzahl Name Attribut:Type beinhaltet (WpBestand) DeNr: Integer WKN: String Anzahl: Abr-Konto Wert Prof. Dr. Alois Schütte

Konzeption: Relationenschema Relationenschema insgesamt (nach Vereinfachung und Normalisierung) Name Attribut_ Typ Kunde KuNr: Integer Name: String Adresse: Depot DeNr: Kunde.KuNr Wert: KoNr: Konto.KoNr Wertpapier WKN: Bezeichnung: Kurs: Float WpBestand Wertpapier.WKN Anzahl: WpUmsatz OrNr: Depot.DeNr Ausführung: Date Konto Saldo: GeldUmsatz UmNr: Betrag: Prof. Dr. Alois Schütte

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 Werte geprüft werden. Prof. Dr. Alois Schütte

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. Prof. Dr. Alois Schütte

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 ... Prof. Dr. Alois Schütte

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> Prof. Dr. Alois Schütte

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: <?php class 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) ; ?> Prof. Dr. Alois Schütte

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>"; } // while echo "</table>"; Prof. Dr. Alois Schütte

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); Prof. Dr. Alois Schütte

Realisierung : Anwendungslogik - Buchen, Php-Klasse verwenden Verwendung der Klasse „buchen“, um WP-Kauf durchzuführen (//hal.local/WP/php/): <body> <?php require_once("class/buchen.php"); $kunr = $HTTP_POST_VARS["kunr"]; // Werte vom Aufruf der Seite ... // Bestaetigungstext echo "<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> Prof. Dr. Alois Schütte

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/ Prof. Dr. Alois Schütte

Realisierung: Design - Validierung von Formulardaten, JavaScript Funktionsdefinition in 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> ... Prof. Dr. Alois Schütte

Realisierung: Design - Validierung von Formulardaten, JavaScript Funktionsaufruf in 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> Prof. Dr. Alois Schütte

Realisierung: Design - Validierung von Formulardaten, Php Formularanzeige <html> <head> </head> <body> ... <form method="get" name="Bestand" action="Bestandsrechner.php"> <input type="submit" value="berechne" name="rechnen"> </form> </body> </html> Prof. Dr. Alois Schütte

Realisierung: Design - Validierung von Formulardaten, Php Von Php neu erzeugte Ergebnisseite <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> } </body> </html> Prof. Dr. Alois Schütte

Diskussion Test und Going Live sind wichtige Phasen, die wir hier unberücksichtigt lassen. Vielen Dank für Ihre Aufmerksamkeit! ?? Prof. Dr. Alois Schütte