Laboration 5 - Biblioteksapplikation

Relevanta dokument
Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Att ladda ner från legimus.se

IT-system. BUP Användarmanual

Instruktioner för att skapa konton i MV-login

Garantianspråk. Manual

LEX INSTRUKTION - LEXTALK

Lathund Elektronisk fakturahantering

Kom igång med Advance Online portal med certifikatsverifiering

Uppstart Agda PS Hosting

LEX INSTRUKTION LEX LDAP

Använda SYV-spindeln

Instruktion för integration mot CAS

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Åtkomst Du kommer till ditt system via en webblänk som erhålles från oss. Via denna länk ges tillgång till sökning i bibliotekets katalog.

Programbeskrivning. Chaos på Web. Version

Insamlingsverktyg - teknisk beskrivning av metadataformuläret

Övning 3. Datateknik A, Java I, 5 poäng

Manual webb-bokning. Giltig från Kontakt: Emilia Lindberg, turist- och fritidskonsulent

Skapa ett konto för rapportering till vaccinationsregistret

Att använda Java SE JDK 6

Innehållsförteckning. Sidan 2 (24)

Objektorienterad programmering, Java, 5p TDBA63

INSTALLATION AV KLIENT

INTRODUKTION TILL JDBC

Att använda Java SE JDK 6

Instruktioner för studenter

Instruktion för användning av

- Information för arbetsställen

Frontermanual för Rektorsprogrammet

Klientprogrammering mot databaser

Guide för Innehållsleverantörer

Objektorienterad programmering i Java I

Uppdaterad Registrera avhandling i DiVA

Skapa aktörer och roller i Nationell katalog för produkter och avtal

Katalogen inställningar för användare.

Office 365 MB. Innehåll. Inledning / Inställningar Outlook (e-post) Kalender Personer (kontakter)... 5 OneDrive molnet... 5.

Uppgraderingsinstruktion för Tekis-FB Avisering version 6.3.0

Uppdatera Mobilus Professional till version * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Krav: * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

Uppgraderingsinstruktion för Tekis-FB Avisering version 6.3.1

Introduktion till MySQL

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

Micro Focus Vibe Snabbstart för mobil

RemoteX Applications Manual för Resurs Login

Uppstart. Agda Drift

emopluppen Administratörshandledning

Skoladmin kom igång! Innehåll

KOM I GÅNG MED DIN HANDBOK STANDARD FRÅN THOLIN & LARSSON

Aktivitetsstöd Närvarorapportering. Ansvarig i Föreningen

Snabbstart för Novell Vibe Mobile

Snabbguide för användare SourceTech Telllus

Projektuppgift - Gymmet

Laboration 10 - Eclipse

Uppdaterad Registrera avhandling i DiVA

Manual Jourläkarschema Alingsås - Version 1.0

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Att koppla FB till AD-inloggning

Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel:

2I1070 Lektion 2 Servlets och databaskopplingar Internetprogrammering 2I1049 Treskiktsarkitektur Klient-server med servlets

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Lathund. Skolverkets behörighetssystem för e-tjänster. Rollen rektor

Så här fungerar registreringen i Malmö stads Odlingsslottskö

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

LUPstudentpapers. Manual Reviewer

Institutionen för Tillämpad fysik och elektronik Stefan Berglund och Per Kvarnbrink. Laboration: Flerskiktade applikationer

Lathund Elektronisk fakturahantering

Biblioteket DiVA publikationsdatabas vid Röda Korsets Högskola

Komma igång i Hjälpmedelstjänsten

Projektuppgift - Biblioteket

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Thomas Pihl Frontermanual för studerande vid Forum Ystad

Användarmanual FormPipe Meetings. FormPipe Meetings

Närvarorapportering. Ansvarig i Föreningen

Nyheter i Mikromarc 2.6.1

Manual för administration av användare i Postens Kundportaler

Uppdateringsguide v4 SR-3

Lathund till VFU-portalen

Uppdatera Mobilus Professional till version * Filen MpUpdate.exe får inte köras när du startar denna uppdatering.

E-tjänster. Innehåll LATHUND FÖR DIG SOM ÄR REKTOR ELLER PROVADMINISTRATÖR

Innehåll. Installationsguide

1 Söka en enstaka tid som inloggad användare

So ka artiklar och annan litteratur

