c# - assigning user defined name to array element in reservation system -


i need on console based aeroplane seat reservation code (written in c#).

trying implement:

  • search seating passenger name/seat number

below code airplane class thought relevant question i'm asking, can provide more if necessary (the seating method has been simplified since quite big), thank you:

public static void seating()     {         console.write("key: " + "* - available " + " x - occupied" + "\n" + "\n");         //fc          console.write("     \ta\tb\tc\td\te\tf");         console.write("\n");         console.write("row 1\t");         console.write(airchar[0, 0]);         console.write("\t");         console.write(airchar[0, 1]);         console.write("\t");         console.write(airchar[0, 2]);         console.write("\t");         console.write(airchar[0, 3]);         console.write("\n");          console.write("row 2\t");         console.write(airchar[1, 0]);         console.write("\t");         console.write(airchar[1, 1]);         console.write("\t");         console.write(airchar[1, 2]);         console.write("\t");         console.write(airchar[1, 3]);         console.write("\n");           //ec          console.write("row 3\t");         console.write(airchar[2, 0]);         console.write("\t");         console.write(airchar[2, 1]);         console.write("\t");         console.write(airchar[2, 2]);         console.write("\t");         console.write(airchar[2, 3]);         console.write("\t");         console.write(airchar[2, 4]);         console.write("\t");         console.write(airchar[2, 5]);         console.write("\n");          console.write("row 4\t");         console.write(airchar[3, 0]);         console.write("\t");         console.write(airchar[3, 1]);         console.write("\t");         console.write(airchar[3, 2]);         console.write("\t");         console.write(airchar[3, 3]);         console.write("\t");         console.write(airchar[3, 4]);         console.write("\t");         console.write(airchar[3, 5]);         console.write("\n");          console.write("row 5\t");         console.write(airchar[4, 0]);         console.write("\t");         console.write(airchar[4, 1]);         console.write("\t");         console.write(airchar[4, 2]);         console.write("\t");         console.write(airchar[4, 3]);         console.write("\t");         console.write(airchar[4, 4]);         console.write("\t");         console.write(airchar[4, 5]);         console.write("\n");          public static void passengers()     {         if (ticket == "fc")         {             console.writeline("enter number of passengers traveling (1 or 2 first class): ");             numpassenger = convert.toint32(console.readline());             if (numpassenger == 1)             {                 console.writeline("passenger 1 full name (block capital): ");                 console.readline();             }             else if (numpassenger == 2)             {                 console.writeline("passenger 1 full name (block capital): ");                 console.readline();                 console.writeline("passenger 2 full name (block capital): ");                 console.readline();             }             else             {                 return;             }         }         else if (ticket == "ec")         {             console.writeline("enter number of passengers traveling (1 3 economy): ");             numpassenger = convert.toint32(console.readline());             if (numpassenger == 1)             {                 console.writeline("passenger 1 full name (block capital): ");                 console.readline();             }             else if (numpassenger == 2)             {                 console.writeline("passenger 1 full name (block capital): ");                 console.readline();                 console.writeline("passenger 2 full name (block capital): ");                 console.readline();             }             else if (numpassenger == 3)             {                 console.writeline("passenger 1 full name (block capital): ");                 console.readline();                 console.writeline("passenger 2 full name (block capital): ");                 console.readline();                 console.writeline("passenger 3 full name (block capital): ");                 console.readline();             }             else             {                 return;              }         }         return;     } 

i thought on form improve solution modeling. believe can done in better ways, can start.

seems need not store seat information, find @ will. made serie of objects storing, changing , finding seats position or passenger names. hope helps.

helper classes code:

public class airplaneseating {     private list<seat> seats;      public airplaneseating()     {         seats = new list<seat>();          // filling fc rows         (byte row = 1; row <= 5; row++)             (byte column = 1; column <= 4; column++)                 seats.add(new seat(row, column));          // filling ec rows         (byte row = 6; row <= 35; row++)             (byte column = 1; column <= 6; column++)                 seats.add(new seat(row, column));     }      // can use indexed property search seat it's address     public seat this[string address]     {                 {             try             {                 var start = 0;                 var end = address.length - 1;                 var row = byte.parse(address.substring(start, end));                 var col = address[end];                  return seats.first(                     s => s.position.row == row && s.position.column.name == col);             }             catch             {                 return null;             }         }     }      // can use indexed property if need loop through seats     public seat this[byte row, byte column]     {                 {             return seats.firstordefault(                 s => s.position.row == row && s.position.column.number == column);         }     }      // method can used find seat occupied passenger     public seat findseatoccupiedby(string passengername)     {         return seats.firstordefault(             s => s.passenger.toupper().contains(passengername.toupper()));     }      public void reserveseat()     {         char tickettype = char.minvalue;         byte passengerstogether = 0;         int maxpassengerstogether;         bool inputok = false;          while (tickettype != 'f' && tickettype != 's')         {             console.write("enter ticket type (f = first class, s = second class): ");             tickettype = char.toupper(console.readline()[0]);         }          if (tickettype == 'f')             maxpassengerstogether = 2;         else             maxpassengerstogether = 3;          while (!inputok && (passengerstogether < 1 ||              passengerstogether > maxpassengerstogether))         {             console.write("enter number of passengers traveling (1 or {0}): ",                 maxpassengerstogether);              inputok = byte.tryparse(console.readline(), out passengerstogether);         }          (byte passengernumber = 1;              passengernumber <= passengerstogether;              passengernumber++)         {             console.write("passenger {0} full name (block capital): ", passengernumber);             string passengername = console.readline();              seat seat = null;             string lastseataddress = null;              // choosen seat address must valid (or else return null)             // choosen seat must match ticket type             // choosen seat must not occupied             while (seat == null ||                  seat.class != (classtype)tickettype ||                  seat.status == seatstatus.occupied)             {                 if (seat != null)                 {                     if (seat.class != (classtype)tickettype)                         console.writeline("seat not match ticket type.");                      if (seat.status == seatstatus.occupied)                         console.writeline("this seat occupied {0}.",                             seat.passenger);                 }                 else                 {                     if (lastseataddress != null)                         console.writeline("invalid seat address.");                 }                  console.write("enter passenger seat (example: 1a): ");                 lastseataddress = console.readline().toupper();                 seat = this[lastseataddress];             }              seat.passenger = passengername;              console.writeline("seat {0} reserved passenger {1}.",                 seat.position, seat.passenger);         }          console.writeline("reservation complete.");         console.writeline();     }      public void printpassengerstoconsole()     {         var occupiedseats = seats.where(s => s.status == seatstatus.occupied);          if (occupiedseats.any())         {             console.writeline("seating\tpassenger name");              foreach (var seat in occupiedseats                     .orderby(s => s.position.row)                     .thenby(s => s.position.column.number))             {                 console.writeline("{0}     \t{1}",                     seat.position,                     seat.passenger);             }         }         else         {             console.writeline("the airplane not have reservation.");         }          console.writeline();     }      // method can called print seating console, needed     public void printtoconsole()     {         console.write("key: " + "* - available " + " x - occupied" + "\n" + "\n");         console.write("     \ta\tb\tc\td\te\tf");         console.writeline();          foreach (var row in seats.groupby(s => s.position.row)             .orderby(r => r.key))         {             console.write(string.format("row {0}\t", row.key));              foreach (var column in row.groupby(s => s.position.column.number)                 .orderby(c => c.key))             {                 foreach (var seat in column)                 {                     console.write((char)seat.status);                     console.write("\t");                 }             }              console.writeline();         }          console.writeline();     } }  // class represents seat public class seat {     public seat(byte row, char column)     {         position = new seatposition(row, column);     }      public seat(byte row, byte column)     {         position = new seatposition(row, column);     }      // set passenger null make seat available.     public string passenger { get; set; }      public seatposition position { get; private set; }      public seatstatus status     {                 {             // when assign passenger seat, status change             if (passenger == null)                 return seatstatus.available;             else                 return seatstatus.occupied;         }     }      public classtype class     {                 {             // remember change if want more rows of fc             if (position.row <= 5)                 return classtype.firstclass;             else                 return classtype.secondclass;         }     } }  // enum represents status of seat public enum seatstatus {     available = '*',     occupied = 'x' }  // enum represents class type of seat public enum classtype {     firstclass = 'f',     secondclass = 's' }  // class represents seat position public class seatposition {     public seatposition(byte row, char column)     {         row = row;         column = new seatcolumn(column);     }      public seatposition(byte row, byte column)     {         row = row;         column = new seatcolumn(column);     }      public byte row { get; private set; }      public seatcolumn column { get; private set; }      public override string tostring()     {         return string.format("{0}{1}", row, column.name);     } }  // class defining , printing seat columns public class seatcolumn {     public seatcolumn(byte number)     {         number = number;     }      public seatcolumn(char name)     {         name = name;     }      public byte number { get; set; }      public char name     {         { return numbertoname(number); }         set { number = nametonumber(value); }     }      private static char numbertoname(byte number)     {         switch (number)         {             case 1:                 return 'a';             case 2:                 return 'b';             case 3:                 return 'c';             case 4:                 return 'd';             case 5:                 return 'e';             case 6:                 return 'f';         }          throw new exception("invalid column number.");     }      private static byte nametonumber(char name)     {         switch (name)         {             case 'a':                 return 1;             case 'b':                 return 2;             case 'c':                 return 3;             case 'd':                 return 4;             case 'e':                 return 5;             case 'f':                 return 6;         }          throw new exception("invalid column name.");     } } 

below made quick demonstration code on how use classes. guess make life easier when implementing application. need take data input, doing.

static void main(string[] args) {     var seating = new airplaneseating();      // use printtoconsole print seating screen.     seating.printtoconsole();      // can find specific seat position.     var seat1 = seating["1a"]; // gives me seat 1a     var seat2 = seating[1, 1]; // gives me seat 1a      // can put passenger on seat if want.     seat2.passenger = "jhon";      // when set passenger name seat, status change.     console.writeline("seat 1a status {0}.", seat1.status); // occupied      // can find specific seat passenger name.     // line of code gives me seat 1a, wich jhon's seat.     var occupiedseat1 = seating.findseatoccupiedby("jhon");      // can find typing part of passenger name,      // , don't need worry capitalization     var occupiedseat2 = seating.findseatoccupiedby("jho");      // can print seat information on console.     console.writeline("seat {0} occupied {1}.",          occupiedseat2.position, occupiedseat2.passenger);      console.readline(); } 

this practical example application. put code program class (the 1 main method).

static airplaneseating seating;  static void main(string[] args) {     seating = new airplaneseating();     options(); }  static void options() {     bool optionok = false;     byte option = 0;      while (!optionok)     {         console.clear();         console.writeline("select following menu:");         console.writeline("1. add passenger");         console.writeline("2. view seating");         console.writeline("3. view passenger list");         console.writeline("4. quit application" + "\n");          byte.tryparse(console.readline(), out option);          if (option >= 1 && option <= 4)         {             optionok = true;         }     }      switch (option)     {         case 1:             console.clear();             seating.reserveseat();             console.writeline();             console.write("please press enter return main menu.");             console.readline();             console.clear();             options();             break;          case 2:             console.clear();             seating.printtoconsole();             console.writeline();             console.write("please press enter return main menu.");             console.readline();             console.clear();             options();             break;          case 3:             console.clear();             seating.printpassengerstoconsole();             console.writeline();             console.write("please press enter return main menu.");             console.readline();             console.clear();             options();             break;          case 4:             environment.exit(0);             break;     } } 

Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -