MFC银行卡卡号验证程序
MFC银行卡卡号验证程序
PcardDlg.cpp
// PcardDlg.cpp : implementation file
//#include "stdafx.h"
#include "Pcard.h"
#include "PcardDlg.h"#include "mySplash.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/
// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog
{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementation
protected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAP
END_MESSAGE_MAP()/
// CPcardDlg dialogCPcardDlg::CPcardDlg(CWnd* pParent /*=NULL*/): CDialog(CPcardDlg::IDD, pParent)
{//{{AFX_DATA_INIT(CPcardDlg)m_number = _T("");m_fanhui = _T("");m_wrong = _T("");m_reyanzheng = _T("");//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CPcardDlg::DoDataExchange(CDataExchange* pDX)
{CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CPcardDlg)DDX_Text(pDX, IDC_EDIT1, m_number);DDX_Text(pDX, IDC_EDIT2, m_fanhui);DDX_Text(pDX, IDC_STATIC_3, m_wrong);DDX_Text(pDX, IDC_STATIC_6, m_reyanzheng);//}}AFX_DATA_MAP
}BEGIN_MESSAGE_MAP(CPcardDlg, CDialog)//{{AFX_MSG_MAP(CPcardDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON3, OnButton3)//}}AFX_MSG_MAP
END_MESSAGE_MAP()/
// CPcardDlg message handlersBOOL CPcardDlg::OnInitDialog()
{CDialog::OnInitDialog();// Add "About..." menu item to system menu.mySplash wndSplash; //创建启动窗口类的实例wndSplash.Create(IDB_BITMAP1); //BMP图片的IDwndSplash.CenterWindow();wndSplash.UpdateWindow(); //send WM_PAINTSleep(3000);wndSplash.DestroyWindow();//销毁初始画面窗口//修改显示验证码的文本框的默认值为随机的四位数srand((int)time(0)); //以时间为为标准产生随机数,配合rand()可以保证每次程序运行时产生的随机数不同int r = rand()%(9999 - 1000 + 1)+1000;CString yanzheng; //修改显示验证码的文本框的默认值yanzheng.Format("%d",r); //将int类型直接转化成CString类型GetDlgItem(IDC_STATIC_5)->SetWindowText(yanzheng); //显示验证码// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control
}void CPcardDlg::OnSysCommand(UINT nID, LPARAM lParam)
{if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}
}// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.void CPcardDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}
}// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CPcardDlg::OnQueryDragIcon()
{return (HCURSOR) m_hIcon;
}void CPcardDlg::OnButton1()
{// TODO: Add your control notification handler code hereGetDlgItem(IDC_EDIT2)->SetWindowText(""); //清空编辑框中已存在的内容,即清空上次的检验结果GetDlgItem(IDC_STATIC_3)->SetWindowText(""); //清空银行卡出错时的提示GetDlgItem(IDC_STATIC_6)->SetWindowText(""); //清空验证码错误时的提示CString s1,s2;GetDlgItem(IDC_STATIC_5)->GetWindowText(s1); //获取当前产生下的验证码GetDlgItem(IDC_EDIT4)->GetWindowText(s2); //获取用户输入的验证码if(s1==s2) //验证验证码是否正确{ //若验证码正确GetDlgItem(IDC_EDIT1)->GetWindowText(m_number); //从编辑框获取内容,读取银行卡号CString cs; cs=m_number;if(cs.GetLength() != 15) //检验输入的卡号是否为15位{ //不是15位CString wor="请重新输入正确的15位信用卡卡号!";m_wrong=wor;GetDlgItem(IDC_STATIC_3)->SetWindowText(m_wrong); //显示到编辑框上,提示输入的不是15位GetDlgItem(IDC_EDIT4)->SetWindowText(""); //清空上次填的验证码int r = rand()%(9999 - 1000 + 1)+1000; //重新生成新的验证码CString yanzheng;yanzheng.Format("%d",r); //将int类型直接转化成CString类型GetDlgItem(IDC_STATIC_5)->SetWindowText(yanzheng);//显示新的验证码}else { //若输入的卡号是15位char ch[20];memcpy(ch,cs,cs.GetLength()); //将CString类型的卡号转化为char数组int jisum,osum;jisum=0; //奇数和osum=0; //偶数和for(int i=14;i>=0;i=i-2) //奇数求和{jisum=jisum+(int)ch[i]-48; //(int)强制转化过去是ASILL,要-48才是数值}for(int y=13;y>=1;y=y-2) //偶数求和{int now=( (int)ch[y]-48 )*2;if(now>9){now=now-9;}osum=osum+now;}int sum=0;sum=jisum+osum; //奇数和偶数的总和if(sum%10 == 0) //总和如果是10的整数倍,验证成功{CString ret1="成功!";m_fanhui=ret1;MessageBox("该信用卡卡号验证成功!",MB_OK); //弹出新窗口GetDlgItem(IDC_EDIT2)->SetWindowText(m_fanhui); //显示到编辑框上,显示验证成功GetDlgItem(IDC_EDIT4)->SetWindowText(""); //清空上次填的验证码int r = rand()%(9999 - 1000 + 1)+1000; //重新生成新的验证码CString yanzheng;yanzheng.Format("%d",r); //将int类型直接转化成CString类型GetDlgItem(IDC_STATIC_5)->SetWindowText(yanzheng);}else //总和不是10的整数倍,验证失败{CString ret2="失败!";m_fanhui=ret2;MessageBox("该信用卡卡号验证失败!",MB_OK); //弹出新窗口GetDlgItem(IDC_EDIT2)->SetWindowText(m_fanhui); //显示到编辑框上,显示验证失败GetDlgItem(IDC_EDIT4)->SetWindowText(""); //清空上次填的验证码int r = rand()%(9999 - 1000 + 1)+1000; //重新生成新的验证码CString yanzheng;yanzheng.Format("%d",r); //将int类型直接转化成CString类型GetDlgItem(IDC_STATIC_5)->SetWindowText(yanzheng);}}}else //验证码验证失败{CString s3="请重新输入验证码";m_reyanzheng=s3;GetDlgItem(IDC_STATIC_6)->SetWindowText(m_reyanzheng); //显示 重新输入验证码的提示GetDlgItem(IDC_EDIT4)->SetWindowText(""); //清空上次填的验证码int r = rand()%(9999 - 1000 + 1)+1000; //重新生成新的验证码CString yanzheng;yanzheng.Format("%d",r); //将int类型直接转化成CString类型GetDlgItem(IDC_STATIC_5)->SetWindowText(yanzheng);//显示新的验证码}
}void CPcardDlg::OnButton2() //更换验证码
{// TODO: Add your control notification handler code hereint r = rand()%(9999 - 1000 + 1)+1000;CString yanzheng;yanzheng.Format("%d",r); //将int类型直接转化成CString类型GetDlgItem(IDC_STATIC_5)->SetWindowText(yanzheng); //显示新的验证码
}void CPcardDlg::OnButton3() //一键清空银行卡号
{// TODO: Add your control notification handler code hereGetDlgItem(IDC_EDIT1)->SetWindowText(""); //清空编辑框中已存在的内容,一键清空银行卡号}
MFC银行卡卡号验证程序相关推荐
- 银行卡三元素检测 根据姓名+身份证号+银行卡卡号验证信息是否匹配
银行卡检测api,根据姓名+身份证号+银行卡卡号验证信息是否匹配. 接口名称:银行卡检测api 接口平台:聚合数据 接口地址:http://v.juhe.cn/verifybankcard3/quer ...
- 银联银行卡卡号java_编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类...
编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62" ...
- 前端JS校验银行卡卡号和身份证号码(附ES6版方法)
1.银行卡卡号校验方法. function luhnCheck(bankno) { var lastNum = bankno.substr(bankno.length - 1, 1); //取出最后一 ...
- Python+OpenCV 识别银行卡卡号
Python+OpenCV 识别银行卡卡号 今天尝试一下用python+OpenCV,使用模板匹配的方式做个简单地识别银行卡卡号(大部分参考网上的,自己改了一部分,代码写的有点不太好,但是思路很清晰, ...
- 银行卡卡号格式规范 每隔4为一个空格
最近涉及到一个绑定银行卡的需求,需要格式化银行卡卡号.即:每隔4为做一个空格. 一个很简单的功能,大牛请自动忽略... 做个笔记O(∩_∩)O哈! bankCardNoEditTxt.addTextC ...
- 基于Python的Opencv 自动识别银行卡卡号系统
一. 摘要 此应用功能为自动识别并获取银行卡卡号,通过导入需要识别的银行卡图片,以及跟银行卡上卡号的数字相一致的数字模型,则可以成功实现识别并获取银行卡卡号的功能.如果你对此感兴趣的话,下面将会详细介 ...
- php信用卡卡号验证函数
介绍一个php信用卡卡号验证函数,可以验证一个卡号是否是信用卡. function validateCard ($cardnumber) {$cardnumber = preg_replace (&q ...
- 学习Opencv+Python之银行卡卡号识别
学习Opencv+Python之银行卡卡号识别 思路: 获取模板轮廓 获取模板中每个数字的轮廓 获取银行卡卡号轮廓 分别提取卡号中的每个数字的轮廓 对比识别 代码: # 导入工具包 from imut ...
- appium使用sendkeys输入银行卡卡号(每4个数字自动空一格)总是输入不正确的解决办法
appium使用sendkeys输入银行卡卡号(每4个数字自动空一格)总是输入不正确的解决办法 方法一: public static void inputComsumeInfo(WebElement ...
- 验证银行卡卡号是否符合规则
话不多说,上代码 /* * 常用信用卡卡号规则 * Issuer Identifier Card Number Length * Diner's ...
最新文章
- 苹果12系统升级无服务器,iOS 12.1.4验证现已关闭 你还没升到12.2吗?
- 设计模式 - 建造者模式(Builder Pattern)
- 为什么孙悟空能大闹天宫,却打不过路上的妖怪?
- vue-cil解决开发环境的跨域问题
- 0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)
- 如何按行政区划下载谷歌地图并裁剪
- c语言- 负号运算符,C语言运算符盘点,C语言运算符知识点讲解
- Excel转PDF,Excel行数过多导致PDF折行、换行显示
- c语言多个自我介绍编码,代码自我介绍.doc
- 力扣刷题 DAY_84 贪心
- FairGuard游戏加固兼容摸摸鱼和TAPTAP云玩
- 如何在1到100的整数数组中找到缺失的数字
- CLR的主要作用有哪些
- 光纤布线兵法之特色产品(一)
- 期货开户加一分高交返靠谱吗?
- 第七章:项目成本管理 - (7.4 控制成本)
- java序列化与反序列化的使用方法-java.io.InvalidClassException错误
- 知识付费的七种变现方式
- 免费生成早安问候图片,在线生成晚安问候图片,带头像。
- 2020年最值得关注的5个logo设计趋势:简单的几何形状logo
热门文章
- python迷宫万花筒代码_Python实现PS滤镜的万花筒效果示例,python万花筒
- 大学英语B116-写作
- ValueError:only one element tensors can be converted to Python scalars解决办法
- 干货|50个大数据面试问题及答案第一篇:10个大数据面试入门级问题
- 计算机tpm管理,【教程】安装 Windows 11 的三种方法,绕过TPM2.0
- php加入购物车怎样实现_php简单实现加入购物车功能案例
- 【Unity】射击小游戏
- DEFCON 26 | 利用传真功能漏洞渗透进入企业内网(Faxploit)
- C++中---结构体变量的默认值以及构造函数的应用
- 拼多多卖家必知:店铺评分和评价那点事