Vinnaren i pepparkakshustävlingen!
2018-08-01, 15:03
  #1
Medlem
Hej,

Håller på med ett bokningssytem för flygstolar. Har kommit till delen där användaren ska kunna göra en platsreservation, samt kunna få en uppdaterad vy på vilka stolar som finns tillgängliga.
Jag vet dock inte riktigt hur jag ska gå vidare. Jag har en 2d array med rader + kolumner samt ytterligare en array som lägger till "A", "B, "C," etc.

Det jag gissar att jag behöver göra är att skapa en metod som där använder kan skriva in vilket plats den vill reserverna. Denna stol blir t.ex ett "X" efter den har blivit reserverad. För att sedan få en uppdaterad vy av lediga platser så listas alla stolar förutom dom som har ett index med värde "X".

Vad tror ni? Har ni några tips? Skickar med mina arrayer för platserna om det ev skulle underlätta.

Kod:
static String flightSeats[][] = new String[10][4];
static String seatNumber[] = {"A", "B", "C", "D"}; 

public void setSeats(){

        for (int rows = 0; rows < 10; rows ++) {
            for(int colums = 0; colums < 4; colums++){

                flightSeats[rows][colums] = (rows+1) + seatNumber[colums];
            }
        }
    }

    public void showEmptySeats(){
        for (int rows = 0; rows < flightSeats.length; rows ++) {
            for(int colums = 0; colums < flightSeats[rows].length; colums++){
                System.out.print(flightSeats[rows][colums]);
                System.out.print(" ");
            }
            System.out.println();
        }
    }
Citera
2018-08-01, 20:29
  #2
Medlem
Har du lärt dig klasser än?
Citera
2018-08-01, 23:35
  #3
Medlem
Citat:
Ursprungligen postat av Gottisborgen
Har du lärt dig klasser än?

Ja alltså det där är en liten del av min kod och jo jag har den i en separat klass från mitt main. Gör typ bara anrop från main. Tänkte att det var onödigt att inte skicka väsentlig kod
Citera
2018-08-02, 01:09
  #4
Medlem
Citat:
Ursprungligen postat av milleniumet
Ja alltså det där är en liten del av min kod och jo jag har den i en separat klass från mitt main. Gör typ bara anrop från main. Tänkte att det var onödigt att inte skicka väsentlig kod

Tänkte att du kunde skapa klasser för stolar/stolsrader för att hålla informationen om varje säte. Enklare så än med massa arrayer hit och dit.
Citera
2018-08-02, 10:13
  #5
Medlem
Citat:
Ursprungligen postat av Gottisborgen
Tänkte att du kunde skapa klasser för stolar/stolsrader för att hålla informationen om varje säte. Enklare så än med massa arrayer hit och dit.

Stol/ar som en egen klass? Tror inte det är nödvändigt för detta "simpla" program. Rätta mig om jag har fel!
Citera
2018-08-02, 13:27
  #6
Medlem
Citat:
Ursprungligen postat av Gottisborgen
Tänkte att du kunde skapa klasser för stolar/stolsrader för att hålla informationen om varje säte. Enklare så än med massa arrayer hit och dit.

Efter lite funderingar börjar jag inse att ditt förslag kanske är lättare. Är dock inte helt med på svängarna så har svårt att säga mer än så. Menar du alltså att jag ska ha en boolean för ledig/icke ledig och någon positionsvariabel för platsen?
Citera
2018-08-02, 14:41
  #7
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av milleniumet
Efter lite funderingar börjar jag inse att ditt förslag kanske är lättare. Är dock inte helt med på svängarna så har svårt att säga mer än så. Menar du alltså att jag ska ha en boolean för ledig/icke ledig och någon positionsvariabel för platsen?
Varje stol har en enum (bool är en enklare lösning) som lagrar dess status. Kör du enum så kan du även lägga in tillstånd som NERSPYDD, vilket kanske bör presenteras på annat sätt för resenärer. Varje stol har också en rad och en kolumn. Även de kan vara egna klasser, kolumnklaasen kan innehålla info om fönsterrad. Skolklassen kan sedan fyllas på med all möjlig info om platsen, se ex SeatGuru.
Citera
2018-08-02, 15:47
  #8
Medlem
Citat:
Ursprungligen postat av milleniumet
Efter lite funderingar börjar jag inse att ditt förslag kanske är lättare. Är dock inte helt med på svängarna så har svårt att säga mer än så. Menar du alltså att jag ska ha en boolean för ledig/icke ledig och någon positionsvariabel för platsen?

Fick feeling och gjorde detta själv.
Enklaste lösningen är att ha en simpel klass för säten, som får in rad(integer) och nummer(character). Detta petas sedan in i en lista som kommer att innehålla alla säten i planet. För att få ut ett specifikt säte kan man använda enkel Linq lösning där man vill få sätet med rad x och bokstav y.

Så här ser t.ex. skapandet av 'flygplanet' ut.

Kod:
List<SeatSeats = new List<Seat>();
// Rows
for (int rowNumber 1rowNumber 5rowNumber++)
{
  
// Seats
  
for (char seatLetter 'A'seatLetter <= 'Z'seatLetter++)
  {
    
Seats.Add(new Seat(rowNumberseatLetter));
    
Console.WriteLine($"Added Seat {rowNumber}{seatLetter}");
  }


Printar:

Added Seat 1A
Added Seat 1B
Added Seat 1C
Added Seat 1D
...


Och här väljer vi ut ett specifikt säte, och försöker att boka det. Jag använde mig liksom Neksnor av en enum för att visa statusen på sätet, en bool kan bara ha två lägen, ledig och bokad, en enum kan som sagt ha fler, t.ex. Okänd, Ledig, Bokad, Obokbar, osv. Finns flygplan där t.ex. ena sidan har toaletter, således finns inte t.ex. 18A, 18B, 18C, då kan vi 'dölja' dem. Beror ju på hur avancerat man vill göra grejerna.

Kod:
var seat3B Seats.Where(seat => seat.Row.Equals(3) && seat.Letter.Equals('B')).Single();
Console.WriteLine($"Booking Seat 3B : { (seat3B.ChangeSeatStatus(Seat.SeatStatus.Booked) == true ? "Success" : "Failed")}"); 

*edit*
Haha, oj. Detta är ju Java delen. Ursäkta mig, koden här är tyvärr C#, men du bör ju fatta vinken med det hela, de är väldigt lika språk, dock saknar Java något Linq linkande.
__________________
Senast redigerad av Gottisborgen 2018-08-02 kl. 15:58.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback