BOKNINGSSYSTEM FÖR GOLFBANA



Relevanta dokument
Introduktion till MySQL

Kapitel 4 Arkivmenyn Innehåll

Kom igång med. Windows 8. DATAUTB MORIN AB

Startanvisning för Bornets Internet

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Nya Aquila använder senaste versionen av våra verktyg: UniPaaS 1.9 (tidigare Magic), samt Crystal Reports version 12 (idag kör ni på version 8).

FIRSTCLASS. Innehåll:

TNK046 GIS - Databaser Laborationsuppgift 1 Introduktion till Microsoft Access 2007

FLEX Personalsystem. Uppdateringsanvisning

IT-körkort för språklärare. Modul 9: Rätta skrivuppgifter

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Installera SoS2000. Kapitel 2 Installation Innehåll

Objektorienterad programmering i Java I

WebViewer Manual för administratör Nova Software AB

FirstClass Hur du använder FirstClass.

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

Myndigheten för samhällsskydd och beredskap 1 (10) Datum Installationsguide ROPA

Lathund för Kopplingen

Använda Internet. med hjälp av Internet Explorer. Nybörjarguide

E-post. A. Windows Mail. Öppna alternativ. Placera ikonen på skrivbordet.

Switch Driver 4. Programvara för Radio Switch, JoyBox och JoyCable. Sensory Software

Miljön i Windows Vista

BRIDGE MASTER 2000 SCANDINAVIA av Fred Gitelman

Vop handledning. Användarhandledning till Vop applikationen. UPPGJORD: Mattias Gyllsdorff GODKÄND:Mattias Gyllsdorff REV: A DATUM:

Kundfakturors sändsätt

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson

SKAPA EN WWW-LÄNK I EN ARTIKELTEXT

Datakurs, grund. Thor Stone Education. Datakurs, grund. (Windows 7) Copyright Torsten Nilsson

Datum Ert datum Vår beteckning Banförvaltningen Vidmakthållande SE Borlänge Besöksadress: Jussi Björlings väg 2

SELLOUT. Version 2.5. eyescream information ab

Uppdatering till Windows 8.1 steg för steg-guide

ALEPH ver. 16 Introduktion

WebitRental Uthyrningssystem. WebIT Design i Kalmar HB

Uppdatering till Windows 8.1 steg för steg-guide

GitHub for Windows och GitShell

Användarmanual för. Internetbokningen. Version 1.0

AVCAD 4.0 för Windows

Räkneprogram för stomiartiklar HANDLEDNING

ANVÄNDAR MANUAL. SESAM 800 RX MC Manager

Programmering B med Visual C

Introduktion till Winbas. excel till Winbas

Windows 8.1, hur gör jag?

Din guide till. Klientinstallation MS Driftservice

Ja, men resultatet blir inte lika bra. Det är att skapa genvägsikoner. Se anvisningar nedan:

PHOCA GALLERY (v 3.2.3)

En introduktion till WeavePoint 7 demo version. Att använda ett vävprogram

KURSMÅL WINDOWS STARTA KURSEN

Instruktion till. PigWin PocketPigs. Del 1 - Installation

E-post. Elektronisk post, Två huvudtyper av elektronisk post Outlook Express Säkerhetsåtgärder mot datavirus...

Starta MySQL Query Browser

För att kunna använda SmartPigs i WinPig.Net måste du köra WinPig.net med administratörsrättigheter. Gör så här:

INSPIRA. Microsoft. Excel 2007 Grunder

Det som måste göras är följande

Installationsanvisning för LUQSUS version 2.0

Lathund - TimeEdit Introduktion

DATORINTRODUKTION. Laboration E ELEKTRO. UMEÅ UNIVERSITET Tillämpad fysik och elektronik Ulf Holmgren

25. Hämta Adobe Reader

SNABBGUIDE för studenter windows. Utskriftshantering, Kopiering och Scanning

Datum, klockslag samt mätarställning vid tjänsteresans start samt varifrån resan startade

Storegate Pro Backup. Innehåll

Microsoft Access. Skapa en ny databas. Östersund Vårterminen 2005

Kompletterande instruktioner för installation och konfiguration av HMS-server för koppling mot KONTAKT

1 Installationsinstruktioner

Databaser och Datamodellering Foreläsning IV

Här följer steg för steg anvisningar för att bygga upp ett planeringssystem som uppfyller dessa krav.

Användarmanual - OVK. Användarmanual OVK Version 1.5 Daterad:

Operativsystem - Windows 7

Lathund för CombiLab 7

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

Inställningstips. Visuella anpassningar Windows

LEX INSTRUKTION LEX LDAP

Skola24 Aktivera konto

Installationsbeskrivning för CAB Service Platform med CABInstall

Laboration 2 Datorverktyg vid LiU

