Inlämningsuppgift 2: Bank

Syfte: Mer övning på arrayer samt enkel in- och utmatning mot filer.

För de som endast siktar på betyget G räcker det att EN kund kan hanteras dvs sätta in och ta ut pengar etc (eg att submenyn hantera kund finns). För övriga skall det via en meny gå att skapa och ta bort kunder och, genom en submeny hantera enskilda kunder.

Data (kunder, saldon mm) skall sparas på en fil med namnet "bank.txt" mellan körningarna av ett program. Programmet skall alltså börja med att läsa in uppgifterna från en filen och avslutas med att skriva ut uppgifterna till samma fil.

Här följer ett exempel på programkörningar. Observera att programmet körs tre gånger (från ett terminalfönster) och hur informationen finns kvar från föregående körning.


vega $ java Bank
Välkommen till Ebberöds bank!

Huvudmeny:

1. Skapa ny kund
2. Hantera kund
3. Ta bort kund
4. Lista alla kunder
5. Avsluta

Ditt val: 1
Namn: Kalle
Adress: Uppsala

Huvudmeny:

1. Skapa ny kund
2. Hantera kund
3. Ta bort kund
4. Lista alla kunder
5. Avsluta

Ditt val: 2
Namn: Kalle

Meny för kundhantering: 

1. Sätta in pengar
2. Ta ut pengar
3. Saldobesked
4. Skriv ut info om kunden
5. Åter till huvudmenyn

Ditt val: 1
Vilken summa skall sättas in? 
1000

Meny för kundhantering: 

1. Sätta in pengar
2. Ta ut pengar
3. Saldobesked
4. Skriv ut info om kunden
5. Åter till huvudmenyn

Ditt val: 1
Vilken summa skall sättas in? 
2000

Meny för kundhantering: 

1. Sätta in pengar
2. Ta ut pengar
3. Saldobesked
4. Skriv ut info om kunden
5. Åter till huvudmenyn

Ditt val: 5

Huvudmeny:

1. Skapa ny kund
2. Hantera kund
3. Ta bort kund
4. Lista alla kunder
5. Avsluta

Ditt val: 5
Ajöss (och tack för fisken)

vega$ java Bank

Välkommen till Ebberöds bank!

Huvudmeny:

1. Skapa ny kund
2. Hantera kund
3. Ta bort kund
4. Lista alla kunder
5. Avsluta

Ditt val: 4
Kundlista:
     Kalle

Huvudmeny:

1. Skapa ny kund
2. Hantera kund
3. Ta bort kund
4. Lista alla kunder
5. Avsluta

Ditt val: 1
Namn: Lisa
Adress: Stockholm

Huvudmeny:

1. Skapa ny kund
2. Hantera kund
3. Ta bort kund
4. Lista alla kunder
5. Avsluta

Ditt val: 2
Namn: Urban
Finns ej
Namn: Lisa

Meny för kundhantering: 

1. Sätta in pengar
2. Ta ut pengar
3. Saldobesked
4. Skriv ut info om kunden
5. Åter till huvudmenyn

Ditt val: 1
Vilken summa skall sättas in? 
10000

Meny för kundhantering: 

1. Sätta in pengar
2. Ta ut pengar
3. Saldobesked
4. Skriv ut info om kunden
5. Åter till huvudmenyn

Ditt val: 5

Huvudmeny:

1. Skapa ny kund
2. Hantera kund
3. Ta bort kund
4. Lista alla kunder
5. Avsluta

Ditt val: 5
Ajöss (och tack för fisken)

vega$ java Bank

Välkommen till Ebberöds bank!

Huvudmeny:

1. Skapa ny kund
2. Hantera kund
3. Ta bort kund
4. Lista alla kunder
5. Avsluta

Ditt val: 4
Kundlista:
     Kalle
     Lisa

Huvudmeny:

1. Skapa ny kund
2. Hantera kund
3. Ta bort kund
4. Lista alla kunder
5. Avsluta

Ditt val: 5
Ajöss (och tack för fisken)

Filhanteringen

När man startar programmet ska data läsas från filen bank.txt. När man lämnar programmet så skall programmet skriva filen på nytt så att nästa körning kan fortsätta med aktuella data. Java har många möjligheter att skriva och läsa filer. I denna uppgift skall vi göra det så enkelt som möjligt genom att använda klasserna Scanner och PrintWriter.

För att scapa ett Scanner-objekt som man kan använda för att läsa från en fil kan man göra som i följande sats Scanner fsc = new Scanner(new File(filnamn)); där 'filnamn' är ett String-objekt med namnet på filen.

För att skriva filen så kan man använda klassen PrintWriter som samma metoder som ni har använt i System.out dvs bl.a. print och println. För att koppla ett PrintWriter-objekt till en fil kan man direkt göra PrintWriter pw = new PrintWriter(new File(filnamn)); Om filen redan existerar så kommer den att skrivas över. Observera att man måste stänga filen när man skrivit klart genom ett anrop till close: pw.close();

Filstruktur

När programmet avslutas skall all information som behövs för att det skall gå att återstarta programmet med samma kund- och kontouppsättning skrivas på filen. Använd följande struktur på filen Först ett heltal som anger hur många kunder det finns, därefter kund för kund. För varje kund:

Efter körning med exemplet ovan så har filen bank.txt följande innehåll:

2
Kalle
Uppsala
3000.0
Lisa
Stockholm
10000.0

Tips

Dela upp programmet i olika funktioner

Du kan behöva tala om för Scanner-objektet att den skall använda amerikanska konventioner (dvs decimalpunkt i stället för decimalkomma) genom anropet scf.useLocale(Locale.US)

Inlämning

Maila det färdiga programmet till johane@cs.umu.se när det är klart. Inlämningen ska ske senast v50