03. november 2004 - 11:59Der er
37 kommentarer og 1 løsning
opbygning af opgave?
Hej jeg skal lave et program, der fra start oprettet 20 studerende, der hver har en status for hver enkelt opgave de har lavet (godkendt, ikke godkendt og ikke afleveret) for 21 opgaver. I programmet skal man kunne ændre status for de forskellige opgaver og kunne vise hvor mange der har afleveret f.eks opgave 13 og kunne gå ind på en studerende og se status for alle opgaver for vedkommende(de studerende skal kunne identificeres gemmen deres Cpr nummer.
ps. brugergrænsefladen er en textbaseret menu i terminalvinduet, som jeg har lavet, jeg har haft java i 2 måneder, så mit kendskab er ikke helt vildt, men nogenlunde.
spørgsmål: hvordan skal jeg oprette de studernede med deres tilhørende opgaver? skal jeg bruge array (2d array, eller måske 3d array), arraylist, hashmap, eller hvordan skal jeg bygge det op?
Jeg er ikke sikker på at jeg helt forstår opgaven men måske noget a la: en klasse Studerende 20 instanser af Studerende fra start en ArrayList med alle Studerende Studerende indeholder et array med 20 elementer med status
Det kan godt laves smartere, men det det her må være en simpel løsning.
hmm.... er ikke helt sikker på jeg forstår det kan du måske gi nogle eksempler. er det overhoved nødvendigt at bruge arraylist jeg ved jo hvor mange studerende der er og skal ikke kunne tilføje flere, så er det ikke smartest at bruge array i stedet for.
Du kan bare lave en enkelt arraylist som holder styr på opgaver... og en enkelt arraylist som holder styr på studerende...
I den arraylist som holder styr på opgaverne kan fx være en arraylist af typen int[] dvs... så kan et 1tal fx betyde godkendt, 2tal ikke godkendt, 3tal ikke afleveret.
via. en lykke kan du tælle hvor mange 1 taller der er hvis du vil have et print af hvor mange godkendte der er osv
jeg har ikke lært om main klasser endnu, så jeg tror ikke laver laver en main, så vidt jeg ved er main hvis det er en applikation ellers er det en applet? og vi skal vidst lave en applet. jeg har en klasse der hedder opgaver og studerende og menu. i klassen studerende opretter jeg alle de studerende i et array og i klassen opgaver opretter jeg opgaverne i et array, men hvordan? hvis opgaverne skal laves i et 2d array og hvorfor i et 2d? hvordan gør jeg det? nogle der kan gi et eksempel? hvis man har en studerende der hedder IB og en opgave der hedder datalogiU1 og den er godkendt?
Hvis opgaverne er på navn og ikke fortløbende nummerret, så skal det array med 20 elementer udskiftes med en HashMap som mapper fra opgavenavn til status.
Hvis du vil være fri for at lade en løkke løbe ArrayList (eller array) med studerend eigennem kunne du også putte dem i en HashMap som mapper fra navn til Studerende objekt.
F.eks. ja (jeg kan ikke helt gennemskue dine klasser men det kunne godt være løsningen - det kunne også være at opgaverne skulle ligges ind i de studerende - det afhænger af opgaven og dit design)
jeg har en 3 klasser: Studerende, Opgaver og Menu i Studerende har jeg 2 felter (navn og cpr) i Opgaver har jeg 3 felter (fag, identifikation, status) i Menu har jeg den menu jeg har laver og her putter jeg instanserne af Studerende ind i et Array og instanserne af Opgaver ind i et andet Array.
i klassen Studerende har jeg 2 parameter i konstroktoren, et hvor man skriver navner og et hvor man skriver cpr nummeret.
i klassen Opgaver har jeg 3 parameter i konstroktoren, et hvor man skriver faget et hvor man skriver hvilken opgave der er tale om og et hvor man skriver status på opgaven.
er det rigtigt det jeg har gjort nu? hvis ja hvordan får jeg det så til at spille sammen, hvis du forstår hvad jeg mener?
ps. er utrolig glad for du (arne v) gider at hjælpe mig.
ja jeg tænkte også på at jeg manglede noget i Studerende, jeg prøver at kigge på det i morgen, tak for hjælpen. ps. håber du er online i morgen, jeg har nok nogle flere spørgsmål, hvis du altså har tid og lyst.
jeg er gået lidt i stå, i klassen Studerende skal jeg da lave et eller andet der oprettet et objekt at klassen Opgaver hver gang der bliver lavet en studerende eller hvad? og hvis ja hvordan tilføje jeg så alle 21 opgaver til en studerende og den tilhørende status (husk: status skal kunne ændre sig som det eneste.)
kan godt se lidt hvad du mener, skal jeg så lave 23 felter i Studerende klassen, et med cpr et med navn og 21 med opgaverne hvor hver felt er et object af klassen opgaver?
nu har jeg lavet ´klassen studerende således: public class Studerende {
public String navn; public int cpr; public Opgaver[] opg;
public Studerende(String navn, int cpr) { opg = new Opgaver[21]; this.navn = navn; this.cpr = cpr;
tilføjOpgaver(); }
public void tilføjOpgaver() { opg[0] = new Opgaver("dat", "u1"); opg[1] = new Opgaver("dat", "u2"); opg[2] = new Opgaver("dat", "u3"); opg[3] = new Opgaver("dat", "u4"); opg[4] = new Opgaver("dat", "u5"); opg[5] = new Opgaver("dat", "u6"); opg[6] = new Opgaver("dat", "u7"); opg[7] = new Opgaver("dat", "u8"); opg[8] = new Opgaver("dat", "g1"); opg[9] = new Opgaver("dat", "g2"); opg[10] = new Opgaver("eø", "u1"); opg[11] = new Opgaver("eø", "u2"); opg[12] = new Opgaver("eø", "u3"); opg[13] = new Opgaver("org", "u1"); opg[14] = new Opgaver("org", "u2"); opg[15] = new Opgaver("org", "u3"); opg[16] = new Opgaver("org", "u4"); opg[17] = new Opgaver("sam", "u1"); opg[18] = new Opgaver("sam", "u2"); opg[19] = new Opgaver("sam", "u3"); opg[20] = new Opgaver("sam", "u4");
}
}
klassen opgaver ser således ud:
public class Opgaver {
public String fag; public String id;
public Opgaver(String fag, String identifikation) { id = identifikation;
this.fag = fag;
}
}
og så samler jeg det hele i en 3 klasse, der hedder Listeafstuderende hvor jeg putter hvert objekt af klassen studerende ind i et array der ser således ud: public void putStuIArray() { allestu[0] = new Studerende("ib", 1); allestu[1] = new Studerende("bo", 2); allestu[2] = new Studerende("Eva", 3); allestu[3] = new Studerende("Hans", 4); allestu[4] = new Studerende("Per", 5);
}
hvad synes du om alt det her? hvis det virker rigtigt, så er mit problem bare nu hvordan jeg tilføjer en status til hvert enkelt opgave nu.
som det er nu, så hver gang der bliver oprettet ét objekt af klassen Studerende så opretter den 21 objekter af klassen Opgaver, jeg mangler bare at få tilføjet en status til hvert enkelt opgave.
vil det sige jeg i Opgave klassen kun skal lave 2 felter, fag og identifikation og i Studernede klassen skal lave 3 felter, cpr, navn og status? men hvordan får jeg status for alle 21 opgaver ind i status felt, skal jeg lave status feltet til et array? og skal jeg så i den 3. klasse oprette 21 objekter fra klassen studerende, hvis det er måden at gøre det på, så har jeg bare lidt svært ved at lave så hver studerende for 21 status'er. i den 3 klasse skal jeg vel oprette alle 20 studerende hvor jeg skriver deres navn og cpr som parameter, men jeg skal jo så også fortælle hvad deres status for hvert enkelt opgave er hvordan gør jeg det?
hvad for en klasse skal jeg så lave hashmap i? men skal jeg oprette alle de 20 studernede i den 3. klasse med navn og cpr som parameter. og deres status for hvert enkelt opgave har jeg stadigvæk lidt svært ved at forstå tror jeg
nu har jeg i klassen studerende lavet så når man opretten en studerende skal jeg skrive navn og cpr som parameter og så oprettet den automatisk 21 objekter af klassen opgaver med hver deres id og fag her er et lille eks. public void tilføjOpgaver() { opg[0] = new Opgaver("dat", "u1"); opg[1] = new Opgaver("dat", "u2");
i den 3. klasse "Listeafstuderende" har jeg så samlet de studerende således:
public void opretStuderende() { allestu[0] = new Studerende("ib", 1); allestu[1] = new Studerende("bo", 2); }
hvis det er rigtigt det jeg har gjort? så mangler jeg at tilføje en status til hvert enkelt opgave for hver studerende det vil altså sige 20 studerende * 21 opgavestatus hvor i programmet skal jeg gøre det og hvordan kan jeg gøre det?
public class Studie { private final static int N = 4; private final static int MAT1 = 0; private final static int MAT2 = 1; private final static int STAT1 = 2; private final static int STAT2 = 3;
private HashMap studerende = new HashMap(); private Opgave[] opgaver = new Opgave[N];
public void addStuderende(String cpr, String navn) { studerende.put(cpr, new Studerende(cpr, navn, N)); }
public void addOpgave(int ix, String titel, String fag) { opgaver[ix] = new Opgave(titel, fag); }
tænkte på hvordan du har fået den til at kunne skelne imellem godkendt, ikke godkendt og ikke afleveret og hvordan du registrerer opgaverne. Metoden i eksemplet herover giver jo umiddelbart en ret "langsommelig" måde at registrerer på/ kræver meget indtastning. Skriv evt til mig på diver@pc.dk
jeg har heller ikke brugt den overståen løsning, men fandt min egen. skal du også afleverer opgaven på fredag? kommer du fra DØK studiet
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.