Eksamen, DSDS, efterår 2007

Relaterede dokumenter
Eksamen, DSDS, efterår 2008

Reeksamen, DSDS, forår 2008

Eksamen, DSDS, forår 2009

Eksamen, DSDS, forår 2008

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Ratingsystem i PHP og MySQL

Views etc. Databaser

En Kort Introduktion til Oracle

HTML, PHP, SQL, webserver, hvad er hvad??

Foto-Applikation Dokumentation. Et Kod-i-Ferien projekt

Begrynder til at lave log ind system

Design Diaries.

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Gæstebog med validering opbygget med MySQL

I mit script tager jeg højde for det problem ved, at gemme et unikt tal mellem 0-9 på 6 cifre og derved vil de så blive vist som 2 online.

Data lagring. 2. iteration (implement backend)

Introduktion til SQL queries

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Sidste forelæsning. Jacob Aae Mikkelsen. 28. april 2013 IMADA. Jacob Aae Mikkelsen (IMADA) Sidste forelæsning 28.

Tagwall med Php & MySQL

Databasesystemer. IT Universitetet i København 8. juni 2006

DB undervisning 01-01

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

A11: Last Year s Exam

The Design Diaries. Link til blog

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

Loginsystem (med MySQL)

Eksempelsamling. Forms. Eksempelsamling <form> <textarea></textarea> <input> <select> <option></option> </select> </form>

Databaseadgang fra Java

Projekt Database, Gruppe 4A. Projekt 1, 3. Semester D A T A B A S E. Klasse MulA13 Gruppenummer: A4

I denne arktikle går jeg gennem Slet, Ret og Opret data i en MySQL database. der er også en lille del i den hvor den postere datanen ud i en løkke

Få sin querystring til at fungere. (Nybegyndere)

Introduktion til programmering

Web 2.0. World Wide Web (www)

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

Jayne Alice Jensen [Link til portfolio]

Begrænsninger i SQL. Databaser, efterår Troels Andreasen

Interaktionsudvikling

Uploade billeder eller andre filer ved hjælp af php og mysql

3. semester, 2. projekt: Database

Projekt 1 - Database. Cphbusiness Lyngby Multimediedesigner, 3. semester. MulB13e, gruppe 4

Lav en hjemme side der kan sælge fly billetter til en stor i Europa.

CFunding-IT. Web DB Multimediedesigner 3. Semester Gruppe 15

POST IT! Cph Business Academy Multimediedesign 2. Semester flow april Kirstine Marie Rasmussen cph-

The Design Diaries Project 3 2. Semester. Blog om designprincipper

Dynamisk PHP design OPDATERET

Projekt database. 3 Semester - Mul a Projekt 1. Yaser Osman cph-mo102@cphbusiness.dk. Dan Eskildsen cph-de32@cphbusiness.dk

Databaser Obligatorisk opgave 1

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Databasesystemer. IT Universitetet i København 16. januar 2006

Loginsystem med PHP4, klasser, sessions og MySQL database

Brugermanual. PoP3 og Outlook Express Webmail Udarbejdet af IT-afdelingen 2005

Dannelse af PDF dokumenter

Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE

Import af rekursivt (parent-child) hierarki i Palo

Projekt 3: Interaktionsudvikling 11/04.14

The Design Diaries PHP projekt

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

Anvendelse af Model- View koncept i SAS Stored Processer

Undervisningsbeskrivelse

Log ind med PHP. Denne guide er oprindeligt udgivet på Eksperten.dk. Skrevet den 09. May 2011 af dab93 I kategorien Programmering / Andre

Dannelse af PDF-dokumenter

Databaser. Område / Specialefag nr Database, design og programmering Datatekniker Infra & Prog IT-Supporter AMU Kursister

Webteknologi evalueringsopgave Vinter Niels Sundstrup

Procesbeskrivelse - Webprogrammering

Sådan får du en kirkegård på nettet i DKI-modellen!

PHP Crash course. Databaser

En opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin

Dannelse af PDF-dokumenter

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON

Eksamens rapport Informationsteknologi B

Projekt titel. Projekt navn. Gruppe medlemmer. Klasse/Gruppenummer. Databaseprojekt 1. Ferrari

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Database design for begyndere

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk

Hack of the Month opgave 2

PROJEKT 3. The Design Diaries. LINK TIL BLOG: Af Mikkel Borg Svendsen & Sebastian Frank MUL B

De skjulte input typer:

Dokumentering af umbraco artikeleksport:

Projekt database. (vores htmlside)

