用java设计一个检验统一社会信用代码真假的小窗口

首先我们先了解一下统一社会信用代码的算法

了解完算法后我们需要在idea中下载一个叫JForm的插件

下好之后我们新建一个JForm的项目

设计一个界面大概如下:

然后会自动生成一个类,然后我们在类里面操作

首先我们需要设计一个title

在开头位置更改代码

public class Credit extends JFrame {
    public Credit(String title) {
        super(title);
        initComponents();
    }

然后找到我们的ok按钮

通过下面代码在下面添加事件

okButton.addActionListener(this::checkCardNum);

然后alt+回车会自动生成一个方法

然后我们找到方法,在方法中写我们的代码

   private void checkCardNum(ActionEvent actionEvent) {
        String cardNum = textField1.getText();
        if ("".equals(cardNum)) {
            textArea1.setText("");
            return;
        }
        if (cardNum.length() != 18) {
            textArea1.setText("代码长度不正确");
            return;
        }
        if (CardUtils.checkCard(cardNum)) {
            textArea1.setText("代码正确");
            return;
        } else textArea1.setText("代码错误");
        return;

其中的CardUtils也是同样的alt+回车生成一个类,我们来写算法

public class CardUtils {
    public static boolean checkCard(String cardNum) {
        int[] w = {1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28};
        int sum = 0;
        for (int i = 0; i < w.length; i++) {
            int a = toNumByChar(cardNum.charAt(i));
            int b = w[i];
            sum += b * a;
        }
        int r = 31 - sum % 31;
        int l = toNumByChar(cardNum.charAt(17));
        return r == l;
    }

    public static int toNumByChar(char c) {

        return switch (c) {
            case 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' -> c - 55;
            case 'J', 'K', 'L', 'M', 'N' -> c - 56;
            case 'P', 'Q', 'R' -> c - 57;
            case 'T', 'U' -> c - 58;
            case 'W', 'X', 'Y' -> c - 59;
            case 'I', 'O', 'S', 'Z', 'V' -> {
                throw new RuntimeException("无法将字符" + c + "转换成对应的数字");
            }
            default -> c - 48;
        };


    }
}

 然后在运行时我们会发现窗口是带水印的,只需要找到这一段删掉即可

            dialogPane.setBorder(new javax.swing.border.CompoundBorder(new javax.swing.border.TitledBorder(new javax.swing.border.EmptyBorder
            (0,0,0,0), "JFor\u006dDesi\u0067ner \u0045valu\u0061tion",javax.swing.border.TitledBorder.CENTER,javax.swing.border
            .TitledBorder.BOTTOM,new java.awt.Font("Dia\u006cog",java.awt.Font.BOLD,12),java.awt
            .Color.red),dialogPane. getBorder()));dialogPane. addPropertyChangeListener(new java.beans.PropertyChangeListener(){@Override public void
            propertyChange(java.beans.PropertyChangeEvent e){if("bord\u0065r".equals(e.getPropertyName()))throw new RuntimeException()
            ;}});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值