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

📄 mainframe.java

📁 实用的java习题,初学者可用
💻 JAVA
字号:
package cardid;

import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class MainFrame
    extends JFrame {
  JPanel contentPane;
  JLabel lblTitle = new JLabel();
  JLabel lblFifteen = new JLabel();
  JLabel lblEighteen = new JLabel();
  JLabel lblBirthday = new JLabel();
  JLabel lblsex = new JLabel();
  JTextField txtFifteen = new JTextField();
  JTextField txtBirthday = new JTextField();
  JTextField txtsex = new JTextField();
  JButton btnChange = new JButton();
  JButton btnReset = new JButton();
  JTextField txtEighteen = new JTextField();
  public MainFrame() {
    try {
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      jbInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }

  /**
   * Component initialization.
   *
   * @throws java.lang.Exception
   */
  private void jbInit() throws Exception {
    contentPane = (JPanel) getContentPane();
    contentPane.setLayout(null);
    setSize(new Dimension(459, 480));
    setTitle("身份证更改程序");
    lblTitle.setFont(new java.awt.Font("Dialog", Font.PLAIN, 30));
    lblTitle.setHorizontalAlignment(SwingConstants.CENTER);
    lblTitle.setHorizontalTextPosition(SwingConstants.CENTER);
    lblTitle.setText("身份证号码15位转18位");
    lblTitle.setBounds(new Rectangle(58, 43, 338, 42));
    lblFifteen.setText("15位身份证号码");
    lblFifteen.setBounds(new Rectangle(45, 138, 103, 20));
    lblEighteen.setText("18位身份证号码");
    lblEighteen.setBounds(new Rectangle(44, 180, 104, 20));
    lblBirthday.setText("出生日期");
    lblBirthday.setBounds(new Rectangle(92, 223, 56, 20));
    lblsex.setText("性别");
    lblsex.setBounds(new Rectangle(116, 266, 32, 20));
    txtFifteen.setText("");
    txtFifteen.setBounds(new Rectangle(172, 136, 221, 25));
    txtBirthday.setEditable(false);
    txtBirthday.setText("");
    txtBirthday.setBounds(new Rectangle(172, 227, 221, 25));
    txtsex.setEditable(false);
    txtsex.setBounds(new Rectangle(172, 271, 221, 25));
    btnChange.setBounds(new Rectangle(107, 353, 85, 29));
    btnChange.setText("转换");
    btnChange.addActionListener(new MainFrame_btnChange_actionAdapter(this));
    btnReset.setBounds(new Rectangle(254, 353, 140, 29));
    btnReset.setText("重新输入");
    btnReset.addActionListener(new MainFrame_btnReset_actionAdapter(this));
    txtEighteen.setEditable(false);
    txtEighteen.setText("");
    txtEighteen.setBounds(new Rectangle(172, 181, 220, 25));
    contentPane.add(lblTitle);
    contentPane.add(txtFifteen);
    contentPane.add(txtBirthday);
    contentPane.add(txtsex);
    contentPane.add(btnReset);
    contentPane.add(btnChange);
    contentPane.add(txtEighteen);
    contentPane.add(lblEighteen);
    contentPane.add(lblsex);
    contentPane.add(lblBirthday);
    contentPane.add(lblFifteen);
  }

  public void btnReset_actionPerformed(ActionEvent e) {
    //重新输入的代码
    txtFifteen.setText("");
    txtEighteen.setText("");
    txtBirthday.setText("");
    txtsex.setText("");
  }

  private String Convert(String cardid) {
    StringBuffer newCardId = new StringBuffer("");
    int sum = 0;
    final int v_List[] = {
        2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7};
    final String strTailChars = "10X98765432";
    newCardId.append(cardid.substring(0, 6));
    newCardId.append("19");
    newCardId.append(cardid.substring(6, cardid.length()));
    String s = newCardId.toString();
    for (int i = 0; i < s.length(); i++) {
      int tmp = Integer.parseInt(s.substring(i, i + 1));
      sum += tmp * v_List[v_List.length - 1 - i];
    }
    int k = sum % 11;
    System.out.println(newCardId.toString() + ":  " + k);
    newCardId.append(strTailChars.substring(k, k + 1));
    return newCardId.toString();
  }

  private String getDate(String cardid) {
    String date = "";
    date = "19" + cardid.substring(6, 8) + "年" + cardid.substring(8, 10) + "月" +
        cardid.substring(10, 12) + "日";
    return date;
  }

  private String getSex(String cardid) {
    String sex = "";
    int tmp = Integer.parseInt(cardid.substring(cardid.length() - 1));
    if (tmp % 2 == 0) {
      sex = "女";
    }
    else {
      sex = "男";
    }
    return sex;
  }

  private boolean isNotNum(String cardid)
  {
    boolean flag = false;
    String numFormat = "0123456789";
    for(int i=0;i<cardid.length();i++)
    {
      if(numFormat.indexOf(cardid.substring(i,i+1)) == -1)
      {
        flag = true;
        break;
      }
    }
    return flag;
  }

  public void btnChange_actionPerformed(ActionEvent e) {
    //获取用户输入的ID
    String fifteen = txtFifteen.getText().trim();
    //非空判断
    if (fifteen.equals("")) {
      JOptionPane.showMessageDialog(this, "请重新输入!!!");
      return;
    }
    //是否都是数字判断
    if(isNotNum(fifteen))
    {
      JOptionPane.showMessageDialog(this, "不合法,请重新输入!!!");
      return;
    }
    //长度判断
    if (fifteen.length() < 15) {
      JOptionPane.showMessageDialog(this,
                                    "您输入的号码为" + fifteen.length() + "位,请重新输入!!!");
      txtFifteen.setText("");
      return;
    }
    //转换并设置
    txtEighteen.setText(Convert(fifteen));
    //得到生日并设置
    txtBirthday.setText(getDate(fifteen));
    //得到性别并设置
    txtsex.setText(getSex(fifteen));
  }
}

class MainFrame_btnChange_actionAdapter
    implements ActionListener {
  private MainFrame adaptee;
  MainFrame_btnChange_actionAdapter(MainFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.btnChange_actionPerformed(e);
  }
}

class MainFrame_btnReset_actionAdapter
    implements ActionListener {
  private MainFrame adaptee;
  MainFrame_btnReset_actionAdapter(MainFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.btnReset_actionPerformed(e);
  }
}

⌨️ 快捷键说明

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