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银行卡卡号验证程序相关推荐

  1. 银行卡三元素检测 根据姓名+身份证号+银行卡卡号验证信息是否匹配

    银行卡检测api,根据姓名+身份证号+银行卡卡号验证信息是否匹配. 接口名称:银行卡检测api 接口平台:聚合数据 接口地址:http://v.juhe.cn/verifybankcard3/quer ...

  2. 银联银行卡卡号java_编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类...

    编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类 编写Java程序,使用单例模式,创建可以生成银联借记卡号的工具类,银联借记卡号是一个 19 位的数字,卡号以"62" ...

  3. 前端JS校验银行卡卡号和身份证号码(附ES6版方法)

    1.银行卡卡号校验方法. function luhnCheck(bankno) { var lastNum = bankno.substr(bankno.length - 1, 1); //取出最后一 ...

  4. Python+OpenCV 识别银行卡卡号

    Python+OpenCV 识别银行卡卡号 今天尝试一下用python+OpenCV,使用模板匹配的方式做个简单地识别银行卡卡号(大部分参考网上的,自己改了一部分,代码写的有点不太好,但是思路很清晰, ...

  5. 银行卡卡号格式规范 每隔4为一个空格

    最近涉及到一个绑定银行卡的需求,需要格式化银行卡卡号.即:每隔4为做一个空格. 一个很简单的功能,大牛请自动忽略... 做个笔记O(∩_∩)O哈! bankCardNoEditTxt.addTextC ...

  6. 基于Python的Opencv 自动识别银行卡卡号系统

    一. 摘要 此应用功能为自动识别并获取银行卡卡号,通过导入需要识别的银行卡图片,以及跟银行卡上卡号的数字相一致的数字模型,则可以成功实现识别并获取银行卡卡号的功能.如果你对此感兴趣的话,下面将会详细介 ...

  7. php信用卡卡号验证函数

    介绍一个php信用卡卡号验证函数,可以验证一个卡号是否是信用卡. function validateCard ($cardnumber) {$cardnumber = preg_replace (&q ...

  8. 学习Opencv+Python之银行卡卡号识别

    学习Opencv+Python之银行卡卡号识别 思路: 获取模板轮廓 获取模板中每个数字的轮廓 获取银行卡卡号轮廓 分别提取卡号中的每个数字的轮廓 对比识别 代码: # 导入工具包 from imut ...

  9. appium使用sendkeys输入银行卡卡号(每4个数字自动空一格)总是输入不正确的解决办法

    appium使用sendkeys输入银行卡卡号(每4个数字自动空一格)总是输入不正确的解决办法 方法一: public static void inputComsumeInfo(WebElement ...

  10. 验证银行卡卡号是否符合规则

    话不多说,上代码 /* * 常用信用卡卡号规则 * Issuer Identifier  Card Number                            Length * Diner's ...

最新文章

  1. 苹果12系统升级无服务器,iOS 12.1.4验证现已关闭 你还没升到12.2吗?
  2. 设计模式 - 建造者模式(Builder Pattern)
  3. 为什么孙悟空能大闹天宫,却打不过路上的妖怪?
  4. vue-cil解决开发环境的跨域问题
  5. 0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)
  6. 如何按行政区划下载谷歌地图并裁剪
  7. c语言- 负号运算符,C语言运算符盘点,C语言运算符知识点讲解
  8. Excel转PDF,Excel行数过多导致PDF折行、换行显示
  9. c语言多个自我介绍编码,代码自我介绍.doc
  10. 力扣刷题 DAY_84 贪心
  11. FairGuard游戏加固兼容摸摸鱼和TAPTAP云玩
  12. 如何在1到100的整数数组中找到缺失的数字
  13. CLR的主要作用有哪些
  14. 光纤布线兵法之特色产品(一)
  15. 期货开户加一分高交返靠谱吗?
  16. 第七章:项目成本管理 - (7.4 控制成本)
  17. java序列化与反序列化的使用方法-java.io.InvalidClassException错误
  18. 知识付费的七种变现方式
  19. 免费生成早安问候图片,在线生成晚安问候图片,带头像。
  20. 2020年最值得关注的5个logo设计趋势:简单的几何形状logo

热门文章

  1. python迷宫万花筒代码_Python实现PS滤镜的万花筒效果示例,python万花筒
  2. 大学英语B116-写作
  3. ValueError:only one element tensors can be converted to Python scalars解决办法
  4. 干货|50个大数据面试问题及答案第一篇:10个大数据面试入门级问题
  5. 计算机tpm管理,【教程】安装 Windows 11 的三种方法,绕过TPM2.0
  6. php加入购物车怎样实现_php简单实现加入购物车功能案例
  7. 【Unity】射击小游戏
  8. DEFCON 26 | 利用传真功能漏洞渗透进入企业内网(Faxploit)
  9. C++中---结构体变量的默认值以及构造函数的应用
  10. 拼多多卖家必知:店铺评分和评价那点事