Mejladressen är i formatet

INLEDNING MENYN FÖR FILNAVIGERING

Snabbstartsguide. Innehåll: Skapa ett projekt Hantera och redigera ett projekt Visa ett projekt/utvärderingsresultat

Manual för Typo3 version 4.2

ServiceFirst Webbhandledning, version Assessio International AB. All rights reserved

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Välkommen som användare av medietekniks och informatiks publika studentserver

Innehåll. Föreläsning 3. javax.naming.context. javax.sql.datasource. Vad är JDBC? Java Naming and Directory Interface(JNDI) Viktigaste metoder:

Hur använder du som elev Fronter?

Installation/uppdatering av Hogia Personal fr.o.m. version 13.1

Skolplattformens pedagogiska verktyg och startsida en guide

Elsmart Användarmanual Nätanmälan för Installatörer

3. Författare: Ange samtliga författare. Gör så här:

Boktips.net manual. Roller i Boktips.net

Administration av asrp.se

Transkript:

Laboration 5 - Biblioteksapplikation Du ska skapa en applikation för att söka efter böcker i en databas. Grunduppgiften som är obligatorisk ger 3 poäng och extrauppgiften ger 3 poäng. Grunduppgift (3 poäng) Skapa en applikation för att möjliggöra sökning av böcker i en centraliserad biblioteksdatabas. Applikationen använder bokdatabasen för att hämta information med hjälp av JDBC - Java Database Connectivity. Denna information skall sedan behandlas på lämpligt sätt av applikationen som också skall presentera informationen för användaren via ett grafiskt användargränssnitt. En användare av applikationen skall kunna: Söka efter böcker med avseende på: o Titel o Författare o ISBN o Ämnesområde o Utgivare o Utgivningsår Krav på applikationen: Vid sökning efter böcker skall det vara möjligt att ange delsträngar. Ex: Om sökning sker på titeln 'Lin' ska man få upp alla böcker i vars titlar denna bokstavsföljd förekommer. Detsamma gäller för alla kategorier det går att söka på. Användargränssnittet skall konstrueras m h a Javas AWT-paket. Innan ni påbörjar implementationen är det en god idé att rita, t ex på vanligt papper, hur ni tänker er att användargränssnittet skall se ut. Applikationen skall delas upp relevanta klasser. Speciellt ska du tänka på att skilja på det grafiska användargränssnittet och kommunikationen med databasen. Relevanta metoder för kommunikationen med databasen skall deklareras i ett javagränssnitt, ett s.k. interface. I övrigt har du frihet att göra en klassuppdelning du finner lämplig. Konstruera en inloggnings- och utloggningsdialog för användaren. Innan användaren får använda applikationen för sökning i databasen skall hon/han ange användarnamn och lösenord. Försök till uppkoppling mot databasen sker med det av användaren angivna användarnamnet och lösenordet. Felaktig inloggning skall ge ett relevant meddelande. Det enda giltiga användarnamnet och lösenordet för inloggning finns nedan. Då användaren valt att logga ut måste denna återigen logga in med det giltiga användarnamnet och lösenordet för att få tillgång till databasen via applikationen.