Sammanträdesdatum Utredning om möjligheterna att införa Open Sourceprogram i kommunens datorer

Datum Den första bilden i installationsprogrammet visar vilken version det är. Klicka på Nästa eller tryck Enter för att fortsätta.

Instruktion för användande av Citrix MetaFrame

Vanliga frågor för VoiceXpress

Skapa mappar, spara och hämta dokument

Quick start manual. Smart-House Rev 1.1

Flytt av. Vitec Mäklarsystem

Berth Arbman. Välkommen till bokningssystemet myweblog!

Vilken version av Dreamweaver använder du?

Rebus är uppbyggt av olika moduler och grundpaketet i Rebus Bussbokning innehåller flera av dessa. En funktion för avståndsberäkning.

Bruksanvisning Anmälningsblankett.

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

Wikinggruppen Föreningssystem 3.0

Datatal Flexi Presentity

Komma igång med Qlikview

Kortfattad instruktion för Crystal Reports. Kom i gång med Crystal Reports. Instruktion Crystal Reports 2014

AD OnLine AD OnLine

Brasklapp: REV:s rådgivande verksamhet omfattar egentligen inte något detaljerat IT-stöd, men eftersom många väghållare har behov av att effektivt

Datatal Flexi Presentity

F Secure Booster är ett verktyg för att snabba upp och städa upp i din pc eller

Installation, Novaschem 2005

Vidareutveckling av lokalbokningssystem

Transkript:

Examensarbete 20 poäng D-nivå BOKNINGSSYSTEM FÖR GOLFBANA Reg.kod: Oru-Te-EXA089-D110/04 Sebastian Niklasson Magisterprogrammet i datateknik 160 p Örebro vårterminen 2004 Examinator: Lars Karlsson BOOKING SYSTEM FOR A GOLF COURSE Örebro universitet Örebro University Institutionen för teknik Department of technology 701 82 Örebro SE-701 82 Örebro, Sweden

Sammanfattning Denna rapport beskriver hur ett bokningssystem åt Örebro Golf & Country Club AB (Örebro GK) har utvecklats och är uppbyggt. Systemet ska hjälpa Örebro GK hantera inkommande bokningar på ett effektivt sätt genom att inmatning sker i ett formulär. Aktuell ledig/bokad kapacitet visas sedan i ett bokningsschema. Förutom hanteringen av bokningar innehåller systemet utskriftsfunktioner för offert, bekräftelse och faktura. Ifyllningen av bokningsuppgifter görs automatiskt med hjälp av tidigare inmatad data. För att få en överblick över bokade rum, beläggning och antal besökare kan statistik över detta visas i tabell- och diagramform. Abstract This report describes how a booking system for Örebro Golf & Country Club AB (Örebro GK) is developed and structured. The system should help Örebro GK to handle incoming reservations in an efficient way, using an input form. Current free/booked capacity is shown in a booking schedule. Except working with reservations the system contains printing functions for offer, confirmation and invoice. The printings are filled in automatically with data that has been entered earlier. To get an overview of booked rooms, capacity and number of visitors, statistics can be shown in the form of a table or a diagram. - 2 -

Förord Denna rapport avser ett 20 poängs examensarbete på D-nivå. Det utfördes under våren 2004 enligt de riktlinjer som ges vid Örebro universitet. Arbetet utfördes på uppdrag av Örebro Golf & Country Club AB (Örebro GK). Jag vill tacka: Örebro GK och dess klubbchef Peter Söder, som gjort mitt examensarbete möjligt. Erik Hermansson, för att han förmedlade kontakten. Handledaren Thomas Padron-McCarthy, som svarat på frågor. Examinator Lars Karlsson. Örebro den 11 juni 2004 Sebastian Niklasson - 3 -

Innehållsförteckning 1. INLEDNING... 6 1.1 ÖREBRO GK... 6 1.2 TIDIGARE BOKNINGSRUTINER... 6 1.3 SYFTE... 7 2. UTVECKLINGSVERKTYG... 8 2.1 BORLAND C++ BUILDER 5.0... 8 2.1.1 Allmänt... 8 2.1.2 Varför Borland C++ Builder 5.0?... 8 2.2 MYSQL... 8 2.2.1 Allmänt... 8 2.2.2 Varför MySQL?... 9 2.2.3 MySQL Control Center... 9 2.3 ÖVRIGA VERKTYG... 10 3. GENOMFÖRANDE... 11 3.1 WINDOWSAPPLIKATIONEN... 11 3.1.1 Design... 11 3.1.2 Subsystem... 11 3.1.3 Bokningsschema... 13 3.1.4 Hämtning av kund... 14 3.1.5 Handikapp, greenfees och starttider... 15 3.1.6 Utskrifter... 16 3.1.7 Statistik... 18 3.1.8 Sökning efter bokning... 19 3.2 DATABASEN... 20 3.2.1 Installation av programvara... 20 3.2.2 ODBC... 21 3.2.3 SQL... 21 3.2.4 Tabeller... 22 3.2.5 Transaktioner... 24 4. RESULTAT... 25 5. DISKUSSION... 26 5.1 GENERALITET... 26 5.2 TILLÄGG AV RUM... 26 5.3 BYTE AV DATABAS FRÅN ACCESS TILL MYSQL... 27 5.4 PRISER... 27 5.5 ARBETSSÄTT... 27 5.5 FRAMTIDSUTSIKTER...28-4 -

Figurförteckning Figur 1: Flöde för en enskild bokning... 6 Figur 2: Översikt över data i MySQL Control Center... 9 Figur 3: Egendesignat fönster... 11 Figur 4: Huvudfönstret med bokningsschema till höger om bokningsformuläret... 13 Figur 5: Hämtning av kund... 15 Figur 6: Inmatningsfönster för spelare, handikapp, greenfees och starttider...16 Figur 7: Förhandsgranskning av en utskrift... 18 Figur 8: Statistik som visas i tabellform... 19 Figur 9: Sökresultat har hittats... 20 Figur 10: Inställningsfönster för ODBC-kopplingen... 21 Figur 11: TQuery och TDatabase i Borland C++ Builder 5.0... 22 Figur 12: Tabeller i databasen... 23 Figur 13: 12 rum blev till 13 rum under utvecklingsarbetets gång... 26-5 -

1. Inledning Detta avsnitt förväntas ge läsaren lite information om uppdragsgivaren och en inblick i hur deras arbete med dess hotellverksamhet sker i dagsläget. Även vad som är syftet med detta examensarbete och förväntade resultat ska framgå nedan. Denna rapport är skriven för dem som har en högskoleutbildning inom datateknik och därmed behärskar programmering och databaser. 1.1 Örebro GK Örebro Golf & Country Club AB, senare skrivet som Örebro GK, är Örebros största golfbana. Den har mästerskapskaraktär vilket betyder att svenska golfförbundet anser att större golftävlingar kan arrangeras av Örebro GK. Golfklubben har en hotellverksamhet för att erbjuda sina besökare övernattningsmöjligheter. Idag består denna verksamhet av 44 bäddar fördelat på 13 rum. 4 av rummen finns i en hotelldel och resterande 9 rum går under namnet vandrarhem. Hotellrummen är dubbelrum medan rummen i vandrarhemsdelen kan ta emot upp till sex besökare styck. Det som också skiljer de två olika typerna av rum är standarden och viss service. I och med att det skiljer en del mellan hotell- och vandrarhemsdelen så är också priset något högre för ett hotellrum. Förutom vilken standard på rum som väljs varierar priset för boendet på vilka dagar som bokas. Helgerna är attraktivare och därmed också dyrare än vanliga vardagar. Kunderna som besöker Örebro GK är där först och främst för att utöva sin fritidssysselsättning. Då de övernattar får de spela en runda golf per dag till ett förmånligare pris än om de bara skulle välja att spela utan övernattning. Priset för en golfrunda, även kallad greenfee, är uppdelat i flera olika prisklasser. Dels varierar priset för seniorer och juniorer. Priset skiljer också, så som boendet, beroende på om det är vardag eller helg. Förutom den golfrunda som besökaren får per dag till ett reducerat pris förekommer det att en del inbitna utövare vill spela mer än så. Detta sker dock till ordinarie pris. 1.2 Tidigare bokningsrutiner Örebro GK saknade tidigare datorstöd för bokningar. Bokningsflödet för en bokning visas i figur 1. Figur 1: Flöde för en enskild bokning - 6 -

Tidigare har ett annat bokningssystem funnits men det uppfattades av personalen som krångligt och för invecklat för att användas så i nuläget sker istället arbetet med bokningar helt manuellt. Bokningar skrivs in i en almanacka för hand. Utskrifter av offert, bekräftelse och faktura görs med färdigskrivna mallar i Microsoft Word som ändras och modifieras för varje specifik bokning. 1.3 Syfte Examensarbetets huvudsyfte är att skapa förutsättningar för en lättare hantering av inkommande bokningar. Detta ska ske genom att frångå den manuella hanteringen och istället datorisera och sköta så mycket som möjligt automatiskt. Uppdragsgivarens önskemål är att: skapa kopplingar mellan de olika momenten i boknings-, bekräftelse- och faktureringsförfarande ha kontroll över bokad/ledig kapacitet Bokningssystemet ska gå att köra på alla de datorer som finns i Örebro GK:s nätverk. I dagsläget är det tre datorer vilket gör att ett klient-/serversystem har skapats. Databasen återfinns på servern. Klientdatorerna, med windowsapplikationen installerad, kopplar sedan upp sig mot servern för att utbyta data. - 7 -

2. Utvecklingsverktyg Detta avsnitt avser att redogöra för vilka utvecklingsverktyg som använts och varför just dessa använts för utförandet av examensarbetet. 2.1 Borland C++ Builder 5.0 2.1.1 Allmänt Borland [1] är ett amerikanskt företag som bildades 1983. Borland tillhandahåller bland annat utvecklingsverktyg för programmeringsspråken C, C++, C#, Java och Delphi. Borland C++ Builder 5.0 är ett utvecklingsverktyg för att konstruera C/C++-program. Det finns många inbyggda komponenter i programmet som förenklar, framför allt grafiskt, att bygga program. 2.1.2 Varför Borland C++ Builder 5.0? Borlands senaste C++-kompilator är Borland C++ Builder 6.0. Version 5.0 används i detta projekt eftersom Örebro Universitet jobbar med den programvaran vid utbildningar för sina C- och C++-programmeringskurser vid teknikinstitutionen. Flera andra programmeringsspråk skulle kunna användas för att utveckla detta bokningssystem. Då Örebro GK inte hade några invändningar eller förslag på programvara för utvecklingsarbetet valdes C++, helt enkelt eftersom magisterprogrammet i datateknik ger flest programmeringskurser i detta språk. Det ger förstås bäst förkunskaper som i sin tur hjälper till att utveckla en så bra lösning som möjligt. 2.2 MySQL 2.2.1 Allmänt MySQL är världens populäraste databashanterare som har öppen källkod. Det betyder att vem som helst får fri tillgång till källkoden och kan ändra den efter eget behov. MySQL är gratis att ladda ner på Internet [2] och fri att använda. Många välkända företag använder MySQL i sin verksamhet, till exempel Ericsson, Siemens, NASA, Yahoo! och Google. Det bästa med MySQL är att den hanterar data på ett snabbt och effektivt sätt vilket gör att det i många fall inte är databashanterarens fel om ett system är segt. En annan fördel är att den är driftsäker, vilket gör att krascher och haverier är sällsynta. Nackdelen med databashanteraren är att den inte är lika omfattande och innehåller inte alla avancerade funktioner som många andra databashanterare har. Om man ska jämföra för- och nackdelar med MySQL så beror de mycket på varandra. Att databashanteraren är så pass snabb och driftsäker beror framför allt på att de avancerade funktionerna är utelämnade. - 8 -

2.2.2 Varför MySQL? MySQL är en välkänd och inarbetad databashanterare som används världen över. I och med att den är snabb och effektiv och inte innehåller så många avancerade funktioner passar den bra för detta ändamål då databasen inte kommer att vara särskilt komplicerad. Eftersom systemet omfattar flera klientdatorer som kopplar upp sig mot en server krävs en databashanterare som klarar av sån teknik. Tanken var först att använda Microsoft Access [3] som databas. Problemet med Access är att den programvaran inte har någon serverprocess igång som klienterna kan koppla upp sig mot. Istället jobbar ODBC-drivrutinerna direkt mot den lokala Access-databasfilen. För att användandet av Access skulle fungera behövdes därför en serverprocess skapas och en brygga mellan Access-databasen och serverprocessen som kan kommunicera med hjälp av tekniken ODBC. Det arbetet ansågs för tidskrävande och databasen byttes därför ut helt mot MySQL, som redan har en serverprocess i form av databashanteraren. 2.2.3 MySQL Control Center MySQL Control Center heter ett grafiskt verktyg som kan hjälpa till och ersätta alla kommandon som krävs i designarbetet med databashanteraren MySQL. Det är många kommandon som man behöver hålla reda på om man enbart ska jobba i kommandotolken med databasen. Som nybörjare på MySQL kändes MySQL Control Center som ett bra komplement och hjälpmedel för att jobba med databasen. MySQL Control Center är inget färdigtutvecklat verktyg och saknar därför fortfarande många funktioner. Verktyget är dock tillräckligt bra för att snabbt få en översikt över data som finns inlagt i databasen (se figur 2). Figur 2: Översikt över data i MySQL Control Center - 9 -

2.3 Övriga verktyg Borland C++ Builder 5.0 och MySQL är de programvaror som använts flitigast. Men tre andra program har även använts i utvecklingsarbetet. Dessa är Adobe Photoshop 6.0, Shalom Help Maker v0.5.2 och Microangelo 5.5. Adobe Photoshop 6.0 användes för att skapa och arbeta med bilder. En hjälpfil finns inlagt i bokningssystemet för att hjälpa personalen att lära sig använda programmet. För att skapa denna hjälpfil användes programmet Shalom Help Maker v0.5.2. Då en genväg till bokningssystemet skapas i Windows visas en ikon på skrivbordet samt programmets namn. För att skapa en egen ikon, istället för att låta Windows använda en standardikon, användes programmet Microangelo 5.5. - 10 -

3. Genomförande Detta avsnitt speglar vad som verkligen har skapats och designats. Det är indelat i två större delar, windowsapplikationen och databasen. Kapitlet är skrivet för programmerare som inte känner till systemet sen tidigare. Har läsaren inte de förkunskapskrav som krävs, kan de delar som man beskriver mer detaljerat hoppas över. Det går ändå att få en god översikt över systemet. 3.1 Windowsapplikationen 3.1.1 Design Windowsapplikationen är den del som användaren ser och använder. Därför är det viktigt att göra denna del så lättförstålig och användarvänlig som möjligt. I designarbetet för applikationen har det som kommer användas flitigast i systemet prioriterats. Därför är momenten att lägga in nya bokningar och se aktuella bokningar de två mest framträdande delarna i programmet. För att komma bort från Windows tråkiga och stereotypa design har en del ändringar gjorts för att ändra utseendet på fönster och knappar. I varje fönster, förutom huvudfönstret, har den vanliga Windowsdesignen frångåtts och en egen ram runt om hela fönstret samt fönsterrubrik skapats (se figur 3). Vanliga knappar har placerats ut i fönstren och funktioner har skapats som bestämmer vad som händer om knappen trycks ner. Men för att ändra designen har en bild placerats över knappen och bildens klickfunktion är kopplad till den vanliga knappen. För att ge den nya designen mer liv, och ett beteende mer liknande en vanlig knapp, ändras muspekarens form då den förs över knappen samt att ramens färg runt knappen ändras vid musklick. Då musknappen slutar att vara nertryckt laddas den gamla bilden in igen. För att användaren ska kunna ångra sig, trots att musknappen har blivit nertryckt, är det inlagt att inget händer om knappen släpps då muspekaren är utanför knappen. Figur 3: Egendesignat fönster 3.1.2 Subsystem Programmet uppdelades vid utvecklingsskedet i flera mindre delar för att underlätta skapandet. Då programmerare pratar om uppdelning i mindre delar använder de uttrycket subsystem. Att gå på en allt för stor del direkt är inte att rekommendera då - 11 -

det är lätt att köra fast eller göra misstag som kan vara tidskrävande att rätta till senare. I detta projekt kan man byta ut namnet subsystem mot fönster istället eftersom varje liten del av programmet utgörs av ett fönster. Bokningssystemet består av följande delar som var och en har utvecklats separat innan det integrerats med övriga delar: about_frm visar allmän information om systemet, exempelvis namnet på utvecklaren och vilka utvecklingsverktyg som använts. Se figur 3. add_printing_frm gör det möjligt att lägga till information i alla utskriftsfönsters prislistor, t ex en grupprabatt. Se bill_printing_frm, confirm_printing_frm och offer_printing_frm för mer beskrivning av utskriftsfönstren. bill_printing_frm är en förhandsgranskning av fakturan där eventuella ändringar för utskriften kan göras. change_customer_frm möjliggör att kunduppgifter som finns lagrade i databasen kan ändras. change_printing_frm är som add_printing_frm enligt ovan med enda skillnaden att detta fönster ändrar redan befintlig data i utskrifterna. confirm_frontpage_printing_frm är en förhandsgranskning av informationsbladet som skickas tillsammans med bekräftelsen till kunden. confirm_printing_frm är en förhandsgranskning där eventuella ändringar av bekräftelseutskriften kan göras. error_messages_frm visar felmeddelande då något gått fel. OK-dialog. get_customer_frm gör att redan befintliga kunduppgifter kan sökas och hämtas från kundregistret. main_frm är huvudfönstret som innehåller bokningsschemat och inmatningsformuläret för bokningar. Härifrån kan alla andra fönster öppnas. more_information_frm innehåller inmatningsfält av namn, handikapp och greenfee för alla golfspelare som ska komma till anläggningen. Önskade starttider kan också fyllas i. Utskriftsfunktion av inmatad information finns också. offer_frontpage_printing_frm är en förhandsgranskning av informationsbladet som skickas tillsammans med offerten till kunden. offer_printing_frm är en förhandsgranskning där eventuella ändringar av offertutskriften kan göras. price_setting_frm är ett inställningsfönster för priser (boende och greenfee). printing_message_frm visas när en utskrift pågår. Talar om för användaren att den ska avvakta tills utskriften har slutförts. printing_stat_frm visar när och vad som har skrivits ut av offert, bekräftelse och faktura för den aktuella bokningen. search_frm är ett fönster där sökning efter bokningar kan ske med hjälp av bokningsnummer, kundnummer eller datum. splashscreen_frm är ett fönster som visas en kort stund då systemet startas. - 12 -

stat_frm är ett fönster där statistik över antalet bokningar, beläggning och antalet besökare kan visas i diagram- eller tabellform. yesno_messages_frm visar ett meddelande då användaren måste göra ett val. Dialogruta med alternativen Ja eller Nej. 3.1.3 Bokningsschema Nedan beskrivs bokningsschemat i två delar. I första delen, utseende och användning, beskrivs designen och hur olika moment kan genomföras. Den andra delen, uppbyggnad, innehåller en teknisk del där det viktigaste för bokningsschemats uppbyggnad beskrivs. Utseende och användning Bokningsschemat är navet i systemet. Det är här alla bokningar ses grafiskt genom att antingen vara färgade gröna (lediga) eller röda (bokade) vilket visas i figur 4. Figur 4: Huvudfönstret med bokningsschema till höger om bokningsformuläret Bokningsschemat finns i huvudfönstret och visar bokningar för fyra veckor i taget. Då programmet startas finns dagens datum i den första veckan, längst till vänster, i bokningsschemat. För att hjälpa användaren är dagens datum markerat som rött. För att flytta bakåt eller framåt tidsmässigt finns två knappar (Föregående vecka och Nästa vecka) längst upp i bokningsschemat. - 13 -

Markeras en röd bokning så fylls bokningsformuläret i med data från databasen till vänster i huvudfönstret. Lämplig ändring, borttagning eller utskrift kan sedan göras för bokningen. Markerad bokning i bokningsschemat har en gul ram runt sig. När en ny bokning ska matas in väljs valfritt datum och rum i bokningsschemat. I bokningsformuläret sätts då datum automatiskt och rätt rum markeras genom att få en gul ram runt sig. Övrig information som man behöver ange för att bokningen ska accepteras är kontaktperson, antal personer och betalsätt. Uppbyggnad Uppbyggnaden av den grafiska delen har gjorts med objekt av typen TShapes i Borland vilket är ett grafiskt objekt av valbar form (rektangel, cirkel m m). De ligger i en matris TShape *map[13][28] för att underlätta arbetet och möjliggöra att återkommande loopar kan genomföras. Problemet med en TShape är att den inte tillhör klassen TWinControl vilket gör att den inte kan hantera fokusering. Därför har även en bool focus_map[13][28] fått skapas som håller reda på vilken TShape som är vald. Vid ett musklick söker sedan en funktion rätt på vilken TShape som blir fokuserad med hjälp av musens X- och Y-position. Förutom den grafiska delen som är beskriven här ovan så är en av bokningssystemets viktigaste del de två variabler som håller reda på datum. Vid systemets start återfinns, som tidigare har beskrivits, alltid dagens datum i bokningsschemats första vecka. Därmed fås också schemats första datum längst till vänster med hjälp av Borlands inbyggda funktion DayOfWeek(). Första datumet och det datum som representeras av den TShape som är fokuserad, eller ska fokuseras, är det som håller ihop och uppdaterar schemat då veckor ändras eller en bokning finns utanför den aktuella tidsintervallet. 3.1.4 Hämtning av kund Om en kund redan har besökt Örebro GK tidigare så finns dennes kunduppgifter sparade i databasen. Då sparas tid när en ny bokning av kunden ska göras, eftersom det smidigt går att hämta dessa kunduppgifter genom att trycka på Hämta kund längst upp i bokningsformuläret. Sökning kan då ske med följande metoder, som också visas i figur 5: Bokningsnummer Kundnummer Namn Gata, postnummer eller stad Telefon E-mail Då rätt kund har hittats går det dels att ändra uppgifterna om de är gamla. När uppgifterna är korrekta är det bara att trycka på knappen Hämta så stängs fönstret och huvudfönstret ses åter med ifyllda uppgifter i bokningsformuläret. - 14 -

Figur 5: Hämtning av kund 3.1.5 Handikapp, greenfees och starttider Då en ny bokning görs fylls bokningsformuläret, som finns i huvudfönstret (se figur 4). Där finns också en vidareanvisning till ett fönster där de uppgifter som rör själva golfandet ska fyllas i (se figur 6). Om kunden inte kan lämna några sådana detaljerade uppgifter eller om personalen väljer att hoppa över dessa uppgifter fylls standardvärden i automatiskt för bokningen. Standard är att det blir lika många ordinarie greenfees som antalet personer (seniorer och juniorer) som fylls i huvudfönstret. Enligt personalen på Örebro GK är ungefär 95 % av bokningarna som görs sådana att lika många som bor på anläggningen också spelar golf. Undantag finns dock och det är därför de två fälten för ordinarie greenfee existerar. Exempelvis kan en förälder följa med sina två döttrar och bara bo utan att spela. För ordinarie greenfees behöver man inte fylla i om spelandet sker på en vardag eller helg. Det räknas automatiskt ut av systemet. Däremot krävs den informationen för de extra greenfees som en del kunder önskar eftersom systemet inte vet om när kunderna tänker utnyttja dessa. - 15 -

Figur 6: Inmatningsfönster för spelare, handikapp, greenfees och starttider 3.1.6 Utskrifter Ett av önskemålen från uppdragsgivaren Örebro GK var att hanteringen av pappersarken som skickas till kunden skulle ske automatiskt. Offert, bekräftelse och faktura skulle därför fyllas i med lämpliga uppgifter som redan är inlagt i databasen. Dessa skulle sedan bara kunna skrivas ut och skickas iväg per post. Utskriftsfunktionen är gjord så att en färdig mall är framtagen med grundinformation för varje typ av utskrift (offert, bekräftelse och faktura). Sedan hämtas data från databasen för den aktuella bokningen och systemet fyller automatiskt i de uppgifter som saknas. För de flesta bokningar fungerar detta utmärkt, men visa undantag finns dock. Är det en speciell bokning där t ex en grupprabatt har getts, blir prisuppgifterna fel. Prisändringar som har beslutats mellan personalen och kunden lagras inte i databasen. Därför har också funktioner för ändring och för att lägga till mer data i utskrifterna lagts till för att klara av dessa problem. Ändring sker enkelt genom att välja den rad i prislistan som ska ändras och sen trycka på knappen Ändra. Man ska komma ihåg att dessa ändringar eller tillägg inte sparas i databasen och ändringarna finns därmed bara på papper. När en utskrift av en offert eller bekräftelse görs skrivs också ett informationsblad ut med en prislista och allmän information om hotellverksamheten. Prislistan hämtas - 16 -

automatiskt från databasen så de senaste inlagda priserna visas. Texterna i de två informationsbladen skiljer sig marginellt sinsemellan. Bokningssystemets utvecklare har inte själv valt informationsbladens texter utan de följer tidigare informationsblad som Örebro GK skickat till kunder. Utskrifterna blir precis så som de ser ut i förhandsgranskningsfönstret enligt figur 7. I en del program brukar proportionerna ställa till det och göra att det som ser så bra ut på skärmen inte alls ser lika bra ut när det kommer ut på papper. Detta är löst genom att då utskrift väljs kopieras förhandsgranskningsfönstret som en bild och skickas till skrivaren. Därmed kan inte några objekt flyttas eller hamna på fel ställe vilket gör att det du ser framför dig får du också ut på papper. Storleken på förhandsgranskningsfönstret och textens format har valts så att utskriften återges på ett korrekt sätt och ser snygg ut på papper. Utskrifter går också att få över statistik som tas fram i form av en tabell eller diagram. Papper går även att få ut över de spelare som är inmatade för varje bokning. Där visas även spelarnas handikapp, valda greenfees och önskade starttider. Denna utskrift är till för att underlätta för personalen eftersom en golfstarttid bokas i ett helt annat datasystem. - 17 -

Figur 7: Förhandsgranskning av en utskrift 3.1.7 Statistik För att kunna se historik och få en överblick över bokningar finns ett statistikfönster tillgängligt (se figur 8). Här sker en sökning mellan två datum och sen väljer man om statistiken ska ses månads- eller årsvis. Resultatet går att få ut både i tabelloch diagramform beroende på vad det ska användas till. Väljs tabellform visas alla tre typer av statistik (antal bokningar, beläggning och antal besökare) samtidigt - 18 -

vilket kan vara bra för den interna redovisningen. Ska istället en redovisning för en grupp göras kanske digramformen är att föredra. Där visas varje typ av statistik i ett diagram för sig. Designen av diagrammen kan utformas efter eget tycke då bland annat 2-dimensionella eller 3-dimensionella diagram kan väljas. Figur 8: Statistik som visas i tabellform 3.1.8 Sökning efter bokning Då en speciell bokning behöver tas fram är bokningssystemets sökningsfunktion lämplig att använda. Det går naturligtvis att få fram bokningen manuellt i bokningsschemat men då varken boknings- eller kundnummer visas i huvudfönstret så är detta sätt mycket mer tidskrävande. Boknings- och kundnumret visas på alla de pappersark (offert, bekräftelse och faktura) som kunden får vilket också medför att dessa nummer är det bästa sättet för att få fram en speciell bokning. Sökning går dock även att göra för ett specifikt datum. När en sökning har gett resultat (enligt figur 9) är knappen Mer info till för att stänga sökfönstret och gå tillbaka till huvudfönstret. Bokningen hittas sedan automatiskt i bokningsschemat där sedan lämplig ändring eller utskrift kan göras. - 19 -

Figur 9: Sökresultat har hittats 3.2 Databasen Att designa och skapa en databas är inte bara att bestämma vilka tabeller som ska skapas och vilken information som ska finnas där. Det ska också bland annat bestämmas kopplingar mellan olika tabellers kolumner och vilket upplägg som ger effektivast datalagring, exempelvis så att dubbellagring undviks. När själva strukturen av databasen är klar krävs arbete för att koppla ihop databasen med windowsapplikationen så att dessa kan kommunicera med varandra. Till slut ska frågor ställas från applikationen till databasen som i sin tur utför det som önskades i frågan. Nedan beskrivs detta arbete mer ingående. 3.2.1 Installation av programvara För att bokningssystemet ska fungera krävs att databashanteraren MySQL installeras på serverdatorn. Efter installationen krävs en del inställningar. Att göra inställningar kan av många uppfattas som krångligt och invecklat. Jag tog hjälp av en bra guide på Internet [4] som gick igenom detta steg för steg vilket underlättade arbetet avsevärt. Inställningarna måste göras dels om man väljer att inte installera MySQL i katalogen C: \MySQL\. För att också databasen ska startas varje gång servern startas krävs att en NT-tjänst skapas vilket även det beskrivs mer i steg för steg-guiden. - 20 -

Förutom installationen på serverdatorn krävs lite arbete vid klientdatorerna för att dessa ska klara av att koppla upp sig mot servern. En ODBC-drivrutin för MySQL installeras och sedan görs inställningarna som beskrivs i punkt 3.2.2. 3.2.2 ODBC ODBC (Open Database Connectivity) är en öppen standard som gör det möjligt för program att kommunicera med varandra med hjälp av SQL-frågor. Främst används det när data ska skickas mellan en databashanterare och ett applikationsprogram. ODBC är utvecklat av Microsoft men nästan alla databashanterare klarar idag av tekniken. Bokningssystemet utnyttjar just ODBC för att koppla ihop Windowsapplikationen med MySQL-databasen. Nedan visas en beskrivning hur ODBC-kopplingen gjordes. Efter att ha installerat ODBC-drivrutinen skapas en datakälla på varje klientdator. Det görs i Windows 2000 genom att trycka på startknappen och sen välja Kontrollpanelen -> Administrationsverktyg -> Datakällor (ODBC). Där väljs System- DSN och Lägg till. Eftersom det är en MySQL-databas som finns i bokningssystemet väljs MySQL-ODBC-drivrutinen. Sedan är det bara de inställningar som visas i figur 10 som saknas för att ODBC-kopplingen ska fungera. Figur 10: Inställningsfönster för ODBC-kopplingen 3.2.3 SQL För att ställa frågor till databasen används Borlands inbyggda komponent TQuery. Den är i sin tur kopplad till komponenten TDatabase (se figur 11) som sköter uppkopplingen mot databasen, vilket är beskrivet mer under punkt 3.2.2, ODBC. - 21 -

Figur 11: TQuery och TDatabase i Borland C++ Builder 5.0 Frågor ställs både om data ska hämtas från databasen eller om data ska skrivas till eller tas bort från databasen. Följande exempel visar koden för att hämta ett kundnummer till heltalsvariabeln customer_number från databasen med hjälp av objektet TQuery *db_query: AnsiString question = "SELECT kundnr FROM kunder WHERE namn = " + contact_person_edt->text + " "; db_query->close(); db_query->sql->clear(); db_query->sql->add(question); db_query->open(); customer_number = db_query->fieldbyname("kundnr")->asinteger; I ovanstående exempel hämtas data från databasen genom att börja SQL-frågan med SELECT. När hämtning av data sker används funktionen db_query->open() för att skicka och låta databasen köra frågan. Om istället data i databasen ska läggas till, ändras eller tas bort helt börjas frågan med INSERT, UPDATE eller DELETE. För att skicka och låta databasen köra en sån fråga används funktionen db_query->execsql(). 3.2.4 Tabeller Bokningssystemets databas innehåller sammanlagt åtta tabeller. De är skapade på ett sånt sätt så att ingen information dubbellagras, d v s den förekommer inte på fler ställen än ett i databasen. - 22 -

Figur 12: Tabeller i databasen I figur 12 visas databasens alla tabeller. De gula nycklarna representerar en primärnyckel, d v s den kolumnen (attributet) i tabellen är unik och det förekommer därför inga dubbletter. Primärnyckeln i tabellerna rum och extra_greenfee är sammansatt. Det är för att enbart ett av attributen inte är unikt. I tabellen rum så är bokning inte unikt eftersom en bokning kan innehålla flera bokade rum. Namn är inte heller unikt eftersom rummen kan bokas om och om igen vid flera olika tillfällen. I tabellen extra_greenfee är bokning inte unik eftersom en bokning både kan innehålla extra greenfee av typen vardag och helg. Typ är naturligtvis inte heller unikt då extra greenfee av typen vardag och helg kan bokas av flera bokningar. De attribut som är inringade är referensattribut till den primärnyckel som de pekar ut i en annan tabell. Det betyder att det värde som står i referensen också finns i den refererande tabellen. - 23 -