_pcv_ Skrevet 11. mai 2013 Del Skrevet 11. mai 2013 Hei, trenger litt bistand for å komme videre med et Windows-program. Jeg lager et spørreskjema med 600 spørsmål. Antall spørsmålsledd er konstant (altså trenger ikke å legge til/endre spørsmålene). Hvert spørsmål har fire svaralternativer. Spørsmålene skal vises en og en og svaret til hvert spm. angis vha. fire radiobuttons. Når alle spørsmålene er besvart, skal resultat regnes ut i flere ulike kategorier. Jeg trenger altså å hente frem ett og ett spørsmål fra "et sted" og brukerens svar må også lagres "et sted". Brukerens svar/resultat må kunne lagres i fil el. database for å kunne hentes frem igjen senere. Jeg er usikker på om spørsmålene og svarene (samt brukerID) bør lagres i arrays, lists<T> eller database (sql compact edition?). Råd tas imot med stor takk! Jeg er forresten nybegynner i programmering. Har bestemt meg for å lære C# (fremfor Python, som jeg også vurderte) og har nå tenkt ut dette programmet for å lære gjennom et spesifikt prosjekt etter å ha lest noen C# bøker og gjort en del syntaksøvelser. Lenke til kommentar
torbjørn marø Skrevet 11. mai 2013 Del Skrevet 11. mai 2013 (endret) Det virker som om kravet ditt er at dataene skal persisteres - altså lagres for bruk også etter at programmet er stengt ned. Da trenger du som du sier en database eller lagring til en eller annen fil. array, List<T> etc er ikke et alternativ til dette; array og list er datastrukturer som holder på dataene dine i minne mens programmet kjører. Du vil altså sansynligvis ha behov for begge deler - å holde på dataene i minne samt persistere dem mellom kjøringene. Siden du er nybegynner ville jeg anbefale å bruke dette programmet til å lære deg å jobbe med rene tekstfiler. Du kan f.eks. lagre svarene til en fil på formatet: SPØRSMÅLSNUMMER:SVARALTERNATIV Eksempel: 1:A 2:C 3:B 4:A ...osv Og så kan du holde på dataene i minne i f.eks et array av type char med lengde 600. Du kan da lese inn denne filen og parse den for å opprette arrayet. Det finnes selvsagt tusen fremgangsmåter for hva du skal lage, så det er bare å velge én av dem og se hvordan det går. Det verste som kan skje er at du lærer at noen av dem ikke var så bra OPPDATERING: Spørsmålene ville jeg kanskje også lagret som en enkel tekstfil, hvor et nytt spørsmål starter på hver skjette linje (de fem linjene mellom er de fire alternativene + en bokstav som sier hvilket alternativ som er riktig. Eller så kan du lagre dem som XML eller JSON. Da kan du benytte ferdiglaget funksjonalitet for å parse og lagre. Men jeg anbefaler altså å begynne helt på basic med rene tekstfler. Endret 11. mai 2013 av torbjørn marø 1 Lenke til kommentar
_pcv_ Skrevet 11. mai 2013 Forfatter Del Skrevet 11. mai 2013 Takk for utfyllende og godt svar! Dette vil få meg videre en stund . Da går jeg for å lese fra og skrive til tekstfil (eller XML, - får tenke litt på det). Med en slik løsning vil vel database bli overflødig? Persisteringen "mellom kjøringene" vil bli tatt hånd om av tekstfilen/XML...? Lenke til kommentar
process Skrevet 11. mai 2013 Del Skrevet 11. mai 2013 (endret) Du kan lagre det i en datastruktur i programmet ditt som en array eller list. Det som er vesentlig her er at hvis du velger å lagre det i en lagringsløsning, altså en database eller flatfil, så kan du velge hvilke data som skal leses inn i minnet når det skal brukes. Dersom du tenker å initialisere hele datastrukturen din ved oppstart har det i dette tilfellet lite å si hvordan du lagrer dataene, da alt ligger i minnet uansett. Det avgjørende er minnebruken til programmet, er den akseptabel for deg med alle dataene lastet i datastrukturen, så gå for det. Er den ikke det må du begynne å se på lagringsløsninger. Flatfil på SSD er helt greit, men gjerne formatert med XML eller lignende. Endret 11. mai 2013 av process Lenke til kommentar
_pcv_ Skrevet 11. mai 2013 Forfatter Del Skrevet 11. mai 2013 Process, vet ikke om jeg forsto svaret helt... Hva mener du med at det har lite å si hvordan jeg lagrer dataene? Hvis jeg ikke velger "en lagringsløsning" (database el. flatfil), så mister jeg vel muligheten til å hente resultatet til Bruker NN inn i programmet igjen ved en senere anledning? Lenke til kommentar
process Skrevet 12. mai 2013 Del Skrevet 12. mai 2013 Var litt kjapp med det svaret, var på reise. Så ikke krav til lagring av svar og av en eller annen grunn trodde jeg det dreiet seg om en app. Lenke til kommentar
quantum Skrevet 18. mai 2013 Del Skrevet 18. mai 2013 Velger du databaseløsning er det antagelig enklest å bare lese ut ett og ett spørsmål, og lagre ett og ett resultat, etterhvert som brukeren går gjennom spørsmålene. Da slipper du å klø deg i hodet mht. array vs. list også. Lenke til kommentar
_pcv_ Skrevet 18. mai 2013 Forfatter Del Skrevet 18. mai 2013 Hei Quantum, takk for innspill. Har forsøkt å Google hvordan å lese ut ett og ett spørsmål fra database til label, men finner få løsninger. Jeg har lagd databasetabell (SQL Server Compact Ed. 4) og muliggjort bruk av LINQ to SQL-CE i Visual Studio Express. Om du også har innspill til kode til forslaget ditt, setter jeg pris på det... Lenke til kommentar
quantum Skrevet 18. mai 2013 Del Skrevet 18. mai 2013 Sorry, jeg programmerer ikke på win/.net-plattformen og kan derfor bare bidra med generisk svada :-( Lenke til kommentar
j0achim Skrevet 15. juni 2013 Del Skrevet 15. juni 2013 (endret) Anbefaler virkelig å ta en tit på EntityFramework som enkelt tar seg av skjema til objekt mapping (ORM). EntityFramework lar seg veldig enkelt installere med NuGet og er da klart til bruk Da kan du behandle spørsmålene enkelt som klasse objekter som igjen gjør koden mer oversiktlig og mye enklere å vedlikeholde etter min mening. (EntityFramework tar seg av lagring av data i "ønskelig" database, uten at du trenger å lage skjema selv) Endret 15. juni 2013 av j0achim Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå