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; } }
make use of the classes JFileChooser from javax.swing in the Java API to add file opening and saving features
client database must be implemented as a linked list of client items
Previou page | Next page |