栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用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), "JForu006dDesiu0067ner u0045valuu0061tion",javax.swing.border.TitledBorder.CENTER,javax.swing.border
            .TitledBorder.BOTTOM,new java.awt.Font("Diau006cog",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("bordu0065r".equals(e.getPropertyName()))throw new RuntimeException()
            ;}});

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976033.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号