A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我的专属 中级黑马   /  2014-4-9 17:29  /  1473 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


页面上有一张图片(PictureBox,在Image属性中加载图片),默认是隐藏的(Visible=False),用户在文本框中输入身份证号(131226198105223452),点击按钮,如果年龄大于18岁则显示图片(Visible=True),否则提示年龄太小。取当前年份:DateTime.Now.Year。

2 个回复

倒序浏览
用字符串的SubString方法  两个参数 第一个参数是从字符串的第几个数字开始提取 第二个参数是提取
的长度. 再去DateTime.Now.Year取当前年份 减去 提取的字符串的转换后的数值 判断当
差大于等于18时  令 图片的 visible 属性 设为true 反之则设为 false;
  1. int age;//存储用户年龄
  2. string year=txtID.text.SubString(6,4);//提取用户输入的字符串中的年份
  3. age=int.Parse(year);
  4. 剩下就判断差值就可以了
复制代码

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;

  9. namespace 身份验证
  10. {
  11.     public partial class Form1 : Form
  12.     {
  13.         public Form1()
  14.         {
  15.             InitializeComponent();
  16.         }

  17.         private void tBidentityCard_KeyPress(object sender, KeyPressEventArgs e)
  18.         {
  19.             //屏蔽掉0-9之外的数字
  20.             if (e.KeyChar < '0' || e.KeyChar > '9')
  21.             {
  22.                 e.Handled = true;
  23.             }
  24.             //可以输入backspace键
  25.             if (e.KeyChar == 8)
  26.             {
  27.                 e.Handled = false;
  28.             }
  29.             //判定最后一位输入的是x
  30.             if ((tBidentityCard.SelectionStart == 17) && (e.KeyChar == 'X' || e.KeyChar =='x'))
  31.             {
  32.                 e.Handled = false;
  33.             }
  34.         }

  35.         private void btnView_Click(object sender, EventArgs e)
  36.         {
  37.             /*
  38.              * 18位身份验证信息,6位地址码,8位出生日期码,3位数字顺序码和一位校验码
  39.              * 加权因子 Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
  40.              */
  41.             string id = tBidentityCard.Text.Trim();
  42.             if (id.Length < 18)//检查输入长度小于18请重新输入
  43.             {
  44.                 MessageBox.Show("请输入 18位身份证号码  ");
  45.                 tBidentityCard.Focus();
  46.                 tBidentityCard.SelectAll();
  47.                
  48.             }
  49.             else
  50.             {
  51.                 if (CheckID(id))
  52.                 {
  53.                     string Agestring = id.Substring(6, 4);
  54.                     int age = DateTime.Now.Year - Convert.ToInt32(Agestring);
  55.                     if (age > 18)
  56.                     {
  57.                         pBtotal.Visible = true;
  58.                     }
  59.                     else
  60.                     {
  61.                         MessageBox.Show("年龄太小,回家看动画片吧。。");
  62.                         
  63.                     }

  64.                 }
  65.                 else
  66.                 {
  67.                     MessageBox.Show("你输入的身份证号码有误!请重新输入");
  68.                     tBidentityCard.Focus();
  69.                     tBidentityCard.SelectAll();
  70.                   
  71.                 }
  72.             }
  73.         }
  74.         /// <summary>
  75.         /// 用来检验身份证号码是否合格
  76.         /// </summary>
  77.         /// <param name="id">身份证号码</param>
  78.         /// <returns>返回是否正确bool类型</returns>
  79.         private bool CheckID(string id)
  80.         {
  81.             string number17 = id.Substring(0,17);
  82.             string number18 = id.Substring(17);
  83.             int []Quan={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
  84.             string Checkwei = "10X98765432";
  85.             int sum = 0;
  86.             for (int i = 0; i < 17; i++)
  87.             {
  88.                 sum +=(Convert.ToInt32(number17[i]))*Quan[i];
  89.             }
  90.             int mod = sum % 11;
  91.             string result=Checkwei[mod].ToString();

  92.             return number18.Equals(result, StringComparison.OrdinalIgnoreCase);//区分大小写比较是否相等
  93.         }

  94.         private void Form1_Load(object sender, EventArgs e)
  95.         {

  96.         }

  97.     }
  98. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马