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
Post a Comment