Åtgärder

CS enkelt prov

Från Skolbok

Version från den 10 juni 2012 kl. 18.09 av Ingemar (Diskussion | bidrag) (Tabellstruktur)

Ett enkelt prov

Som jag tog upp i början så utgår jag ifrån KISS; så enkelt som det bara går men ändå inte så förenklat att det blir oanvändbart. Utifrån det perspektivet skall vi skapa ett riktigt enkelt prov. Det finns vissa utgångspunkter:

1: Provet består av t.ex. tio frågor vars svar blandas ihop i en enda text. Jag har försökt att bygga upp system med olika antal frågor per prov där varje fråga är en post i en datatabell, men då måste varje prov bestå av tre olika databastabeller: en tabell med provnamn som fungerar som behållare, en tabell med frågor och svar och en tabell som binder samman frågorna med provnamnet. Om man däremot utgår ifrån en enda text som svar räcker det med en enda tabell, det är mer begränsat, men mycket enklare att hantera.

2: Eleven skriver text till alla frågor. Detta är inte hugget i sten, det går att utforma så att eleven istället väljer färdiga svar från olika listor, men det går jag igenom längre fram. I det här första exemplet är samtliga frågor utformade på exakt samma sätt.

3: Eleven behöver inte logga in. Största problemet med Internetbaserade lösningar är att elever måste logga in först, och läraren sliter sitt hår när tre, fem, åtta osv. elever dyker upp och meddelar att de glömt/tappat sina inloggningsnamn eller lösenord. Det skall vara lika enkelt att göra prov vid datorn som när man sätter sig vid en bänk och fyller i namn och klass med blyertspenna, och då fungerar det helt enkelt inte med personlig inloggning. Istället använders en lösenordsruta med ett "hemligt ord". Endera väljer eleven ordet själv eller så väljer du ett ord åt eleven, det senare är att föredra. Genom att använda ett hemligt ord kan inte andra elever skriva i svar åt varandra. En elev kan t.ex. fylla i spindelmannen som sitt personliga hemliga ord och då vet ju du som lärare att förnamn + efternamn + spindelmannen är just den eleven. Problemet är att du måste fråga varje elev personligen om vilket hemligt ord de har om du dessutom får in ett prov med samma förnamn + samma efternamn + "ångvält". Därför kan du trycka upp hemliga ord i förväg och dela ut en papperslapp med individuellla hemliga ord till varje elev innan provet. Då vet du att "ångvält" inte är den elevens prov utan någon kamrat som endera vill vara elak och skriva ett dåligt prov, eller vill vara snäll och skriva ett "förbättrat" prov.

4: Provet går inte att redigera av eleverna efter det att det sparats. Då fungerar det som en Wiki och det går alltid att se äldre versioner. Det enda eleven kan göra är att spara en ny version av samma prov. På det viset kan du spåra fuskare på ett rätt enkelt sätt.

5: Provet skall stämplas med både datum och tid för inlämning, på det viset kan du förhindra fusk. Finns ingen tidsstämpel kan eleven påstå att den gjort provet under provtillfället trots att den gjort det vid ett helt annat tillfälle.

6: Samtidigt som du skriver frågan skriver du svaret. På det sättet finns ett facit. Då kan du också göra en enkel rutin som skriver ut fråga + svar åt eleverna efter det att provet är klart så att de själva lätt kan se vad de gjorde för fel. Dessutom underlättas din egen rättning. I facit kan du använda HTML taggar så kan du förtydliga det du tycker är viktigt om du visar upp facit i en hemsida efter provet.

7: Varje inlämnat prov har ett tillhörande textfält där du kan skriva en bedömning och själv fylla i vilka betygsmål du tycker att eleven uppnått i hela provet. När det är dags att lämna tillbaka det färdigrättade provet kan du endera skriva ut elevprov+facit+din bedömning till eleven och ge den resultatet i pappersform, eller skapa en pdf-fil med uppgifterna som du skickar med e-mail till eleven så sparar skolan pengar både på att proven inte behöver skrivas ut och på att resultatet kan läsas online.

8: varje prov skall ha en ruta för att lägga in ett elev-id så att du, om du vill, kan lägga in en koppling mellan provdatabasen och elevdatabasen.

Tabellstruktur

Så, med allt detta definierat är det dags att skapa en datatabell där uppgifterna kan lagras:

CREATE TABLE simpeltprov (                
ID    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ELEV_ID INT,
F_NAMN VARCHAR (50),
E_NAMN VARCHAR (50),
HEMLIGTORD VARCHAR (50),
KLASS VARCHAR (50),
PROVNAMN VARCHAR (50),
FACIT TEXT,
ELEVSVAR TEXT,
RESULTAT VARCHAR (50),
DATUM_GJORT VARCHAR (50),
DATUM_RATTAT VARCHAR (50)
);

TEXT är en ny sorts fält du inte sett tidigare, men det är helt enkelt ett fält i databasen som rymmer en större mängd text.

RESULTAT tänkte jag kan användas för att fylla i ett betyg eller liknande omdöme. Skolverket får frispel när man skriver ut ett betygsvärde på ett prov, medan eleverna alltid vill veta vilket betyg de fick på provet. Det är upp till varje lärare att avgöra. Själv brukar jag istället numrera betygsmålen och sedan fylla i siffror för målen: C2, E1 och E3 kan t.ex. ha blivit uppfyllda och då skriver jag i det istället.

FACIT används så att provfråga + provsvar sparas efter varandra så att det är lätt att se hur de hänger ihop. En fråga kan ha svar på flera betygsnivåer och då bör det finnas facit till E, C och A nivå. Allra minst skall facit finnas för E nivån.

ELEV_ID är som standard 0, något vi fixar när vi lägger in poster, eftersom alla ID nummer börjar på 1. Då vet vi att om det är en 0:a saknas koppling till en speciell elev medan det går att samköra provet med elevregistret om värdet är över 0.

DATUM_RATTAT är litet överkurs, men det kan vara bra att se vilket datum det var du senast rättade eller redigerade någonting i en enskild elevs prov. Det är för din egen skull och inget som någon elev kan tänkas se.

Logga in i MySQL och skapa tabellen innan du fortsätter med att skapa sidan som tillhör tabellen (se nedan).

Provexempel

Exemplet kanske verkar fruktansvärt jobbigt med mängder av kod, men poängen är att du, i framtiden, bara behöver ändra delar av koden. Grovarbetet är gjort åt dig.

<?php
//Filnamn  ww2start.php

//Olika viktiga variabler
$host="localhost"; // Host , på en privat dator duger oftast localhost
$username="root"; // Mysql användarnamn, antagligen root
$password="password1"; // Lösenord till root, kan t.ex. vara password1
$db_name="skolan"; // Databasens namn
$tbl_name="teacher"; // Tabellens namn

// Anslut till MySQL servern och välj rätt tabell
mysql_connect("$host", "$username", "$password")or die("Kan inte ansluta till databasen");
mysql_select_db("$db_name")or die("Kan inte välja datatabellen");

// Alla olika variabler som skall läggas in i databasen när eleven sparar resultatet
$elev_id=0;
$elev_fnamn=$_POST['elev_fnamn'];
$elev_enamn=$_POST['elev_enamn'];
$elev_hemligt=$_POST['elev_hemligt'];
$elev_klass=$_POST['elev_klass'];
//Skulle kunna skrivas som $elev_klass = '8A' om alla är i samma klass
$provnamn='ProvWW2';
//$facit= längre ner, efter alla frågor och svar
//Elevens olika svar
$S1=$_POST['elev_svar1'];
$S2=$_POST['elev_svar2'];
$S3=$_POST['elev_svar3'];
$S4=$_POST['elev_svar4'];
$S5=$_POST['elev_svar5'];

$elevsvar=$S1 + $S2 + $S3 + $S4 + $S5;
$resultat = 'Orättat';
$datumgjort = date('Y-m-d H:i:s');
$datumrättat = 'Orättat';
$inskickat = $_POST['inskickat'];


$Q1=”Vad var orsaken till Tysklands och Polens ovänskap?”;
$FACIT1=”E=Man hade ofta bråkat om gränserna. 
C=Västra Polen hade tillhört Tyskland men gick över till Polen efter 1:a världskriget och gränslandets tyskar behandlades illa av polackerna. 
A=Under historiens gång hade Polen ibland inte existerat som land utan varit en del av andra länder. Polackerna såg på Tyskarna som erövrare. Vissa polacker tog chansen att
hämnas på de tyskar som bodde i västra Polen, vilket var dumt eftersom Hitler tog upp det som en orsak till ett krig.”;
$Q2=”Varför var Danzigkorridoren så viktig?”;
$FACIT2=”E=Det var den enda kuststräcka som Polen hade tillgång till. 
C=För tyskarna var korridoren ett problem eftersom den skar av det viktiga Östpreussen från det övriga Tyskland. Tyskarna visste att om de kunde skära av korridoren skulle de vinna två
saker, fri tillgång till Östpreussens land och att polackerna tvingades driva all handel genom Danzig, en hamn som inte var polsk. 
A=Danzig var synnerligen tyskvänligt, även om det var en fristad. Skulle polens handel tvingas genom Danzig skulle Tyskland kunna ta ut höga avgifter och bli väldigt rika samtidigt som
hamnen i Östpreussen skulle kunna användas för handel till och från Tyskland landvägen, något som var omöjligt så länge Danzigkorridoren var i polsk kontroll.”;
$Q3=”Varför var Molotov-Ribbentrop pakten så viktig?”;
$FACIT3=E=För att genom den kunde inte Tyskland och Sovjetunionen starta ett krig mot varandra. 
C=Eftersom de två stormakterna Tyskland och Sovjetunionen, som egentligen var politiska fiender, inte längre behövde skydda sig mot varandra kunde militären som skyddade den gemensamma
gränsen spridas ut mot andra fronter. 
A=Pakten innebar dessutom att Europa i praktiken delades upp mellan stormakterna där Sovjet lovades den östra halvan vilket var ungefär samma område som Sovjet tappade efter 1:a
världskriget. Pakten gav dessutom Tyskland tillgång till sovjetiska råvaror man själva led brist på, som t.ex. olja och bensin. Något som var väldigt viktigt inför attacken mot
Västeuropa.”;
$Q4=”Hur gick det till när kriget bröt ut?”;
$FACIT4=”E=Tyska trupper gick in i Polen 1/9 1939 trots att England varnat om att det skulle starta ett krig. Tyskland brydde sig inte och krigsförklaringen England-Polen var ett
faktum. 
C= Tyskland hade provocerat fram ett krigsutbrott genom att låta förklädda tyskar anfalla andra tyskar så att det skulle se ut som att stackars Tyskland blivit oskyldigt anfallet av
det elaka Polen. Därför var man tvungna att försvara sig. Allt var naturligtvis bara propaganda. 
A=Man började med att beskjuta Westerplatte, Polens enda kustfort, för att snabbt kunna ta över östersjökusten. Med hamnarna säkrade var det enkelt att anfalla från flera olika håll.
Tyskland gjorde vad man kunde för att anfalla så fort, och så hårt, som möjligt, precis som man hade gjort mot Ryssland i början av 1:a världskriget. Ett verktyg för detta var
blitzkrieg, att man sköt sönder broar ock liknande bakom fronten och skapade luckor i Polens försvar med hjälp av pansarvagnar som sedan lugnt kunde fortsätta in i Polens kärnland utan
att riskera att bli anfallna ”;
$Q5=”Många flyktingar drabbades hårt, varför? Och var kom alla flyktingar ifrån?”;
$FACIT5=”E=När tyska flygplan bombade städerna och tyska trupper snabbt trängde in i Polen flydde vanliga civila bort från tyskarna. 
C= Flyktingarna hade ingenstans att ta vägen eftersom tyskarna anföll från flera håll och dessutom anföll Sovjet från öst. Varken tyskarna eller sovjeterna var speciellt snälla mot
flyktingarna heller utan mängder dödades eller skadades när de var ivägen för de framvällande tyska- och ryska trupperna. 
A=Bland de som flydde fanns även tyskättlingar bosatta i Polen som försökte fly till de tyska trupperna eftersom polacker tog chansen att anfalla dem, som t.ex. i byn Bromberg. 

