mboost-dp1

Hjælp til c#


Gå til bund
Gravatar #1 - rune4000
31. maj 2008 16:21
Hej med jer,

Jeg vil stadig gerne have kommentarer på min kode, hvis der er nogen der gider!

Derudover så kan jeg ikke finde ud af at få den til at udskrive adresse, telefonnummer, dyrenavn og hvad der eller bliver tastet ind - er der nogen der kan hjælpe?

Programmet kan hentes her: http://rapidshare.com/files/119096761/Dyrehotel.zi...

Min programklasse ud som nedenstående.

*********************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dyrehotel
{
class Program //Opretter klassen program
{
static void Main(string[] args)
{
char svar = '1';
string aktivitet; // attributter


do //do - while loop starter
{
Console.WriteLine("Vælg dyr: Tast 1 for fisk eller 2 for hund");//skriver teksten
Dyr voresDyr;

string b = (Console.ReadLine());//opretter en string b som den
//laver ud fra en console.readline, hvilket vil sige den bruger det input der kommer
//der fra.

switch (b)//bruger en switch, som går ud fra string b.
{


case "1": //Hvis string b = "1" laver den sin tekst med du har valgt fisk
Console.WriteLine("Du har valgt en fisk" + "\n");
voresDyr = new Fisk();//constructor

Console.WriteLine("Indtast Aktivitet for fisken:");
aktivitet = Console.ReadLine();

break; //break gør den falder ud af "switchen"

case "2": //hvis string b = "2" skriver den du har valgt hund... osv osv..
Console.WriteLine("Du har valgt en hund" + "\n");
voresDyr = new Hund(); //constructor

Console.WriteLine("Indtast Aktivitet for hunden:");
aktivitet = Console.ReadLine();

break; //break gør at den falder ud af switchen

default: //default siger vel sig selv... det er hvis string b ikke = 1 eller 2...
Console.WriteLine("\n*** ERROR 1 ***\nDu har ikke valgt et dyr vi har!\nPrøv igen.\n\n");

continue;//Continue gør at den hopper tilbage... (dette kan bruges da det er i starten...
//Ellers ville den hoppe for langt tilbage... (der er mange andre metoder)

}


Hund hunden = new Hund(); // opretter en instans/objekt af klassen hund
Fisk fisken = new Fisk(); //opretter en instans/objekt af klassen fisk

Reservation VoresReservation = new Reservation(); //opretter en instans/objekt af klassen/typen Reservation
VoresReservation.Aktivitet = aktivitet; //assigner m_Aktivitet en værdi via. Aktivitet propertien

Kunde voresKunde = new Kunde(); //opretter en instans/objekt af klassen Kunde
VoresReservation.Kunden = voresKunde; //assigner en værdi til kunde

voresKunde.Navn = "navn"; //assigner en værdi til Navn
voresKunde.Adresse = "add"; //assigner en værdi til Adresse
voresKunde.Telefon = "tlf"; //assigner en værdi til Telefon

Dyr voresNavn = new Dyr(); //opretter en instans/objekt af klassen Dyr
VoresReservation.Dyr = voresDyr; // assigner m_Dyr en værdi via. en property

voresNavn.DyreNavn = "navn"; //assigner en værdi til DyreNavn
voresNavn.Foder = "fodernavn"; //assigner en værdi til Foder



Console.WriteLine(VoresReservation.UdskrivReservation()); //Udskriver reservationen fra klassen reservation
Console.WriteLine("Reservationsnummer: " + VoresReservation.ReservationsNummer);//udskriver reservationsnummer
Console.WriteLine(VoresReservation.Aktivitet); //Udskriver aktivitet

Console.WriteLine("************************************");

Console.WriteLine(VoresReservation.UdskrivReservation()); //Udskriver reservationen fra klassen reservation
Console.WriteLine("Reservationsnummer: " + VoresReservation.ReservationsNummer);// udskriver reservationsnummer
Console.WriteLine(VoresReservation.Aktivitet); //Udskriver aktivitet

Console.ReadLine();

Console.WriteLine("Flere reservationer?: Tast 1 for ja eller 2 for nej" + "\n");
svar = char.Parse(Console.ReadLine());
} while (svar == '1'); //do while loop slutter

}


}
}
Gravatar #2 - zin
1. jun. 2008 22:06
Så vidt jeg kan se er det eneste der indtastes fra brugerens side "aktivitet", og hvilken type dyr der skal reserveres, intet andet - resten er hardcoded værdier.
Men jeg kan fortælle dig allerede nu at du burde dele din kode op i flere klasser ellers bliver programmet meget hurtigt totalt uoverskueligt.
Gravatar #3 - rune4000
2. jun. 2008 14:49
Hej ZiN,

Det er fordi det kun er program klassen jeg har sat ind i ovenstående. Resten kan ses her:
 using System; // system = namespace
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dyrehotel
{
class Program //Opretter klassen program
{
static void Main(string[] args) // statisk metode Main der altid skal være der.
{
char svar = '1';
string aktivitet; // felter


do //do - while loop starter. Gør nedenstånde, og kør igen hvis While betingelsen er opfyldt.
{
Console.WriteLine("Vælg dyr: Tast 1 for fisk eller 2 for hund");//skriver teksten. Console objektet. WriteLine = statisk metode i klassen Console
Dyr voresDyr;

string b = (Console.ReadLine());//opretter en string b som den
//laver ud fra en console.readline, hvilket vil sige den bruger det input der kommer
//der fra.

switch (b)//bruger en switch, som går ud fra string b. Switch er godt hvis man har mange valg, i dette tilfælde kunne det være mange dyr.
{
case "1": //Hvis string b = "1" laver den sin tekst med du har valgt fisk
Console.WriteLine("Du har valgt en fisk" + "\n");
voresDyr = new Fisk();//constructor opretter en instans/objekt af klassen Fisk

Console.WriteLine("Indtast Aktivitet for fisken:");
aktivitet = Console.ReadLine();

break; //break gør den falder ud af "switchen"

case "2": //hvis string b = "2" skriver den du har valgt hund... osv osv..
Console.WriteLine("Du har valgt en hund" + "\n");
voresDyr = new Hund(); //constructor opretter en instans/objekt af klassen Hund

Console.WriteLine("Indtast Aktivitet for hunden:");
aktivitet = Console.ReadLine();

break; //break gør at den falder ud af switchen

default: //default siger vel sig selv... det er hvis string b ikke = 1 eller 2...
Console.WriteLine("\n*** ERROR 1 ***\nDu har ikke valgt et dyr vi har!\nPrøv igen.\n\n");

continue;//Continue gør at den hopper tilbage... (dette kan bruges da det er i starten...
//Ellers ville den hoppe for langt tilbage.

}

Reservation VoresReservation = new Reservation(); //opretter en instans/objekt af klassen/typen Reservation (constructor uden argumenter)
VoresReservation.Aktivitet = aktivitet; //assigner m_Aktivitet en værdi via. Aktivitet egenskaben

Kunde voresKunde = new Kunde(); //opretter en instans/objekt af klassen Kunde (constructor uden argumenter)
VoresReservation.Kunden = voresKunde; //assigner en værdi til kunde

voresKunde.Navn = "navn"; //assigner en værdi til Navn
voresKunde.Adresse = "add"; //assigner en værdi til Adresse
voresKunde.Telefon = "tlf"; //assigner en værdi til Telefon

VoresReservation.Dyr = voresDyr; // assigner en værdi til dyr

voresDyr.DyreNavn = "navn"; //assigner en værdi til DyreNavn
voresDyr.Foder = "fodernavn"; //assigner en værdi til Foder



Console.WriteLine(VoresReservation.UdskrivReservation()); //Kalder metoden udkrivReservation klassen reservation

Console.WriteLine("************************************");

Console.WriteLine(VoresReservation.UdskrivReservation()); //Udskriver reservationen fra klassen reservation

Console.ReadLine();

Console.WriteLine("Flere reservationer?: Tast 1 for ja eller 2 for nej" + "\n");
svar = char.Parse(Console.ReadLine());
} while (svar == '1'); //do while loop slutter. While løkken er i modsætning til For løkken ikke baseret på at en numerisk variabel skal nå en værdi,
//men at en betingelse er opfyldt - i dette tilfælde at der bliver tastet 1. Her ved man ikke hvor mange gange løkken skal køre.

}


}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dyrehotel
{
public class Reservation //Opretter klassen reservation
{
//Statisk tæller til reservationsnumre.
private static int m_ReservationsCounter = 1;


//private felter for klassen
private int m_ReservationsNummer; //Medlemmerne er udelukkende tilgængelige internt i klassen
private string m_Aktivitet;
private Dyr m_Dyr;
private Kunde m_Kunde;


public Reservation() //Metoden reservation
{
ReservationsNummer = m_ReservationsCounter;
m_ReservationsCounter++;

}
//Adgang type navn
public Kunde Kunden //offentlig egenskab
{
get
{
return m_Kunde; //"return" benyttes for at retunere en værdi fra klassen Kunde
}
set
{
m_Kunde = value; //den værdi der retuneres til argumentet "value" tildeles det private felt m_Kunde
}
}
public int ReservationsNummer //offentlig egenskab
{
get
{
return m_ReservationsNummer; //"return" benyttes for at retunere en værdi fra reservationsCounteren
}
set
{
m_ReservationsNummer = value; //den værdi der retuneres til argumentet "value" tildeles det private felt m_ReservationsNummer
}
}

public string Aktivitet //offentlig egenskab
{

get
{
return m_Aktivitet; //"return" benyttes for at retunere en værdi fra program klassen (VoresReservation.Aktivitet = aktivitet;)
}
set
{
m_Aktivitet = value; //den værdi der retuneres til argumentet "value" tildeles det private felt m_Aktivitet
}
}

public Dyr Dyr //offentlig egenskab
{

get
{
return m_Dyr; //"return" benyttes for at retunere en værdi fra klassen Dyr
}
set
{
m_Dyr = value; //den værdi der retuneres til argumentet "value" tildeles det private felt m_Dyr

}
}



public string UdskrivReservation() //Metode uden argumenter der retunere en streng til reservationen.
{
string tmp; //Bruges til at samle en streng

tmp = string.Format("\n" + "Kundenavn: " + Kunden.Navn + "\n"); // der formateres til en streng og udskrives værdi fra egenskaben Kunden der hentes fra egenskaben Navn i klassen Kunde via ovenstående
tmp += string.Format("Kunde Adresse: " + Kunden.Adresse + "\n");
tmp += string.Format("Kunde Tlf: " + Kunden.Telefon + "\n");
tmp += string.Format("Aktivitet: " + Aktivitet + "\n");
tmp += string.Format("Dyr: " + Dyr.Race + "\n");
tmp += string.Format("Dyrenavn: " + Dyr.DyreNavn + "\n");
tmp += string.Format("Reservationsnummer: " + ReservationsNummer + "\n");

return tmp;

}
}
}


 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dyrehotel
{


public class Kunde //Opretter klassen Kunde
{
//private felter for klassen
private string m_Navn;
private string m_Adresse;
private string m_Telefon;

//klassens metode

public Kunde() //offentlig metode Kunde
{

}
//virkefelt, type, egenskabens navn
public string Navn //offentlig egenskab
{

get
{
return m_Navn; //"return" benyttes for at retunere en værdi fra program klassen (voresKunde.Navn = "navn";)
}
set
{
Console.WriteLine("Indtast kundenavn: "); //Skriver i konsollen via den statiske metode WriteLine
m_Navn = Console.ReadLine(); //Læser fra konsollen og tildeler m_Navn en værdi
}
}
public string Adresse //offentlig egenskab
{

get
{
return m_Adresse; //"return" benyttes for at retunere en værdi fra program klassen (voresKunde.Adresse = "add";)
}
set
{
Console.WriteLine("Indtast adresse: ");
m_Adresse = Console.ReadLine();
}
}
public string Telefon //offentlig egenskab der kaldes fra programklassen
{

get
{
return m_Telefon; //"return" benyttes for at retunere en værdi fra program klassen (voresKunde.Telefon = "tlf";)
}
set
{
Console.WriteLine("Indtast telefonnr.: "); //voresKunde.Telefon = "tlf";
m_Telefon = Console.ReadLine();
}
}

}
}


 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dyrehotel
{
public class Dyr //Opretter klassen Dyr
{
//attributter for klassen
protected string m_Race; //Medlemmerne er udelukkende tilgængelige internt i klassen og for de nedarvede klasser Hund/Fisk
protected string m_Navn;
protected string m_Foder;

public string Race //offentlig tilgængelig metode
{
get
{
return m_Race;
}
set
{
m_Race = value;
}
}
public string DyreNavn //offentlig metode
{
get // returnerer attributten variabels indhold
{
return m_Navn;
}
set // gemmer variabelnavns indhold i attributten "variabel"
{
Console.WriteLine("Indtast dyrenavn: ");
m_Navn = Console.ReadLine();
}
}
public string Foder
{
get
{
return m_Foder;
}
set
{
Console.WriteLine("Indtast dyrefoder: ");
m_Foder = Console.ReadLine();
}
}
}
}




 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dyrehotel
{
class Hund : Dyr //Opretter klassen hund der nedarver fra klassen Dyr
{

public Hund() //offentlig metode
{
Race = "Hund";
}

}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dyrehotel
{
public class Fisk : Dyr //opretter klassen fisk
{

public Fisk() //offentlig metode
{
Race = "Fisk";
}

}
}
Gravatar #4 - Jonasee
2. jun. 2008 15:26
du kunen bruge System.Text.RegularExpressions til at lave Regular Expressions så du nemt kan tjekke om den data du for fra en bruger er den type du skal brug
Gravatar #5 - thorjak
2. jun. 2008 20:28
Vil lige prøve at kigge på det imorgen når jeg kommer på arbejde.

Men tror at du måske skriver lidt for meget dokumentation, omkring alle dine ting.

Det bliver meget svært at læse, og det meste er jo ret indlysende hvad det gør ?
Gravatar #6 - Acro
2. jun. 2008 22:10
En god huskeregel er, at man skal kommentere, hvorfor man gør noget, og ikke hvad man gør. Nu kommer jeg lige med et oversimplificeret eksempel, men pointen skulle være klar:

Det her er forkert:
// Sætter værdien af i til 1
int i = 1;


Det her er rigtigt:
// Initialiserer i til 1, fordi det første element på listen er placeret der
int i = 1;


Kommentarer skal give en programmør mulighed for at forstå tankerne, den oprindelige udvikler har gjort sig - ikke at lære vedkommende programmeringssproget.
Gravatar #7 - thorjak
3. jun. 2008 08:48
Har lige taget det igenne, og det ser da ud til at virke fint ?
Gravatar #8 - rune4000
3. jun. 2008 14:58
Jeps det virker fint - ville bare have lidt kommentarer.
Gravatar #9 - thorjak
3. jun. 2008 15:53
okay, men der er lidt kode som ikke er nødvendigt, og så få lige styr på al din kommentar til tingende.

Tror heller ikke det hjælper dig selv ;)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login