
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Busfahrplan extends Applet implements ActionListener {
//Textfelder und Buttons
TextField txtLinie, txtStandort;
Button cmdLinie, cmdStandort;
//Array
int [][] linie;
//Fahrplandatenobjekt
FahrplanDaten fahrplan1;
//Boolean
boolean bStandort;
//Werte
int linienwert, standortwert;
int position, wert;
final int HST=0, DIST=1;
public void init() {
//Erzeugen von Button und Textfelder
txtLinie = new TextField(10);
txtStandort = new TextField(10);
cmdLinie = new Button("Linie");
cmdStandort = new Button("Standort");
//Actionlistener
cmdLinie.addActionListener(this);
cmdStandort.addActionListener(this);
txtLinie.addActionListener(this);
txtStandort.addActionListener(this);
//Fahrplanobjekt erzeugen
fahrplan1 = new FahrplanDaten();
//Grösse des Applets
setSize(500,300);
Panel p = new Panel(new GridLayout(1,4,10,10));
//Panel einfügen
p.add(txtLinie);
p.add(cmdLinie);
p.add(txtStandort);
p.add(cmdStandort);
//Panel monitieren
add(p);
}
public void paint(Graphics g) {
if(linienwert == 0 || linienwert >4)
return;
linie = fahrplan1.getLinie(linienwert);
//System.out.println(linie);
//Startposition
int xPos = 50;
int yPos = 80;
//Ueberschriften zeichnen
g.drawString("Linie "+linienwert,xPos,yPos);
g.drawString("Haltestellen",xPos+100,yPos);
g.drawString("Distanz",xPos+200,yPos);
for(int i = 0; i {
yPos = yPos +20;
g.drawString(""+linie[i][0],xPos+100,yPos);
}
//Startposition
xPos = 50;
yPos = 80;
for(int k = 0; k {
yPos = yPos +20;
g.drawString(""+linie[k][1],xPos+200,yPos);
}
/*
for(int row = 0;row
if(position >line[row][DIST]
distanz = line[row][HST]
*/
wert=standort(standortwert,linie);
//System.out.println(wert);
if(wert==-1)
g.drawString("Sie haben sich verfahren, schade!!!!", 50,220);
else
//linie[wert+1][0] = nächste Haltestelle
//linie[wert+1][1] = Entfernung der nächsten Haltestelle
g.drawString("Nächste Haltestelle ist Nr. "+linie[wert+1][0]+" , Sie werden Sie nach "+(linie[wert+1][1]-standortwert)+" erreichen",50,220);
}
public int standort(int position,int linie[][])
{
//Array der Liniendaten wird durchgesteppt, und zwar die zweite Kolone [1]
for(int i=0;i {
//Falls die Position >= Entfernung der Haltestelle oder kleiner als die Entfernung der nächsten Haltestelle ist
//soll er die betreffende Haltestelle zurückgeben
//Es wird geprüft, zwischen welcher Haltestelle man ist
if(position>=linie[i][1]&&position<=linie[i+1][1])
{
return i;
}
}
return -1;
}
public void actionPerformed(ActionEvent e) {
//Action Eventhandler
//Parse= Zeichen für Zeichen des Strings wird eingelesen und umgewandelt
try
{
if(!txtLinie.getText().equals(""))
{
linienwert = Integer.parseInt(txtLinie.getText());
txtLinie.setText("");
}
if(!txtStandort.getText().equals(""))
{
standortwert = Integer.parseInt(txtStandort.getText());
txtStandort.setText("");
}
//System.out.println(newValue);
repaint();
}
catch (Exception ev)
{
showStatus("Es werden nur nummerische Eingaben akzeptiert");
}
repaint();
}
public void showLine(int line) {
}
}
class FahrplanDaten {
//Deklaration von 4 Arrays
int line1[][] = { {1,0},{2,300},{4,800},{8,1700},{13,2600},{18,3000} };
int line2[][] = { {1,0},{2,500},{3,900},{7,1000},{17,1500},{19,2500} };
int line3[][] = { {1,0},{2,600},{4,1200},{8,3100},{13,3600},{21,4000} };
int line4[][] = { {1,0},{2,300},{7,800},{9,1200},{16,2900},{25,3400} };
public int [][] getLinie (int liniennr) {
int line[][]=null;
switch(liniennr)
{
case 1: line=line1;
break;
case 2: line=line2;
break;
case 3: line=line3;
break;
case 4: line=line4;
break;
}
return line;
}
}