Projekt 1 Database. Cphbusiness Lyngby Multimediedesigner, 3. semester mul-a12e, gruppe 1

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Brugermanual PoP3 og Outlook Office 2003 Webmail Udarbejdet af IT-afdelingen 2005

Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus, byer og regning..

sådan gør du... [meld dig ledig]

Dataanalyse og databaser

Trin 1 INSERT INTO Debitor (DebitorNr, KundeKategori, KreditMax, SidstRykket, Sælger ) VALUES (20121, 10, 40000, NULL, "Bjarne Larsen");

Databasesystemer. IT Universitetet i København 8. juni 2006

Dynamisk hjemmeside: NeuTravel

CLmul-b14e Gruppe 2 2. Database projekt

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Eksempel på en database: studenter, kurser, eksamener

Afleveringsopgave. Efterår 2001

Byg web sider. Introduktion:

Transkript:

Eksamen, DSDS, efterår 2007 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech og Martin Elsman IT Universitetet i København 7. januar 2008 Alle hjælpemidler er tilladte, dog ikke computer og kommunikationsmidler. Eksamen er skriftlig, fire timer, og den bedømmes fra 0 til 100 procent. Eksamen består af fem opgaver der alle ønskes løst. Et godt råd: Gennemlæs opgavesættet inden du begynder at besvare de enkelte opgaver. Introduktion I dette eksamenssæt skal du implementere dele af et webbaseret system til konceptet Vi Cykler til Arbejde. Konceptet Vi Cykler til Arbejde er et forsøg på at få flere personer til at cykle. Virksomheder kan tilmelde deres ansatte, og de ansatte kan så, hver dag, indtaste hvor mange kilometer de har cyklet til og fra arbejde. Systemet hjælper med at holde styr på antallet af kilometer og giver en oversigt over det samlede antal kilometer per virksomhed og per ansat. Figur 1 viser et site-map for det ønskede system. Bemærk: For at simplificere systemet benyttes der i i hele opgavesættet engelske kommaer (dvs. og ikke, ). Det er ikke en del af din opgave at sikre, at tal bliver vist med danske kommaer. Adresse: Rued Langgaards Vej 7, 2300 København S, Danmark. Email: holbech@itu.dk og mael@itu.dk. 1

2 Figur 1: Site-map for det web-baserede system. Et screenshot (kasser) i diagrammet angiver sider, brugeren kan se i systemet. Hver sides navn er angivet ovenfor hvert billede. En ikkeannoteret pil i diagrammet angiver, at en bruger kan klikke på et link i en side for at springe til en anden side. En annoteret pil i diagrammet angiver, at brugeren ved at klikke på en knap forårsager, at php-scriptet annoteret på pilen bliver kørt på serveren, og at php-scriptet videresender brugeren til en ny side. Opgave 1 (15 procent) - HTML Opgave 1.1 (7 procent) Filen index.php er systemets forside og viser den samlede mængde kilometer, ansatte i hver virksomhed har cyklet. For hver virksomhed er der et link, der sender brugeren videre til en

3 oversigtsside for virksomheden (company.php). Hver virksomhed er i systemet identificeret med et company id. Ved et klik på en virksomhed fra forsiden sendes formvariablen cid (indeholdende et company id) med til siden company.php. Din Opgave: Opstil HTML-koden for tabellen, der vises af siden index.php i Figur 1. Besvarelsen skal have formen <table>... </table> Tabellen skal have to kolonner og fire rækker, hvor den første række skal indeholde table headings (ved brug af <th>...</th>). Virksomhedernes navne skal være links, der sender brugeren videre til siden company.php. Hvert link skal sende formvariablen cid med til siden company.php, som følger: For ITU skal cid have værdien 1. For DTU skal cid have værdien 2. For KUA skal cid have værdien 3. Opgave 1.2 (8 procent) Scriptet company.php lister alle ansatte og deres samlede antal kilometer for en given virksomhed. Scriptet linker videre til scriptet enter trip.php fra linket Tilføj tur. Dette link giver en ansat i virksomheden mulighed for at indtaste et antal kilometer. Ved et klik på linket sendes formvariablen cid (indeholdende company id) med til siden enter trip.php. Formen på enter trip.php indeholder en form, hvor en ansat kan indtaste sin email, sin adgangskode og antallet af kilometer, den ansatte har cyklet til eller fra arbejde. Formen sender den ansatte videre til insert trip.php, der indsætter den indtastede tur i databasen og derefter videresender personen til siden company.php. Scriptet insert trip.php forventer formvariablerne cid, email, passw og km, hvor de tre sidste svarer til indholdet af de tre input felter og cid er formvariablen indeholdende company id. Scriptet insert trip.php tjekker de modtagne formvariabler, indsætter den ansattes tur i databasen og videresender brugeren til siden company.php