Tips: Börja redan innan du implementerar skissa på ett klassdiagram som beskriver hur klasserna hänger ihop. Ett klassdiagram ska ändå bifogas i dokumentationen, se nedan. För klassdiagrammet ska UML-notation användas, ni får använda valfritt verktyg för detta, det finns ett flertal som är gratis. (Förutom den UML-notation som finns i boken finns också UML-notationen för klassdiagram beskriven i ett kompendium i PUMA-kursen, se http://www.cs.kau.se/cs/education/courses/dava02/ ) Anmärkning: Då man skall exekvera en SQL-fråga i databasen måste man givetvis ha en uppkoppling mot denna. Efter att man fått resultatmängden och behandlat den skall uppkopplingen till databasen stängas, detta för att minska belastningen på databasen. Varje förfrågan till databasen skall därför innebära: 1. Uppkoppling 2. Förfrågan (behandla resultat o s v) 3. Nedkoppling Detta innebär att användarnamn och lösenord måste sparas undan för en inloggad användare. Endast om användaren har loggat av och återigen vill få tillgång till databasen via applikationen måste användarnamnet och lösenordet anges igen. Extrauppgift Reservera böcker och möjliggör inloggning för flera användare (3 poäng) Inloggning/Utloggning Konstruera inloggnings- och utloggningsmöjligheter för flera olika användare. Mot själva databasen finns fortfarande bara ett möjligt användarnamn och lösenord men detta ska inte längre användas för användarinloggning. Istället ska du lagra giltiga användarnamn och lösenord i en fil lokalt, tillsammans med applikationen. Då användaren loggar in ska hans/hennes användarnamn och lösenord stämmas av mot de giltiga par som finns lagrade i filen. Är användarnamnet och lösenordet korrekt ger du användaren tillgång till applikationen och kopplar upp mot databasen med det mot databasen enda giltiga användarnamnet och lösenordet. Då användaren loggat av ska en ny (eller samma) användare kunna logga in igen. För att kunna konfigurera giltiga användarnamn/lösenord räcker det med att man går in i filen och skriver in/tar bort poster. Reservera böcker Ge användaren möjligheter att reservera böcker samt kontrollera om en bok är reserverad eller inte. Reservationen av böcker skall ske på så sätt att användaren väljer en eller flera böcker av sökträffarna och trycker på en reservera-knapp, den/de valda boken/böckerna skall loggas i en fil (givetvis inte samma fil som innehåller användarnamn/lösenord) tillsammans med namnet på låntagaren. Alla låntagare skall loggas i samma fil med sina respektive reserverade böcker. För böckerna skall endast titel, författare och ISBN loggas. När användaren får sökträffar skall han/hon kunna markera en bok och sedan "trycka på en knapp" för att undersöka om boken är reserverad eller inte. Ett relevant meddelande skall ges. En bok som redan är reserverad ska givetvis inte kunna reserveras av någon annan. En användare ska också ha möjligheten att ta bort de reservationer hon/han önskar.

Tips: Börja konstruktionen av laborationen med att tänka utifrån användarens perspektiv. Med andra ord, hur skall gränssnittet se ut? Vilka funktioner behövs och hur ska de göras åtkomliga? Hur skall informationen presenteras? Hur skall det gå till vid sökning? Ta fram idégeneratorn! En god idé är att dela upp applikationen (i grunduppgiften) i minst tre klasser, en klass som handhar det grafiska gränssnittet, en klass som handhar kommunikationen med databasen och ytterligare en klass som integrerar dessa. Ta hjälp av boken, dina kollegor och er laborationshandledare/lärare.

Att kommunicera med databasen Det rekommenderas starkt att du följer instruktionerna i detta avsnitt och omedelbart, innan du påbörjar själva designarbetet, sätter ihop ett litet testprogram för att kommunicera med databasen. På så sätt får du på en gång klart för dig hur kommunikationen med databasen går till. Dessutom är det roligt! Det går knappast att klassificera som arbete. Databasen innehåller tre tabeller, books, publishers och subjects. Fälten i respektive tabell visas nedan. I varje tabell finns en primär nyckel (id). Alla fält utom id i varje tabell är strängar. books id title isbn subject authors publishers year publishers id text subjects id text Driver för kommunikation med databasen För att koppla upp er mot databasen måste ni först registrera en lämplig driver som gör det möjligt att kommunicera med databasen. Uppkopplingen görs med hjälp av DriverManagerklassen i Javas API. DriverManager.registerDriver(new org.gjt.mm.mysql.driver()); Sql-drivern man skapar ett objekt av ovan är mjukvara finns tillgänglig på hemsidan att ladda ner som en jar-fil (mysql.jar). När ni kompilerar och exekverar, sätt växeln classpath att hänvisa till jar-filen. Kompilering: javac classpath <sökväg till jar-fil>;. [Java-fil] Körning java classpath <sökväg till jar-fil>;. [Class-fil] (Det enklaste är att lägga jar-filen i samma katalog där du har övriga Java-filer för applikationen, att kompilera ser då ut såhär): javac classpath mysql.jar;. [Java-fil] Uppkoppling När ni ska koppla upp er mot databasen använder ni också DriverManager-klassen. Ni måste ange url, användarnamn och lösenord. Url: jdbc:mysql://enterprise.cse.kau.se/dvlib

Användarnamn: java02 Lösenord: dava06 Connection conn = DriverManager.getConnection(Url, Användarnamn, Lösenord); Söka i databasen Det enklaste sättet att kunna ange olika söksträngar är att använda ett objekt av klassen PreparedStatement som finns i Javas API. Med ett PreparedStatement-objekt skapar man i förväg ett uttryck som kan innehålla en okänd parameter. Sedan byter man ut parametern mot aktuell söksträng och exekverar uttrycket, det vill säga skickar sql-frågan till databasen. Först skapar man ett uttryck (PreparedStatement) som man låter innehålla sql-uttrycket. PreparedStatement prep; prep = conn.preparestatement(sql -uttryck); Sedan ersätter man?-tecknet i sql-uttrycket mot aktuell söksträng. prep.setstring(1, söksträng); 1:an anger att det är första förekomsten av?-tecknet som ska ersättas, man kan ha flera?- tecken i en sql-sats. I våra finns dock bara ett?-tecken Vi har nu förberett vårt uttryck och kan nu exekvera vår fråga prep.executequery(); Resultatet från en sådan fråga är ett ResultSet-objekt och vad det innehåller beror på hur sqluttrycket ser ut. Om sql-uttrycken nedan används kommer varje rad i resultatet att innehålla följande kolumner (alla som det inte anges annat på hör till tabellen books): Nr Kolumn 1 Title 2 Isbn 3 subjects.text 4 Authors 5 publishers.text 6 Year Värdena för varje kolumn kan sedan utläsas med hjälp av nr eller titel på kolumen. SQL-uttryck - Dessa är färdiga att använda, du behöver alltså inte ha någon speciell kunskap om databaser för att kunna använda databasen för att göra applikationen. Hämta böcker vid sök på TITEL publishers.id and books.title like?"

Hämta böcker vid sök på FÖRFATTARE publishers.id and books.authors like?" Hämta böcker vid sök på ISBN publishers.id and books.isbn like?" Hämta böcker vid sök på UTGIVARE publishers.id and publishers.text like?" Hämta böcker vid sök på OMRÅDE publishers.id and subjects.text like?" Hämta böcker vid sök på ÅRTAL publishers.id and books.year like?" Anmärkning: I databasen används like tillsammans med wildcard-tecknet % för att kunna matcha delsträngar. Dokumentation För varje klass ska följande dokumenteras, som kommentarer, i källkodsfilen. Kommentarerna ska skrivas på så sätt att man kan använda verktyget javadoc för att generera en separat dokumentation i html-format. Överst i varje fil, nedanför eventuella "import"-satser, ska följande anges: En beskrivning av vad klassen representerar. Beskrivningen ska vara fristående från systemet som helhet, d v s man ska exempelvis inte i beskrivningen för klassen Person tala om att klassen representerar en person som deltar i en auktion. Istället ska man skriva att den representerar en mycket enkel modell av en person. Anledningen till detta är att vi vill göra våra klasser återanvändbara. En klass ska vara så löst kopplad som möjligt gentemot andra klasser. Versionsnumret Författarens namn För varje metod ska följande anges: Kontrakt, d v s för- och eftervillkor. Metodnamn, returtyp, namn och typer på parametrar, dessa framgår automatiskt av metodens signatur.

En kompletterande beskrivning av metoden och/eller dess parametrar om det behövs utifrån vad som redan ges av kontraktet och metodens signatur. Tänk på att inte införa redundans, man ska inte upprepa samma sak flera gånger. Jämför ovanstående med avsnitt 5.10 och speciellt 5.10.2 i kursboken. Då du är färdig med din applikation ska du också generera dokumentation i htmlformat med verktyget javadoc. javadoc kan användas direkt i terminalfönstret precis som java och javac. Hitta ett bra sätt att skriva kontrakten på så de framgår tydligt i dokumentationen som genererats med javadoc. Rita ett klassdiagram Ett klassdiagram som beskriver hur klasserna hänger ihop skall bifogas. För klassdiagrammet ska UML-notation användas, ni får använda valfritt verktyg för detta, det finns ett flertal som är gratis. Inlämning Laborationen skall provköras (går att skicka in zippat via mail). Javadoc skickas in via mail (också zippat, och se till att de dokument som genererats med javadoc finns i en egen mapp då arkivet extraheras). Alternativt hänvisas till en länk. Dokumentationen (enligt ovanstående dokumentationskrav) skall lämnas i handledarens fack. Markera tydligt om du gjort extrapoängen.