/***************************************************************/ /* Prof. Dr. Gregor Büchel */ /* Source: Dat6.java */ /* Stand : 09.04.2002 */ /* */ /* Testprogramm für byteorientierte Dateiverarbeitung mit */ /* folgendem Datensatzaufbau (ohne feste Datensatzlaenge): */ /* ::= (String) */ /* ::= (int) */ /* ::= (String) */ /* ::= (double) */ /* ::= */ /* */ /***************************************************************/ import java.io.*; class Dat6 { public static void main(String args[]) throws IOException {int iz=0,m,ia=1,eplz,aplz; String ename,eort; String aname,aort; double egehalt,agehalt,sum=0.; ename=new String(); eort=new String(); aname=new String(); aort=new String(); do {m=menue(); switch(m) {case 1: FileOutputStream pa1 = new FileOutputStream("adat.aus"); DataOutputStream da1 = new DataOutputStream(pa1); do {/* erfassen */ System.out.println("Bitte eingeben:"); ename=IO1.einstring(); /* erfassen */ System.out.println("Bitte eingeben:"); do { eplz=IO1.einint(); if (eplz<1000||eplz>99999) {System.out.println("Die deutsche PLZ liegt zwischen 1000 und 99999."); System.out.println("Daher bitte Neueingabe der PLZ!"); } } while (eplz<1000||eplz>99999); /* erfassen */ System.out.println("Bitte eingeben:"); eort=IO1.einstring(); /* erfassen */ System.out.println("Bitte eingeben:"); do { egehalt=IO1.eindouble(); if (egehalt<0.) {System.out.println("Dieses System kennt keine negativen Gehälter."); System.out.println("Daher bitte Neueingabe des GEHALTS!"); } } while (egehalt<0.); /* DS schreiben */ da1.writeUTF(ename); da1.writeInt(eplz); da1.writeUTF(eort); da1.writeDouble(egehalt); iz=iz+1; System.out.println("Einen nächsten Datensatz erfassen?(ja=1/nein=0)"); ia=IO1.einint(); } while(ia==1); System.out.println(iz+" Datensätze geschrieben"); da1.close(); break; case 2: FileInputStream pe1 = new FileInputStream("adat.aus"); DataInputStream de1 = new DataInputStream(pe1); iz=0; /* Leseblock mit EOF-Steuerung */ try { while(true) {/* Lesen eines Datensatzes aus dem Bytestrom */ aname=de1.readUTF(); aplz=de1.readInt(); aort=de1.readUTF(); agehalt=de1.readDouble(); /* Einzelsatzverarbeitung */ iz=iz+1; sum=sum+agehalt; System.out.println(iz+".Datensatz: "+aname+" "+aplz+" " +aort+" "+agehalt); } } catch(EOFException eo1) {System.out.println("Zustand: "+eo1.toString()); /* Dateiverbindung schliessen */ de1.close(); /* Dateiendeverarbeitung */ System.out.println("Gehaltssumme : "+sum); sum=sum/iz; System.out.println("Durchschnittsgehalt: "+sum); System.out.println("Anzahl gelesener Datensätze: "+iz); } break; case 9: System.out.println("ENDE!"); break; default: System.out.println("Unzulaessige Eingabe!"); } } while(m!=9); } public static int menue() {int ir; System.out.println("Byteorientierte Dateiverarbeitung:"); System.out.println("(1) Erzeugen und Schreiben von Datensaetzen"); System.out.println("(2) Lesen von Datensaetzen"); System.out.println("(9) ENDE"); System.out.println("Bitte wählen Sie!"); ir=IO1.einint(); return ir; } }