ADTLinkedListStudentDBTester
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class ADTLinkedListStudentDBTester extends Applet
implements ItemListener,
ActionListener {
LinkedList studentDB;
TextArea result;
TextField tfNumber;
Choice fileURL;
Label label1,label2;
String datafile[] = { "studfile1.html",
"studfile2.html",
"studfile3.html",
"studfile4.html" };
public void init() {
result = new TextArea(12,80);
label1 = new Label("Test Case");
label2 = new Label("Remove Student");
tfNumber = new TextField(10);
fileURL = new Choice();
for (int i = 0; i < datafile.length; i++)
fileURL.add(datafile[i]);
add(label1);
add(fileURL);
add(label2);
add(tfNumber);
add(result);
fileURL.addItemListener(this);
tfNumber.addActionListener(this);
}
public void itemStateChanged(ItemEvent ie) {
studentDB = new LinkedList();
try {
URL url = new URL("http://personal.cityu.edu.hk/~dcywchan/2003dco10103/" +
fileURL.getSelectedItem());
URLConnection data = url.openConnection();
BufferedReader inFile = new BufferedReader(new InputStreamReader(data.getInputStream()));
String textLine;
while((textLine = inFile.readLine()) != null) {
StringTokenizer st = new StringTokenizer(textLine, "_");
StudentNode stdNode = new StudentNode(Integer.parseInt(st.nextToken()),
st.nextToken(),
Integer.parseInt(st.nextToken()));
if (studentDB.size() == 0)
studentDB.addFirst(stdNode);
else if (! studentDB.contains(stdNode)) {
StudentNode p = (StudentNode) studentDB.getFirst();
while ((p != null) && (p.compareTo(stdNode) > 0))
p = p.getNext();
if (p == null) {
((StudentNode) studentDB.getLast()).setNext(stdNode);
studentDB.addLast(stdNode);
} else if (p == (StudentNode) studentDB.getFirst()) {
stdNode.setNext(p);
studentDB.addFirst(stdNode);
} else {
StudentNode q = (StudentNode) studentDB.getFirst();
while (q.getNext() != p) q = q.getNext();
studentDB.add(studentDB.indexOf(p),stdNode);
q.setNext(stdNode);
stdNode.setNext(p);
}
}
}
result.setText(toString());
inFile.close();
} catch(MalformedURLException mue) {}
catch(IOException ioe) {}
}
public void actionPerformed(ActionEvent e) {
studentDB.remove(new StudentNode(Integer.parseInt(tfNumber.getText())));
result.setText(toString());
}
public String toString() {
String s = "";
Iterator itr = studentDB.iterator();
while (itr.hasNext())
s += ((StudentNode) itr.next()).toString() + '\n';
return s;
}
}