⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch6_e6_14.java

📁 《java语言与面向对象程序设计题解及实验指导》源代码
💻 JAVA
字号:
import java.applet.*; 
import java.awt.*;
import java.awt.event.*;

import java.util.*;

public class ch6_e6_14 extends Applet implements ActionListener
{
    final long CONNECT_NUMBER = 200;
    final double CONNECT_FEE = 0.5;
    
    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("");

                repaint();
            }
            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 = 100001;
    }
    
    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;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -