Ta bort saker och lägga till i en meny

Permalänk
Medlem

Ta bort saker och lägga till i en meny

Hej!

Jag har en uppgift där jag ska göra en meny åt en bilhandlare, där man ska ha fyra kategorier, Sälja bil, köpa bil, ny kund och gammal kund. Det har jag lyckats lösa och min meny funkar bra. MEN! Jag ska även, när en bil blivit såld, ta bort den från menyn "köpa bil" så den inte finns tillgänglig. Är det någon som har möjligheten att hjälpa mig med detta?
Bifogar min meny, så långt jag kommit nedan:
using System;

namespace uppdrag2cs { class Program { static void Main(string[] args) { int menySelection = 0; int tal = menySelection; do { Console.WriteLine("Välj alternativ"); Console.WriteLine("1.Sälja bil"); Console.WriteLine("2. Köpa ny bil"); Console.WriteLine("3. Handlat tidigare (gammal kund)"); Console.WriteLine("4. Ny kund"); Console.WriteLine("0. Avsluta programmet"); menySelection = 0; string menySelection_string = Console.ReadLine(); /*användarens val*/ menySelection = int.Parse(menySelection_string); if (menySelection == 1 || menySelection == 1) { Console.WriteLine("Härligt att du funderar på att sälja din bil, vad är det för modell?"); string bilmodell = Console.ReadLine(); Console.WriteLine("jag har en" + bilmodell); Console.WriteLine("Okej, intressant. Vilken årsmodell är det? Samt hur många mil har den gått?"); string årsmodell = Console.ReadLine(); Console.WriteLine("Okej, så det är en" + årsmodell + ", det är ju intressant absolut"!); Console.WriteLine("Den är ju i väldigt fint skick,så vi skulle kunna erbjuda 250.000kr för bilen, känns det bra för dig?"); Console.ReadLine(); } else if (menySelection == 2 || menySelection == 2) { Console.WriteLine("Köpa bil"); // lägg in info om köpa bilar // } else if (menySelection == 3 || menySelection == 3) { Console.WriteLine("Val tre"); tal = 7; // lägg in info om handlat tidigare } else if (menySelection == 4 || menySelection == 4) { Console.WriteLine("Val fyra"); //lägg in info om nya kunder// } else { Console.WriteLine("Ogiltigt val"); } } while (menySelection != 0); Console.WriteLine("programmet är slut"); } } }

Permalänk
Inaktiv

Tips: Använd [code]dinkodhär[/code]-taggar när du pastear kod för att få det presenterat med indentering osv.

Till saken: Du vill lagra bilar som är till salu i någon form av databas, även om denna "databas" bara består av en lista av bilar. När en bil sedan blir såld så markerar du den som såld, alternativt tar bort den från listan. Eftersom att du verkar prompta användaren en gång varje gång programmet körs, så vill du förmodligen spara denna databas till disk också.

Du kan gå så långt att du använder en faktiskt databas för detta, ex. sqlite, men upplever att det kanske är lite överkurs för dig just nu.

Simpelt exempel på hur du potentiellt kan göra:

public struct Listing { public string Model; public int Year; public int ValueInCents; } class Database { public void SaveToDisk(); public void LoadFromDisk(); public int CreateListing(string Model, int Year, int ValueInCents) { // Skapa ny listing med parametrarna ovan, lägg till i ForSale listan, och returnera det nya index från listan } public void RemoveListing(int Id) { // Ta bort listing med index Id från listan ForSale } public List<Listing> ForSale; } // ... sen lite varsom i din kod där du känner att dom olika kodraderna är lämpliga: Database MyDatabase; MyDatabase.ReadFromDisk(); // För att skapa en ny listing, om en bil läggs ut till salu MyDatabase.CreateListing(model, year, valueInCents); // För att printa ut alla listings int i = 0; foreach(var listing in MyDatabase.ForSale) { Console.WriteLine($"{i++}: Item for sale: {listing.Year} {listing.Model}, Price: {double(listing.ValueInCents) / 100.0}"); } // För att ta bort en listing, exempelvis om en bil sålts MyDatabase.RemoveListing(selectedIndex); MyDatabase.WriteFromDisk();

Permalänk
Medlem

Tack för tipset angående code! Jag förstår nästan ingenting av det du skriver, haha. Men när jag kopierade in koden i mitt dokument så kunde jag inte längre testköra programmet/koderna, vet du varför möjligtvis?

Permalänk
Inaktiv
Skrivet av enn:

Tack för tipset angående code! Jag förstår nästan ingenting av det du skriver, haha. Men när jag kopierade in koden i mitt dokument så kunde jag inte längre testköra programmet/koderna, vet du varför möjligtvis?

Japp, det fungerar inte pga. att du helt enkelt bara klippte och klistrade in skiten och förväntade dig att det skulle fungera. Du måste läsa igenom koden och förstå den. Delarna du inte förstår (kanske ex. struct, eller List<>) behöver du googla. Det är en stor del av att bli utvecklare. Ingen annan kommer göra din läxa åt dig utan du behöver kavla upp ärmarna och göra arbetet själv.

Finns några småbuggar i koden jag skrev också, dom kan vara lärorika för dig att lösa när du väl övergripande förstått vad koden gör.

Permalänk
Medlem
Skrivet av anon334363:

Japp, det fungerar inte pga. att du helt enkelt bara klippte och klistrade in skiten och förväntade dig att det skulle fungera. Du måste läsa igenom koden och förstå den. Delarna du inte förstår (kanske ex. struct, eller List<>) behöver du googla. Det är en stor del av att bli utvecklare. Ingen annan kommer göra din läxa åt dig utan du behöver kavla upp ärmarna och göra arbetet själv.

Finns några småbuggar i koden jag skrev också, dom kan vara lärorika för dig att lösa när du väl övergripande förstått vad koden gör.

Tror mig vilja förstå hela kodstycket nu, MEN. Jag stötte på ett nytt problem, när jag skriver in koderna, så slutar resten av texten att fungera (den som ligger under det jag skriver) men det händer redan vid public int ValueInCents;. Jag misstänker att, jag måste skapa ett nytt "rum" eller vad man ska kalla det, men är det så enkelt som att skriva public void Main (string[] args) så är texten under i samma "rum" som texten över listan? Jag hoppas du förstår min fråga!

Permalänk
Inaktiv
Skrivet av enn:

Tror mig vilja förstå hela kodstycket nu, MEN. Jag stötte på ett nytt problem, när jag skriver in koderna, så slutar resten av texten att fungera (den som ligger under det jag skriver) men det händer redan vid public int ValueInCents;. Jag misstänker att, jag måste skapa ett nytt "rum" eller vad man ska kalla det, men är det så enkelt som att skriva public void Main (string[] args) så är texten under i samma "rum" som texten över listan? Jag hoppas du förstår min fråga!

Vad menar du med att texten under slutar att fungera?

Vad menar du med rum? Menar du namespace? Eller scope?

public void Main definierar en metod. Metoden definieras för klassen vars scope koden skrivs i. Klassen i sin tur hamnar i det namespace du specificerat (och i vars scope klassen skrivs).

Rekommenderar starkt att du läser på om dessa koncept om dem inte är klara nog för dig än;
https://docs.microsoft.com/en-us/dotnet/csharp/programming-gu...
https://codingbee.net/c/c-methods-classes-and-namespaces

Main är dessutom en särskild metod som används som "entrypoint" för en applikation. Det är den metoden som körs när applikationen körs. Du vill alltså bara ha en sådan metod någonstans i din kod.
https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/p...

Permalänk
Medlem
Skrivet av enn:

Hej!

Jag har en uppgift där jag ska göra en meny åt en bilhandlare, där man ska ha fyra kategorier, Sälja bil, köpa bil, ny kund och gammal kund. Det har jag lyckats lösa och min meny funkar bra. MEN! Jag ska även, när en bil blivit såld, ta bort den från menyn "köpa bil" så den inte finns tillgänglig. Är det någon som har möjligheten att hjälpa mig med detta?
Bifogar min meny, så långt jag kommit nedan:
using System;

namespace uppdrag2cs { class Program { static void Main(string[] args) { int menySelection = 0; int tal = menySelection; do { Console.WriteLine("Välj alternativ"); Console.WriteLine("1.Sälja bil"); Console.WriteLine("2. Köpa ny bil"); Console.WriteLine("3. Handlat tidigare (gammal kund)"); Console.WriteLine("4. Ny kund"); Console.WriteLine("0. Avsluta programmet"); menySelection = 0; string menySelection_string = Console.ReadLine(); /*användarens val*/ menySelection = int.Parse(menySelection_string); if (menySelection == 1 || menySelection == 1) { Console.WriteLine("Härligt att du funderar på att sälja din bil, vad är det för modell?"); string bilmodell = Console.ReadLine(); Console.WriteLine("jag har en" + bilmodell); Console.WriteLine("Okej, intressant. Vilken årsmodell är det? Samt hur många mil har den gått?"); string årsmodell = Console.ReadLine(); Console.WriteLine("Okej, så det är en" + årsmodell + ", det är ju intressant absolut"!); Console.WriteLine("Den är ju i väldigt fint skick,så vi skulle kunna erbjuda 250.000kr för bilen, känns det bra för dig?"); Console.ReadLine(); } else if (menySelection == 2 || menySelection == 2) { Console.WriteLine("Köpa bil"); // lägg in info om köpa bilar // } else if (menySelection == 3 || menySelection == 3) { Console.WriteLine("Val tre"); tal = 7; // lägg in info om handlat tidigare } else if (menySelection == 4 || menySelection == 4) { Console.WriteLine("Val fyra"); //lägg in info om nya kunder// } else { Console.WriteLine("Ogiltigt val"); } } while (menySelection != 0); Console.WriteLine("programmet är slut"); } } }

Har ni gått igenom databashantering än, eller ska ni bara använda Array/List för att spara data i programmet under körning? Ska bilar i lager sparas i en fil?

if (menySelection == 1 || menySelection == 1)

Helt onödigt att göra jämförelsen två gånger, räcker med en gång.

Visa signatur

| EVGA Z170 FTW | i7 6700k | ASUS RTX 3070 | 16GB DDR4 3200MHz | Cooler Master V850 | Samsung 840 Evo 250GB + 2x WD Black 500GB + Seagate 2TB SSHD + Samsung 970 Evo M.2 500GB |

Permalänk
Medlem
Skrivet av anon334363:

Vad menar du med att texten under slutar att fungera?

Vad menar du med rum? Menar du namespace? Eller scope?

public void Main definierar en metod. Metoden definieras för klassen vars scope koden skrivs i. Klassen i sin tur hamnar i det namespace du specificerat (och i vars scope klassen skrivs).

Rekommenderar starkt att du läser på om dessa koncept om dem inte är klara nog för dig än;
https://docs.microsoft.com/en-us/dotnet/csharp/programming-gu...
https://codingbee.net/c/c-methods-classes-and-namespaces

Main är dessutom en särskild metod som används som "entrypoint" för en applikation. Det är den metoden som körs när applikationen körs. Du vill alltså bara ha en sådan metod någonstans i din kod.
https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/p...

Åh tusen tack!! Nu klarna det ännu mer. Jo jag menar att koderna blir rödmarkerade och går inte att fixa till för vad jag än gör blir det rött streck under (som de blir vid error). Det jag menar med rum är Namespace tror jag. Det jag undrar är, om listan bör ligga i en egen namespace eller i en hel scope? Och hur fixar jag en egen namespace eller scope?

Permalänk
Medlem
Skrivet av BrutalSwede:

Har ni gått igenom databashantering än, eller ska ni bara använda Array/List för att spara data i programmet under körning? Ska bilar i lager sparas i en fil?

if (menySelection == 1 || menySelection == 1)

Helt onödigt att göra jämförelsen två gånger, räcker med en gång.

Databashantering är inget jag känner till alls, läser programmering 1 på distans. Så antar att man bara ska använda Array/list
Tack för tipset!

Permalänk
Medlem
Skrivet av enn:

Databashantering är inget jag känner till alls, läser programmering 1 på distans. Så antar att man bara ska använda Array/list
Tack för tipset!

I så fall behöver du en Array/Lista som du kan spara dina bilar som finns i lager (Denna lista behöver ligga så att du alltid kan komma åt den när applikationen körs, fundera lite på vilket scope den behöver ligga i). Du lär också behöva en klass som representerar fordonen, exempelvis class Car eller class Vehicle (Klassen använder du även för listan, dvs Car[] cars som exempel). Fundera lite på vad för information ett fordon behöver innehålla, såsom exempelvis namn, pris, färg etc.

Visa signatur

| EVGA Z170 FTW | i7 6700k | ASUS RTX 3070 | 16GB DDR4 3200MHz | Cooler Master V850 | Samsung 840 Evo 250GB + 2x WD Black 500GB + Seagate 2TB SSHD + Samsung 970 Evo M.2 500GB |

Permalänk
Medlem
Skrivet av BrutalSwede:

I så fall behöver du en Array/Lista som du kan spara dina bilar som finns i lager (Denna lista behöver ligga så att du alltid kan komma åt den när applikationen körs, fundera lite på vilket scope den behöver ligga i). Du lär också behöva en klass som representerar fordonen, exempelvis class Car eller class Vehicle (Klassen använder du även för listan, dvs Car[] cars som exempel). Fundera lite på vad för information ett fordon behöver innehålla, såsom exempelvis namn, pris, färg etc.

AAAH tusen tack!! Nu vet jag hur jag ska göra!

Permalänk
Inaktiv
Skrivet av enn:

Åh tusen tack!! Nu klarna det ännu mer. Jo jag menar att koderna blir rödmarkerade och går inte att fixa till för vad jag än gör blir det rött streck under (som de blir vid error). Det jag menar med rum är Namespace tror jag. Det jag undrar är, om listan bör ligga i en egen namespace eller i en hel scope? Och hur fixar jag en egen namespace eller scope?

Ett "scope" är i princip allt som är mellan en { och }. Du kan ha flera scope i ett scope av olika typer. Vanligast är att man pratar om att namespaces skapar olika scopes, men kanske mest vanligt är att man pratar om olika scopes i en funktion.

Exempelvis:

void Method() { // Här börjar scope A int a = 0; if(a > 0) { // Här börjar scope B int b = 3; a = 1; // Här slutar scope B } // Här slutar scope A }

I exemplet ovan så specificeras variabeln a i scope A, och är åtkomlig från både scope A och scope B. Variabeln b däremot specificeras i scope B och är endast åtkomlig från scope B och scopes som finns inuti scope B.

För att prata om errors; Läs dessa! Det är absolut viktigt för ditt lärande att du kan läsa och avtyda vad felmeddelandena betyder. Allra oftast så är det främst det översta felet som är relevant, då ett fel kan leda till många följande fel (som försvinner om det första felet fixas). Läs error-meddelandet, försök avtyda vad det betyder, googla felmeddelandet (exkludera det som är specifikt till din kod) så får du ofta upp förklaringar från andra som haft samma fel.

Permalänk
Medlem
Skrivet av BrutalSwede:

I så fall behöver du en Array/Lista som du kan spara dina bilar som finns i lager (Denna lista behöver ligga så att du alltid kan komma åt den när applikationen körs, fundera lite på vilket scope den behöver ligga i). Du lär också behöva en klass som representerar fordonen, exempelvis class Car eller class Vehicle (Klassen använder du även för listan, dvs Car[] cars som exempel). Fundera lite på vad för information ett fordon behöver innehålla, såsom exempelvis namn, pris, färg etc.

Nu fick jag felkod CS0501 på main när det ser ut såhär:

using System; namespace uppdrag2cs { class Program { static void Main(string[] args) } } class car { private string carmodel = ("Volvo"); } int menySelection = 0; int tal = menySelection; do { Console.WriteLine("Välj alternativ"); Console.WriteLine("1.Sälja bil"); Console.WriteLine("2. Köpa ny bil"); Console.WriteLine("3. Handlat tidigare (gammal kund)"); Console.WriteLine("4. Ny kund"); Console.WriteLine("0. Avsluta programmet"); menySelection = 0; string menySelection_string = Console.ReadLine(); /*användarens val*/ menySelection = int.Parse(menySelection_string); if (menySelection == 1 || menySelection == 1) { Console.WriteLine("Härligt att du funderar på att sälja din bil, vad är det för modell?"); string bilmodell = Console.ReadLine(); Console.WriteLine("jag har en" + bilmodell); Console.WriteLine("Okej, intressant. Vilken årsmodell är det? Samt hur många mil har den gått?"); string årsmodell = Console.ReadLine(); Console.WriteLine("Okej, så det är en" + årsmodell + ", det är ju intressant absolut"!); Console.WriteLine("Den är ju i väldigt fint skick,så vi skulle kunna erbjuda 250.000kr för bilen, känns det bra för dig?"); Console.ReadLine(); } else if (menySelection == 2 || menySelection == 2) { Console.WriteLine("Köpa bil"); Console.WriteLine("Välkommen, du är alltså intresserad av att köpa bil?"); Console.ReadLine(); Console.WriteLine("Ja, vi har ju några stycken inne. Här kan du se dem:"); } else if (menySelection == 3 || menySelection == 3) { Console.WriteLine("Gamla kunder"); tal = 7; //lägg in info om gamla kunder// } else if (menySelection == 4 || menySelection == 4) { Console.WriteLine("Val fyra"); //lägg in info om nya kunder// } else { Console.WriteLine("Ogiltigt val"); } } while (menySelection != 0); Console.WriteLine("programmet är slut"); } } }

Skulle du möjligtvis kunna förklara varför?

Permalänk
Inaktiv
Skrivet av enn:

Nu fick jag felkod CS0501 på main när det ser ut såhär:

using System; namespace uppdrag2cs { class Program { static void Main(string[] args) } } class car { private string carmodel = ("Volvo"); } int menySelection = 0; int tal = menySelection; do { Console.WriteLine("Välj alternativ"); Console.WriteLine("1.Sälja bil"); Console.WriteLine("2. Köpa ny bil"); Console.WriteLine("3. Handlat tidigare (gammal kund)"); Console.WriteLine("4. Ny kund"); Console.WriteLine("0. Avsluta programmet"); menySelection = 0; string menySelection_string = Console.ReadLine(); /*användarens val*/ menySelection = int.Parse(menySelection_string); if (menySelection == 1 || menySelection == 1) { Console.WriteLine("Härligt att du funderar på att sälja din bil, vad är det för modell?"); string bilmodell = Console.ReadLine(); Console.WriteLine("jag har en" + bilmodell); Console.WriteLine("Okej, intressant. Vilken årsmodell är det? Samt hur många mil har den gått?"); string årsmodell = Console.ReadLine(); Console.WriteLine("Okej, så det är en" + årsmodell + ", det är ju intressant absolut"!); Console.WriteLine("Den är ju i väldigt fint skick,så vi skulle kunna erbjuda 250.000kr för bilen, känns det bra för dig?"); Console.ReadLine(); } else if (menySelection == 2 || menySelection == 2) { Console.WriteLine("Köpa bil"); Console.WriteLine("Välkommen, du är alltså intresserad av att köpa bil?"); Console.ReadLine(); Console.WriteLine("Ja, vi har ju några stycken inne. Här kan du se dem:"); } else if (menySelection == 3 || menySelection == 3) { Console.WriteLine("Gamla kunder"); tal = 7; //lägg in info om gamla kunder// } else if (menySelection == 4 || menySelection == 4) { Console.WriteLine("Val fyra"); //lägg in info om nya kunder// } else { Console.WriteLine("Ogiltigt val"); } } while (menySelection != 0); Console.WriteLine("programmet är slut"); } } }

Skulle du möjligtvis kunna förklara varför?

Du behöver läsa på om hur C# fungerar på en väldigt grundläggande nivå. Googla "c# beginner tutorial". Förstår att du går nån distanskurs, men tror att till och med dom flesta lärare förutsätter att man lär sig lite själv först innan man anmäler sig till en kurs. Kanske kräver din lärare inte det, och isf bör han lära dig dom absoluta grunderna.

Permalänk
Medlem
Skrivet av enn:

Nu fick jag felkod CS0501 på main när det ser ut såhär:

using System; namespace uppdrag2cs { class Program { static void Main(string[] args) } } class car { private string carmodel = ("Volvo"); } int menySelection = 0; int tal = menySelection; do { Console.WriteLine("Välj alternativ"); Console.WriteLine("1.Sälja bil"); Console.WriteLine("2. Köpa ny bil"); Console.WriteLine("3. Handlat tidigare (gammal kund)"); Console.WriteLine("4. Ny kund"); Console.WriteLine("0. Avsluta programmet"); menySelection = 0; string menySelection_string = Console.ReadLine(); /*användarens val*/ menySelection = int.Parse(menySelection_string); if (menySelection == 1 || menySelection == 1) { Console.WriteLine("Härligt att du funderar på att sälja din bil, vad är det för modell?"); string bilmodell = Console.ReadLine(); Console.WriteLine("jag har en" + bilmodell); Console.WriteLine("Okej, intressant. Vilken årsmodell är det? Samt hur många mil har den gått?"); string årsmodell = Console.ReadLine(); Console.WriteLine("Okej, så det är en" + årsmodell + ", det är ju intressant absolut"!); Console.WriteLine("Den är ju i väldigt fint skick,så vi skulle kunna erbjuda 250.000kr för bilen, känns det bra för dig?"); Console.ReadLine(); } else if (menySelection == 2 || menySelection == 2) { Console.WriteLine("Köpa bil"); Console.WriteLine("Välkommen, du är alltså intresserad av att köpa bil?"); Console.ReadLine(); Console.WriteLine("Ja, vi har ju några stycken inne. Här kan du se dem:"); } else if (menySelection == 3 || menySelection == 3) { Console.WriteLine("Gamla kunder"); tal = 7; //lägg in info om gamla kunder// } else if (menySelection == 4 || menySelection == 4) { Console.WriteLine("Val fyra"); //lägg in info om nya kunder// } else { Console.WriteLine("Ogiltigt val"); } } while (menySelection != 0); Console.WriteLine("programmet är slut"); } } }

Skulle du möjligtvis kunna förklara varför?

class Program { static void Main(string[] args) } } class car {

Visual studio bör highlighta med en massa fel kring detta. Utöver CS0501 så bör du också få en tydlig beskrivning av felet i din error output. Detta är också ett utmärkt tillfälle att googla fram svaret på felmeddelandet (vilket är en stor del av lärandeprocessen).

Som nämndes ovan bör du nog gå igenom materialet du fått från kursledaren, och även kolla igenom några videor på grundläggande C# för att få hum om hur klasser, datastrukturer och kontrollflöden fungerar.

Visa signatur

| EVGA Z170 FTW | i7 6700k | ASUS RTX 3070 | 16GB DDR4 3200MHz | Cooler Master V850 | Samsung 840 Evo 250GB + 2x WD Black 500GB + Seagate 2TB SSHD + Samsung 970 Evo M.2 500GB |

Permalänk
Medlem

Vet inte alls om det är standard eller ej men när jag läst grunder i C# blev jag uppmanad att lägga varje class i en egen fil vilket gjorde livet oändligt mycket lättare.

Visa signatur

Primär: R9 3900X | ASUS X570-F Gaming | NH-D15 | 64GB@3200MHz | RTX 3080 10GB | Seasonic 850W | Fractal Define R6 |
Gamla bettan: i5 750@3.8GHz | 8GB | HD5770 | Corsair VS 550W | FD R2 |

Permalänk
Medlem

Tack herkkä och BrutalSwede, behövde hjälp med uppgiften men som ni båda skriver så ska man göra sin egen research och lära sig bygga upp/felsöka.
Kursen gick från att lära en string write/readlines och int till att be en bygga upp den här koden till bilhandlaren.

Visa signatur

Gainward 6800 GT 256 mb AGP, AMD Athlon XP 2800+ och 1024 mb RAM

Permalänk
Medlem

MS dokumentationen är inte så illa, de har exempel på slutet

https://docs.microsoft.com/en-us/dotnet/api/system.collection...

// LZ