4 Din Opgave: Opstil HTML-koden for formen, der er genereret af scriptet enter trip.php i Figur 1. Besvarelsen skal have formen: <form...>... </form> Formen skal indeholde tre synlige tekst-input felter, et skjult input-felt og en submit-knap (input-felt af typen submit). Der er derudover følgende krav til formen: Feltet cid skal være af typen hidden og have værdien 2. Attributten name for de tre tekst-input felter skal være henholdsvis email, passwd og km. Formen skal benytte post som metode og have insert trip.php som action. Hint: Det er kun selve formen der ønskes lavet, du behøver ikke opstille formen i en tabel eller lignende. Opgave 2 (15 procent) - PHP Opgave 2.1 (7 procent) Følgende funktion tager et array indeholdende tal som argument og returnerer summen af tallene i arrayet: function array_total($array){ $total = 0; for ( $i = 0 ; $i < count( $array ) ; $i++ ) { $total = $total + $array[ $i ]; } return $total; } Din Opgave: Skriv en funktion array max, der tager et array indeholdende tal som argument og returnerer

5 det største tal i arrayet. Det kan antages at alle tal i arrayet er positive. Hvis funktionen får et tomt array som argument (et array af længde 0), skal funktionen returnere værdien 0. Hint: Du kan benytte funktionen array total som skabelon. Du kan dog få brug for at benytte en if-sætning. Følgende brug af funktionen skal udskrive tallet 7: $numbers = array( 2, 7, 3 ); $max = array_max( $numbers ); echo $max; // udskriver 7 Opgave 2.2 (8 procent) Skriv en funktion array avg, der tager et array indeholdende tal som argument og returnerer gennemsnittet af talene. Hvis funktionen får et tomt array som argument (et array af længde 0), skal funktionen returnere værdien 0. Hint: Funktionen kan passende gøre brug af den tidligere definerede funktion array total samt funktionen count, der kan bruges til at finde antallet af elementer i et array. Følgende brug af funktionen skal udskrive tallet 4: $numbers = array( 2, 7, 3 ); $avg = array_avg( $numbers ); echo $avg; // udskriver 4 Opgave 3 (15 procent) - Regulære Udtryk Opgave 3.1 (5 procent) Skriv et regulært udtryk, der matcher strenge indeholdende positive heltal inklusive 0. Det regulære udtryk skal således matche strengene 0, 1, 10, og 23, men ikke strengene 00, 01, 1.2, og 1a. Opgave 3.2 (5 procent) Skriv et regulært udtryk, der matcher strenge indeholdende positive kommatal inklusive 0.0. Det regulære udtryk skal således matche strengene 0.0, 0.01, 10.2, og 23.0, men ikke strengene 00, 01, 1,2, og 1a. Bemærk: Det kan antages, at der kun benyttes engelske kommaer.

6 Opgave 3.3 (5 procent) Skriv en funktion chk kommatal, der skal tage en streng som argument og undersøge, om strengen matcher det regulære udtryk fra Opgave 3.2. Funktionen skal benytte den indbyggede PHP funktion ereg og skal kalde funktionen error, hvis ikke streng-argumentet matcher udtrykket. Hvis streng-argumentet matcher udtrykket, skal funktionen blot returnere. Bemærk: Funktionen error kan antages at tage en streng som argument, som udskrives som en del af en fejlmeddelelse til brugeren, før funktionen kalder den indbyggede funktion exit, der afslutter programafviklingen.

7 Opgave 4 (25 procent) - SQL / Datamodel Datamodellen for systemet er angivet i Figur 2 som et ER-diagram. Figur 2: E/R-diagram for systemet. De firkantede kasser angiver entiteterne (tabellerne), og de ovale cirkler angiver attributer (felter) tilknyttet de enkelte tabeller. En-til-mange relationer er angivet med kragefødder. Tabellerne companies og users oprettes i MySQL med følgende SQL-kommandoer: CREATE TABLE companies ( cid INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(250) NOT NULL ) ENGINE=InnoDB; INSERT INTO companies (cid, name) VALUES (1, ITU ), (2, DTU ), (3, KUA ); CREATE TABLE users ( uid INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,

8 name VARCHAR(100) NOT NULL, passwd VARCHAR(40) NOT NULL, cid INT(11) NOT NULL, email VARCHAR(200) NOT NULL UNIQUE, INDEX (cid), FOREIGN KEY (cid) REFERENCES companies(cid) ) ENGINE=InnoDB; INSERT INTO users (uid, name, passwd, cid, email) VALUES (1, Lars, hemmeligtpw, 1, lars@itu.dk ), (2, Egon, hemmeligtpw, 1, egon@itu.dk ), (3, Marie, hemmeligtpw, 2, marie@dtu.dk ), (4, Ulla, hemmeligtpw, 2, ulla@dtu.dk ), (5, Bent, hemmeligtpw, 3, bent@kua.dk ); Opgave 4.1 (5 procent) Vis (i skemaform) resultatet af følgende SQL-kommando: SELECT u.name, c.name FROM users as u, companies as c WHERE u.cid = c.cid Opgave 4.2 (5 procent) Konstruer en SQL-kommando til at oprette tabellen trips. Tabellen skal have følgende egenskaber: Feltet tid skal være af typen INT og benytte MySQL s auto increment funktion. Feltet uid skal være af typen INT. Feltet distance skal være af typen DOUBLE. Feltet tripdate skal være af typen DATE. Ingen af felterne må indeholde værdien NULL. uid skal være fremmednøgle og referere til feltet uid i tabellen users. Opgave 4.3 (5 procent) Konstruer tre INSERT-kommandoer, der indsætter følgende ture i tabellen trips den indestående dag:

9 Lars har cyklet 3.1 kilometer. Ulla har cyklet 20 kilometer. Marie har cyklet 5.7 kilometer. Opgave 4.4 (5 procent) Følgende SQL-kommando viser det samlede antal kilometer for hver ansat i virksomheden med cid = 2 (DTU): SELECT users.uid, users.name, SUM(distance) as total FROM users, trips WHERE users.uid = trips.uid AND cid = 2 GROUP BY users.uid, users.name ORDER BY total DESC Ovenstående SQL-kommando viser ikke personer, for hvem der endnu ikke er indtastet en tur. Din Opgave: Konstruer en SQL-kommando, som lister det samlede antal kilometer for hver ansat i virksomheden med cid = 2 (DTU), og som også viser en række for personer, for hvem der endnu ikke er indtastet en tur. Hint: Du kan passende benytte en left join. Opgave 4.5 (5 procent) Skriv en SQL-kommando, der viser navnene på personer der samlet har cyklet mere end 1000 km. SQL-kommandoen skal også vise personernes uid og, for hver person, personens samlede cyklede kilometer. Hint: Det er nødvendigt at benytte både group by og having.

10 Opgave 5 (30 procent) - Web Service Opgave 5.1 (7 procent) Til konstruktion af PHP scriptene vil vi gøre brug af to funktioner html header og footer til at udskrive startende og afsluttende HTML kode. Funktionen footer skrives således: function footer() { echo "<hr/ ><a href= mailto:webmaster@vi-cykler-paa-arbejde.dk >webmaster@vi-cykler-paa-arbejde.dk</a></body></html>"; } Din Opgave: Skriv funktionen html header. Funktionen skal tage et titel-argument, som skal benyttes både til et HTML <title>-element samt til et <h2>-element. Opgave 5.2 (7 procent) Konstruer scriptet insert trip.php. Scriptet modtager formvariabler fra enter trip.php, som beskrevet i Opgave 1. Scriptet skal tjekke formvariablerne ved brug af funktionerne chk passwd, chk kommatal, chk email samt chk heltal, som alle kan antages at være defineret i biblioteksfilen mylib.php. Herefter skal scriptet finde et uid udfra email og passwd (eller fejle, hvis der ikke er et match i tabellen users). Endelig skal scriptet indsætte en passende række i tabellen trips og sende en besked til browseren om at forespørge siden company.php med passende cid. Du kan som tidligere benytte MySQL-funktionen NOW() til dato feltet i tabellen trips. Bemærk: Du kan her og i det følgende antage at funktionerne error og mydb connect fra forelæsningerne er tilgængelige fra biblioteks-filen mylib.php. Opgave 5.3 (7 procent) Konstruer scriptet company.php. Scriptet modtager formvariablen cid og skal liste alle ansattes samlede kilometer for arbejdspladsen med den specifikke cid.

11 Scriptet skal derudover udskrive virksomhedens navn, gerne via funktionen html header. Hint: SQL forespørgslen fra opgave 4.4 kan let tilpasses til brug her. Benyt gerne funktionerne chk heltal, html header og footer der alle kan antages at være defineret i mylib.php. Opgave 5.4 (8 procent) Beskriv kort fordele og ulemper ved at benytte et dynamisk typet scripting sprog (som PHP eller ASP) fremfor et statisk typet programmeringssprog (som Java, C# eller Standard ML) i forbindelse med Web programmering.