$facit= $Q1+$Facit1+$Q2+$Facit2+$Q3+$Facit3+$Q4+$Facit4+$Q5+$Facit5;
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="sv-SE">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prov om 2:a världskrigets utbrott </title>
</head>
<body>
<form name="form1" method="post" action="ww2start.php">”;
<h2>Prov om andra världskrigets utbrott</h2><br><br>
<b>Förnamn</b><br>
<input name="elev_fnamn" type="text" id="elev_fnamn"><br>
<b>Efternamn</b><br>
<input name="elev_enamn" type="text" id="elev_enamn"><br>
<b>Klass</b><br>
<input name="elev_klass" type="text" id="elev_klass"><br>

<b>Hemligt ord (syns inte)</b><br>
<input name="elev_hemligt" type="password" id="elev_hemligt"><br>

<b>Instruktioner</b><br>
Fyll i förnamn, efternamn, klass och ditt hemliga ord i rutorna här ovanför.  Varje fråga har en textruta under sig, det är i den du skall fylla i ditt svar. 
Det är <b>förbjudet</b> att ha någon annan sida uppe på datorn utom provsidan. Likaså är det förbjudet att använda någon form av kontakt mellan elever 
(MSN, steam, facebook, sms  osv.) under provtillfället vare sig det sker mellan datorer eller telefoner. 
Om någon av dessa två regler bryts får du göra ett liknande prov med papper och penna efter skoltid istället.<br><br>

Läs igenom samtliga svar innan du trycker på ”spara”-knappen längst ner. När du väl sparat provet kan du inte ändra det längre. <br><br>
<h4>Lycka till!</h4>


<?php
echo $Q1;
echo ”<textarea  name=\"elev_svar1\" id=\"elev_svar1\" rows=\"20\" cols=\"40\"><br>”;
echo $Q2;
echo ”<textarea  name=\"elev_svar2\" id=\"elev_svar2\" rows=\"20\" cols=\"40\"><br>”;
echo $Q3;
echo ”<textarea  name=\"elev_svar3\" id=\"elev_svar3\" rows=\"20\" cols=\"40\"><br>”;
echo $Q4;
echo ”<textarea  name=\"elev_svar4\" id=\"elev_svar4\" rows=\"20\" cols=\"40\"><br>”;
echo $Q5;
echo ”<textarea  name=\"elev_svar5\" id=\"elev_svar5\" rows=\"20\" cols=\"40\"><br>”;
?>
<input type="hidden" name="inskickat" value="true">

<input type="submit" value="Spara" />
</form>
<p> Provet bygger på texten i  http://www.grundskoleboken.se/wiki/Andra_v%C3%A4rldskriget,_krigsutbrottet” target=”new”>
http://www.grundskoleboken.se som tar upp andra världskrigets utbrott.

</body>
</html>

Starta gedit och klistra in koden här ovanför. Spara filen i var/www som ww2start.php. Gör en länk till provet från index.php och prova att göra provet som om du vore en elev.