Ett serverprogram ska utvecklas som ligger som ett gränssnitt mot en bildatabas. Ett klientprogram ska utvecklas som kommunicerar med servern och visar data ur bildatabasen. Båda programmen ska ha grafiska gränssnitt.
Programmen finns redan utvecklade men endast med användargränssnitt i textform. Dessutom har det mesta av källkoden försvunnit. Studera det som finns av det gamla systemet på katalogen inl2base, eller ladda ner som en ZIP-fil.
Uppgiften är här att utveckla motsvarande program med grafiska användargränssnitt. Den server som utvecklas ska kunna kommunicera med den gamla textklienten, och den klient som utvecklas ska kunna kommunicera med den gamla textservern. Som tur är finns kommunikationsprotokollet kvar (se nedan).
Använd JDBC-drivrutinen för Mimer: mimjdbc3.jar
Databasen innehåller två tabeller, Bil och Bilstatistik, skapade med SQL-kommandon enligt nedan:
(Databashanterare brukar, till skillnad från Java, inte hantera ÅÄÅ så bra.)create table Bil (Regnr char(6), Marke varchar(20), Ar integer, Nypris integer, primary key (Regnr)); create table Bilstatistik (Marke varchar(20), Ar integer, Antal integer, Summa integer, primary key (Marke, Ar));
Exempel på data:
Bil
Regnr | Marke | Ar | Nypris |
---|---|---|---|
RFN540 | Renault | 2000 | 171000 |
RPG701 | Renault | 2000 | 244000 |
Bilstatistik
Marke | Ar | ANTAL | SUMMA |
---|---|---|---|
Renault | 2000 | 2 | 415000 |
Gränssnitt för databasaccesser ska vara en javaklass bil_db_c. När den gamla textversionen av serverprogrammet utvecklades, var databasen ännu inte satt i drift, och därför fanns den klassen endast i form av en stubbe i filen bil_db_c.java. Denna gamla stubbe simulerar en databas genom att lagra data i vanliga Java-variabler. Den låtsas att man kopplar upp mot databasen med användarnamnet java och lösenordet inl2. Använd gärna den gamla stubben för testning, men skriv sen om den så den kopplar upp sig mot databasen med JDBC på riktigt.
Klientprogram | Serverprogram |
---|---|
Försöker koppla upp sig |
Accepterar, skickar OK ELLER vid en 4:e klient: Accepterar, Skickar NOK, Kopplar ner |
Skickar ALLA |
Skickar tillbaka alla regnr i BIL, avslutar med OK Skickar NOK vid fel |
Skickar MV;REGNR | Skickar tillbaka medelvärde för sålda bilar av den årsmodell och det märke som bilen med regnr har, avslutar med OK, d.v.s. endast ett medelvärde följt av OK. Skickar NOK vid fel |
Skickar N;REGNR;MÄRKE;ÅR;NYPRIS | Lägger in i DB, svarar OK då det gick bra, annars NOK |
Skickar D;REGNR |
Försöker ta bort bilen med REGNR ur BIL Svarar OK om det gick bra, annars NOK |
Skickar A;REGNR |
Skickar tillbaka alla data om bilen med REGNR (utom
regnr), avslutar med OK Skickar NOK vid fel |
Alla data mellan klient och server ska skickas som strängar. Från klienten ska data skickas m.h.a. ett PrintWriter-objekt, med println-metoden. Server och klient ska läsa data m.h.a BufferedReader-objekt, med readLine-metoden. Då servern skickar data i form av fler än ett värde ska de skickas m.h.a. ett println-anrop per värde.
Programmet ska acceptera upp t.o.m. 3 klienter.
Det ska finnas möjlighet att monitorera serverprogrammets aktiviteter.
I fallet att uppkoppling gick bra ska klientprogrammet visa registreringsnummer för de bilar som finns i databasen på serversidan. Det ska sedan gå att på ett användarvänligt sätt ge kommandona:
Arbeta i grupper om två, eller (om det inte går att åstadkomma) tre.
Uppgiften går förstås att lösa genom att bygga användargränssnitten "för hand" i Java-kod, men om vill kan ni också använda något verktyg för layouten, till exempel Borland JBuilder. Den finns inte längre tillgänglig i datorsalarna, men man kan ladda hem den och installera hemma.
Inför demonstrationen ska ni förbereda systemet så det är enkelt att provköra, och ha källkoden tillgänglig. Var också beredda på att svara på frågor om programmet och hur ni skrev det. Vi rekommenderar starkt att ni gör demonstrationen på de inbokade labbtiderna, för om ni inte hinner måste ni avtala en tid med labbhandledaren.
Se till att ha provat GUI-server och GUI-klient mot text-klient respektive text-server.
Lämna rapporten till labbhandledaren. Om ni inte särskilt avtalat något annat ska den vara utskriven på papper. Följande ska finnas med i rapporten:
Rapporten måste förstås vara skriven på ett språk som labbhandledaren förstår.
Vi rekommenderar starkt att ni gör uppgiften, och redovisningen, före tentan. Mycket av det som övas i den här inlämningsuppgiften kan även finnas med på tentan. Det finns också ett absoult sista datum för redovisningar och inlämning av rapporten! Om ni vill göra redovisningar vid andra tillfällen än på de bokade laborationstillfällena, måste ni bestämma en tid. Ni kan dock inte räkna med att labbhandledaren alls är tillgänglig annat än på de bokade laborationstillfällena.