转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP.net实现信用卡检查和自定义确认控件(一)         ★★★★

ASP.net实现信用卡检查和自定义确认控件(一)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:690 更新时间:2009/4/23 10:50:22
ASP.net实现信用卡检查和自定义确认控件

Asp.net 提供了功能十分强大的确认控件, 我们可以轻松的使用,但有一些特别的确认需要我们自己
来处理, 我们还可以从确认控件的基类中继承出附合我们自己需求的确认控件. 这是一种十分实用的方法, 下面我向大家介绍这方面的二篇文章, 它们提供了具全的实现步骤,我想没有比这更好的入门了.
文章作者: David J. Gottlieb 翻译:raozr

当你在互联网上购买商品时,你用于支付的信用卡需在服务端被特别的程序确认.其中的一项确认就是信用卡号码和类型是否有效.在大多数情况下是用这Luhn算法来实现的.

在本文中我们将建一个新类用于信用卡号的有效性检查,在这个过程中我们将返会一个布尔值 来进行校验.
在写代码前,先看看算法.

  1. 从右边的第二位开始往左到最后一位,每隔一位数乘以2.
  2. 看他们相加的和是否大于10.如果大于10,我们将乘积的右边和左边的数相加,得出的数再加到前面的和.
  3. 然后每相隔的项如第1,第3,第5等 加入到最后的等式.
  4. 完成以上步骤,我们将所有得出的数相加.如果和可以被10整除,则卡号有效;反之无效.
这里有一个简单的例子:
假定信用卡号为
4111-1111-1111-1111
 4 1 1 1 - 1 1 1 1 - 1 1 1 1 - 1 1 1 1
x2 x2 x2 x2 x2 x2 x2 x2
--------------------------------------
8 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
当我们把这些数相加等于30.30可以被10整除,由此说明此卡号有效.下面我们开始写代码.

让我们从建立一个确定卡号是否有效的布尔返回值开始.


1:     private bool ValidateCC(string creditNo)
2: {
3: int indicator = 1; //-- 每隔一位数的标记
4: int firstNumToAdd = 0; //-- 用来储存第一组数字的和
5: int secondNumToAdd = 0; //-- 用来储存第二组数字的和
6: string num1; //-- 用于当每隔一位数相加的和大于10时,储存最左边的整数
7:
8: string num2; //-- 用于当每隔一位数相加的和大于10时,储存最右边的整数
9:
10:
11: //-- 把信用卡号字符串转换为一个字符数组
12: char[] ccArr = creditNo.ToCharArray();
13:
14: for (int i=ccArr.Length-1;i>=0;i--)
15: {
16: char ccNoAdd = ccArr[i];
17: int ccAdd = Int32.Parse(ccNoAdd.ToString());
18: if (indicator == 1)
19: {
20: //-- 当我们碰到奇数位时,将它加入到总值里
21:
22: firstNumToAdd += ccAdd;
23: //-- 将标记设为0,使下一次循环跳过此程序段
24:
25: indicator = 0;
26: }
27: else
28: {
29: //-- 如果当前整数乘以2之后大于10,就将和分为两个整数并将它们相加,
30: //-- 相加的值再加到总值里.
31:
32: if ((ccAdd + ccAdd) >= 10)
33: {
34: int temporary = (ccAdd + ccAdd);
35: num1 = temporary.ToString().Substring(0,1);
36: num2 = temporary.ToString().Substring(1,1);
37: secondNumToAdd += (Convert.ToInt32(num1) + Convert.ToInt32(num2));
38: }
39: else
40: {
41: //-- 否则,将它们相加,相加的值再加到总值里.
42: secondNumToAdd += ccAdd + ccAdd;
43: }
44: //-- 将标记设为1,我们就能对下一个整数执行不同的代码
45:
46: indicator = 1;
47: }
48: }
49: //-- 如果两个数的和被10整除,那么卡是有效的,否则,无效.
50:
51: bool isValid = false;
52: if ((firstNumToAdd + secondNumToAdd) % 10 == 0)
53: {
54: isValid = true;
55: }
56: else
57: {
58: isValid = false;
59: }
60: return isValid;
61: }


让我们把以上的程序插入到Page Loag 事件中,在这个事件中我们引用以上代码, 并将我们的信用卡号当作参数传入.


1:     private void Page_Load(object sender, System.EventArgs e)
2: {
3: if (Page.IsPostBack)
4: {
5: if (ValidateCC(CCNo.Text))
6: {
7: Result.Text = "Is Valid!";
8: }
9: else
10: {
11: Result.Text = "Nope!";
12: }
13: }
14: }
15:


下一篇: 实现信用卡检查的自定义控件


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台