Bo Skön(t)s Hotellbokningssystem Utvecklat av Thomas Nilsson, hösten 2014 Först en liten beskrivning av bokningsprocessen! Så här ska det se ut när användaren startar applikationen! Användaren väljer först ett land..och sedan en stad! Sida 1 av 20
När stad är valt visas fler sökobjekt typ ex incheckning och utcheckning! Vid val bland hotellfasciliteterna visas bara de hotell i hotellrutan som motsvarar valet bland hotellfasciliterna Sida 2 av 20
Val av hotell i listan ger en hotellbeskrivning och visar också lediga rum på detta hotell Sida 3 av 20
Val av rum ger en beskrivning av rummet samt uppdaterar sammanställningen När användaren är nöjd med sitt val skriver hen in sitt namn och trycker på Boka rum -knappen! Sida 4 av 20
Användaren erhåller då ett bokningsid: Bokningen kan avbokas under fliken Avboka Övrigt: bra att känna till: Se förklaringar i bilden nedan Maxpris per natt filtrerar bara på rum och inte på hotell. Sida 5 av 20
Här nedan har användaren haft möjligheten att välja även halv- och helpension. Valt hotell erbjuder nämligen detta! Kostnaden för helpension är 500kr per dag. Prefix vid namngivning av valda kontroller i Visual Studio txt_ = Textbox dp_ = Datepicker lbx_ = Listbox cb_ = Checkbox lbl_ = Label rb_ = RadioButton btn_ = Button sp_ = StackPanel sdr_ Slider Sida 6 av 20
Klassdiagram 1. MainWindow + foodcostperday : double + selectedfood : string - btn_book_click() : void - btn_cancelledbooking_click() : void - btn_search_click() : void - cb_onetwofourbed_checked() : void - Cbx_City_SelectionChanged() : void - Cbx_Country_SelectionChanged() : void - Dp_CheckInOut_SelectedDateChanged() : void - GetHotelsForSelectedCity() : List<Hotel> - GetNewBookingID() : string - GetRoomsForSelectedHotel() : List<Room> - GetSearchCriteria() : SearchCriteria - Lbx_Hotels_SelectionChanged() : void - Lbx_Rooms_SelectionChanged() : void + MainWindow() - rb_food_checked() : void - sdr_maxpris_valuechanged() : void - TabControl_SelectionChanged() : void - Txt_CancelledBookingID_TextChanged() : void - Txt_CancelledBookingID_TextChanged() : void - UpdateSummary() : void Sida 7 av 20
2. Display btn_book : Button btn_cancelledbooking : Button btn_search : Button cb_fourbed : CheckBox cb_onebed : CheckBox cb_twobed : CheckBox dp_checkin : DatePicker dp_checkout : DatePicker lbl_foodcost : Label lbl_foodcosttot : Label lbl_incheckning : Label lbl_maxprice : Label lbl_maxpris : Label lbl NoOfFourBedsAvailable : Label lbl NoOfOneBedAvailable : Label lbl NoOfTwoBedsAvailable : Label lbl_rooms : Label lbl_selectedhotel : Label lbl_selectedroom : Label lbl_summary_noofnights : Label lbl_totalpriceinsek : Label lbl_totalpriceinsektot : Label lbl_utcheckning : Label lbl_utcheckning_noofnights : Label lbx_hotels : ListBox lbx_rooms : ListBox rb_breakfast : RadioButton rb_fullboard : RadioButton rb_halfboard : RadioButton sdr_maxpris : Slider sp_1 : StackPanel sp_2 : StackPanel txt_cancelledbookingid : TextBox txt_customername : TextBox txt_hoteldescr : TextBox txt_roomdescr : TextBox + ChangeBookButtonStatus() : void + ClearSummary() : void + Display() : (ctor) + DisplayAvailableRoomLabel() : void + HideSearch() : void (+)ResetInformationWhen CityISChanged() : void + ShowOrHideCancelBookingButton() : void (+)ShowSearch() : void + UpdateRoomList() : void + UpdateSummaryDisplay() : void + WriteHotelDescription() : void + WriteRoomDescriptionToTextbox() : void Sida 8 av 20
3. BookingAgent + currentbookingid : long + BookingAgent() : (ctor) + GetBooking() : Booking + GetNewBookingID() : string + Load() : BookingAgent + Save() : void + Countries : List<Country> 4. Country + CountryID : string + CountryName : string + Cities : List<City> + Country() : (ctor) + GetBooking() : Booking + ToString() : override string 5. City + CityID : string + CityName : string + Hotels : List<Hotel> + City(): (ctor) + GetBooking() : Booking + GetHotels() : List<Hotel> + ToString() : override string Sida 9 av 20
6. Hotel + HotelAddress : string + HotelBreakfast : double + HotelDistCent : int + HotelFascilitiesText : : List<string> + HotelFullBoard : double + HotelHalfBoard : double + HotelID : string + HotelName : string + HotelStandardText : List<string> + HotelStandard : HotelStandard + HotelLedger : Ledger + Rooms : List<Room> + HotelFascilities : List<HotelFascilities> + GetBooking() : Booking + GetRooms() : List<Room> + Hotel() : (ctor) - IsRoomBooked() : bool + ToString() : override string + HotelStandard : enum + HotelFascilities : enum 7. HotelStandard OneStar = 1 TwoStar = 2 ThreeStar = 3 FourStars = 4 FiveStars = 5 Sida 10 av 20
8. HotelFascilities Pool = 1 ChildrenPool = 2 Restaurant = 3 Bar = 4 Gym = 5 Spa = 6 9. Ledger + Bookings : List<Booking> + Ledger() : (ctor) 10. Booking + BookingID : string + Cancelled : bool + CheckInDate : DateTime + CheckOutDate : DateTime + CustomerName : string + Food : string + Price : double + RoomsID : string Sida 11 av 20
11. Room + RoomBedsText : string + RoomFascilitiesText : List<string> + RoomID : string + RoomNumber. int + RoomPrice : double + RoomReserved : bool + Fascilities : List<RoomFascilities> + RoomBeds : Beds + Room() : (ctor) + ToString() : override string + Beds : enum + RoomFascilities : enum 12. RoomFascilities TV = 1 IronBoard = 2 Balcony = 3 Fridge = 4 Shower = 5 AirCondition = 6 Wifi = 7 Sida 12 av 20
13. Beds Onebed = 1 TwoBeds = 2 FourBed s = 4 14.SearchCriteria CheckInDate : DateTime CheckOutDate : DateTime City : string Country : string HotelFascilities : List<HotelFascilities> MaxPrice : int RoomFascilities : List<RoomFascilities> SearchCriteria() : (ctor) Sida 13 av 20
Sekvensdiagram Sökning av lämpliga hotell Sida 14 av 20
Flödesdiagram : Bokningsalgoritmen Start Ladda in länder Vänta på val av land Ladda in städer Vänta på val av stad Visa sökkriterier Vänta på tryckning på sökknappen Visa hotell Vänta på val av hotell Visa rum Vänta på val av rum Uppdatera sammanställningen Vänta på val av frukost, halvpension eller helpension Vänta på inmatning av namn Ja Textrutan tom? Nej Aktivera Boka -knappen Sida 15 av 20
Filbeskrivning - Hotel.xml Skärmdump av xml-fil. Nummer vid pilar förklaras nedan Sida 16 av 20
Struktur och fältbeskrivningar 1 BookingAgent (2) public List<Country> Countries { get; set; } Länder 2 Countries <List> 3 Country public string CountryID { get; set; } LandsID public string CountryName { get; set; Land (4) public List<City> Cities { get; set; } Städer 4 Cities <List> 5 City public string CityID { get; set; } StadsID public string CityName { get; set; } Stad (6) public List<Hotel> Hotels { get; set; } Hotell 6 Hotels <List> 7 Hotel public string HotelID { get; set; } HotellID public string HotelName { get; set; } Hotellnamn public string HotelAddress { get; set; } Adress till hotellet public HotelStandard HotelStandard { get; set; } Hotellstandard public int HotelDistCent { get; set; } Avstånd till centrum public double HotelFullBoard { get; set; } Pris för helpension public double HotelHalfBoard { get; set; } Pris för halvpension public double HotelBreakfast { get; set; } Pris för frukost (8) public Ledger HotelLedger { get; set; } Hotellbokningslogg public string HotelStandardText Hotellstandardtexter på svenska (11) public List<Room> Rooms { get; set; } Rum (14) public List<HotelFascilities> HotelFascilities { get; set; } Hotellfasciliter (14) public List<string> HotelFascilitiesText Fasciliteter på svenska 8 HotelLedger (9) public List<Booking> Bookings { get; set; } Bokningar 9 Bookings <List> 10 Booking public string BookingID { get; set; } BokningsID public string RoomsID { get; set; } RumsID public DateTime CheckInDate { get; set; } Checkindatum public DateTime CheckOutDate { get; set; } Checkutdatum public double Price { get; set; } Totalpris inkl. mat public bool Cancelled { get; set; } Är rummet avbokat?? public string Food { get; set; } Vilken mat beställdes? public string CustomerName { get; set; } Kundnamn 11 Rooms <List> 12 Room public string RoomID { get; set; } RumsID public int RoomNumber { get; set; } Rumsnummer public bool RoomReserved { get; set; } Används ej i denna vers public Beds RoomBeds { get; set; } Typ av rum antal bäddar public double RoomPrice { get; set; } Bruttopris på rummet public string RoomBedsText { get; set; } antal bäddar (svensk) (13) public List<RoomFascilities> Fascilities { get; set; } Rumsfasciliter (13) public List<string> RoomFascilitiesText Rumsfasc.(sv) 13 Fascilities <List> 13 RoomFascilitiesText <List> 14 HotelFascilities <List> 14 HotelFascilitiesText <List> Sida 17 av 20
Fördelning: HotelDistCent = avstånd i meter till centrum HotelBreakfast: -1 = ej möjligt, 0 = ingår, 1-200 kostnad i SEK för frukost HotelHalfBoard = -1 = ej möjligt, 0 = ingår, 1-500 kostnad i SEK för halvpension HotelFullBoard = -1 = ej möjligt, 0 = ingår, 1-800 kostnad i SEK för helpension Sida 18 av 20
Antal 1-bädds, 2-bädds och 4-bäddsrum samt billigaste och dyraste rummet Antal rum med wi-fi, kylskåp etc Sida 19 av 20
Kod i klassen BookingAgent: Sida 20 av 20