2.4 Kaffeautomat (projekt) Du får i uppdrag att programmera en

Download Report

Transcript 2.4 Kaffeautomat (projekt) Du får i uppdrag att programmera en

2.4 Kaffeautomat (projekt) Du får i uppdrag
att programmera en kaffeautomat som ska användas i en cafeteria. Uppdragsgivaren förväntar sig ett professionellt program som lätt
kan uppdateras, om man skulle byta till en
nyare automatmodell om något år. Därför
anlitar man en objektorienterad programmerare som även kan databaser. Skriv koden så
generellt som möjligt så att programmet lätt
kan modifieras för vilken varuautomat som
helst, dessutom lätt kan översättas till vilket
programmeringsspråk som helst.
Projektet går ut på att simulera en kaffeautomat med grafiskt gränssnitt och en databas som lagrar drycksortimentet samt
priserna. Man ska kunna variera sortimentet dvs lägga till eller ta bort dryck
med tillhörande pris – en post – från sortimentet, genom att ändra databasen
utan att behöva ändra programmet.
Börja utan databas
Använd en array av kontroller för dryckernas namn och en annan array för
dryckernas pris. När programmet fungerar felfritt och du har lärt dig
hanteringen av databaser, kan du koppla kaffeautomaten till en databas.
Programmet ska innehålla en betalningsdel med möjlighet att kunna betala
med fyra olika myntslag: 10 kr, 5 kr, 1 kr, 50 öre. Det grafiska gränssnittet kan
t.ex. se ut så här:
Programmet ska ha
möjligheten att kunna
välja dryck ur ett sortiment med minst fem
olika drycker samt
deras priser.
En växel- och serveringsdel ska ingå. Efter
val av dryck samt betalning ska rätt växel
lämnas tillbaka. En liten bild som föreställer
en kopp ska visas upp.
I exemplet på bilden
har Cappuchino valts
som dryck och ett 10
kr- samt två 1 kr-mynt
har betalats.
248
Gränssnittet ska ha en menyrad med en Exit-funktion för att avsluta och en
Reset-funktion för att nollställa kaffeautomaten.
Komplettera programmet med att ta hand om en eventuellt felaktig eller otillräcklig betalning från användarens sida.
Växelbeloppet är ett decimaltal i programmet. Men automaten behöver ”veta”
hur många av varje myntslag som är tillåtet i automaten – endast 10 kr, 5 kr, 1
kr och 50-öringar – den ska ge tillbaka. Ett växelbelopp av t.ex. 12,50 måste
omvandlas i ett 10 kr- (eller två 5 kr-), två 1 kr-mynt och en 50-öring. Dessa
antal är heltal. Det decimala växelbeloppet måste delas upp i automatens tillåtna mynt”system”. För att åstadkomma denna omvandling, kan du använda
dig av den algoritm som beskrivs i Progr1, övn 8.8. Den skiljer sig endast i siffror från den algoritm som användes i lösningen till övn 3.3 (sid 270) för att
omvandla ett antal dagar till antal år, månader, veckor och restdagar. Nyckeloperationen för denna omvandling är modulooperatorn %. Läs om den i
Progr1, 4.7.
Lägg till databaskoppling
För att underhålla kaffeautomaten över längre tidsperioder, t.ex. för att kunna
ändra sortiment och/eller priser, utan att behöva skriva och kompilera om C#koden, är det lämpligt att lagra sortiment- och prisinformationen i en databas
och låta C#-programmet hämta aktuell, alltid uppdaterad information från databasen.
När allting fungerar felfritt, kan du ersätta arrayerna för namn och pris med
tabeller i en databas. Databaskopplingen ska finnas i en separat form där det
ska finnas möjligheten att radera, lägga till och editera posterna i databasen.
Lägg till i menyraden ett menyval för att ladda databasformen.

Inkluderingen av myntslaget 50-öring som inte längre finns i det svenska myntsystemet beror
inte på nostalgi utan på internationalisering. Vi vill hålla möjligheten öppen för en översättning
till andra språk resp.för en övergång till Euro eller andra valutor. Behandlingen av en halv enhet
(50-öring) vid omvandling av växelbeloppet till automatens tillåtna myntsystem inkluderar en
programmeringsteknisk finess som är värd att lära sig.
249
Utskriften av menyn samt priserna som visades i början inte behöver hårdkodas i C# utan blir resultat av en hämtning (SELECT-sats) från databasen. På
så sätt kan man alltid aktualisera menyn genom att uppdatera databastabellen.
Fortsätt med att registrera även varje transaktion i automaten dvs lägga in den
med en INSERT-sats i en annan tabell som sedan kan användas både för kontroll av automaten och som underlag för ekonomisk redovisning. Avgör själv
vilka uppgifter som är lämpliga att registreras. Skriv dina SQL-satserna så att
de kan inbäddas i C#-kod.
Kaffeautomatkonceptet kan generaliseras inte bara till andra automater utan
även till små och stora butiker eller varuhus.
Låt fantasin styra kaffeautomatens design.
Lycka till!
250