import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Demo6_14 extends Applet implements ActionListener
{
long CONNECT_NUMBER = 200;
double CONNECT_FEE = 0.1;
Label cardNumberLbl = new Label();
Label balanceLbl = new Label("余额:");
Label passwordLbl = new Label("密码");
TextField balanceTfd = new TextField(8);
TextField passwordTfd = new TextField(8);
TextField searchIdxTfd = new TextField(8);
Button createCard = new Button("创建");
Button searchCard = new Button("查找");
Label searchResult = new Label("查找结果:"
+ " ");
Vector phoneCardVector = new Vector();
public void init()
{
balanceTfd.setText("");
passwordTfd.setText("");
searchIdxTfd.setText("");
cardNumberLbl.setText("电话卡号:" + PhoneCard200.cardNumber200);
add(cardNumberLbl);
add(balanceLbl);
add(balanceTfd);
add(passwordLbl);
add(passwordTfd);
add(createCard);
add(searchIdxTfd);
add(searchCard);
add(searchResult);
passwordTfd.setEchoChar('*');
searchResult.setAlignment(Label.LEFT);
createCard.addActionListener(this);
searchCard.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
PhoneCard200 phoneCard;
if(ae.getSource() == createCard)
{
try
{
phoneCard = new PhoneCard200(Double.parseDouble(balanceTfd.getText()),passwordTfd.getText(),CONNECT_NUMBER,CONNECT_FEE);
boolean added = false;
for(int i=0; i<phoneCardVector.size(); i++)
{
if(phoneCard.getBalance() <((PhoneCard200)(phoneCardVector.get(i))).getBalance())
{
phoneCardVector.insertElementAt(phoneCard,i);
added = true;
break;
}
}
if(!added)
phoneCardVector.add(phoneCard);
cardNumberLbl.setText("电话卡号:" + PhoneCard200.cardNumber200);
balanceTfd.setText("");
passwordTfd.setText("");
}
catch(NumberFormatException nfe)
{
showStatus("输入的余额格式不对,请重输。");
balanceTfd.setText("");
passwordTfd.setText("");
}
}
else if(ae.getSource() == searchCard)
{
try
{
Object obj;
boolean found = false;
long searchIndex = Long.parseLong(searchIdxTfd.getText());
for(Enumeration e=phoneCardVector.elements();e.hasMoreElements(); )
{
obj = e.nextElement();
if(obj instanceof PhoneCard200)
{
if( ((PhoneCard200)obj).getCardNumber()== searchIndex )
{
searchResult.setText("查找结果:" + ((PhoneCard200)obj).toString());
found = true;
repaint();
break;
}
}
}
if(!found)
{
searchResult.setText("未找到。");
searchIdxTfd.setText("");
}
}
catch(NumberFormatException nfe)
{
showStatus("查找域输入的卡号格式错误。");
searchIdxTfd.setText("");
searchResult.setText("查找结果: ");
}
}
else
{
showStatus("事件" + ae.toString()+ "未定义处理操作");
balanceTfd.setText("");
passwordTfd.setText("");
}
}
public void paint(Graphics g)
{
for(int i=0; i<phoneCardVector.size(); i++)
{
g.drawString(phoneCardVector.get(i).toString(),10, 150+20*i);
}
}
}
class PhoneCard200
{
static long cardNumber200;
long cardNumber;
double balance;
String password;
long connectNumber;
double connectFee;
static
{
cardNumber200 = 01;
}
public PhoneCard200(double b,String pwd,long cNum,double cFee)
{
cardNumber = cardNumber200++;
balance = b;
password = new String(pwd);
connectNumber = cNum;
connectFee = cFee;
}
public long getCardNumber()
{
return cardNumber;
}
public double getBalance()
{
return balance;
}
public String toString()
{
String s = "卡号:" + cardNumber + " 余额:" + balance+ " 密码:" + password+ " 连接号:" + connectNumber+ " 连接费:" + connectFee;
return s;
}
}