黑马程序员技术交流社区
标题: 求解?? [打印本页]
作者: 我的专属 时间: 2014-4-9 17:29
标题: 求解??
页面上有一张图片(PictureBox,在Image属性中加载图片),默认是隐藏的(Visible=False),用户在文本框中输入身份证号(131226198105223452),点击按钮,如果年龄大于18岁则显示图片(Visible=True),否则提示年龄太小。取当前年份:DateTime.Now.Year。
作者: 伪善者。 时间: 2014-4-9 17:44
用字符串的SubString方法 两个参数 第一个参数是从字符串的第几个数字开始提取 第二个参数是提取
的长度. 再去DateTime.Now.Year取当前年份 减去 提取的字符串的转换后的数值 判断当
差大于等于18时 令 图片的 visible 属性 设为true 反之则设为 false;- int age;//存储用户年龄
- string year=txtID.text.SubString(6,4);//提取用户输入的字符串中的年份
- age=int.Parse(year);
- 剩下就判断差值就可以了
复制代码
作者: czwanglei 时间: 2014-4-9 19:38
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace 身份验证
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void tBidentityCard_KeyPress(object sender, KeyPressEventArgs e)
- {
- //屏蔽掉0-9之外的数字
- if (e.KeyChar < '0' || e.KeyChar > '9')
- {
- e.Handled = true;
- }
- //可以输入backspace键
- if (e.KeyChar == 8)
- {
- e.Handled = false;
- }
- //判定最后一位输入的是x
- if ((tBidentityCard.SelectionStart == 17) && (e.KeyChar == 'X' || e.KeyChar =='x'))
- {
- e.Handled = false;
- }
- }
- private void btnView_Click(object sender, EventArgs e)
- {
- /*
- * 18位身份验证信息,6位地址码,8位出生日期码,3位数字顺序码和一位校验码
- * 加权因子 Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
- */
- string id = tBidentityCard.Text.Trim();
- if (id.Length < 18)//检查输入长度小于18请重新输入
- {
- MessageBox.Show("请输入 18位身份证号码 ");
- tBidentityCard.Focus();
- tBidentityCard.SelectAll();
-
- }
- else
- {
- if (CheckID(id))
- {
- string Agestring = id.Substring(6, 4);
- int age = DateTime.Now.Year - Convert.ToInt32(Agestring);
- if (age > 18)
- {
- pBtotal.Visible = true;
- }
- else
- {
- MessageBox.Show("年龄太小,回家看动画片吧。。");
-
- }
- }
- else
- {
- MessageBox.Show("你输入的身份证号码有误!请重新输入");
- tBidentityCard.Focus();
- tBidentityCard.SelectAll();
-
- }
- }
- }
- /// <summary>
- /// 用来检验身份证号码是否合格
- /// </summary>
- /// <param name="id">身份证号码</param>
- /// <returns>返回是否正确bool类型</returns>
- private bool CheckID(string id)
- {
- string number17 = id.Substring(0,17);
- string number18 = id.Substring(17);
- int []Quan={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
- string Checkwei = "10X98765432";
- int sum = 0;
- for (int i = 0; i < 17; i++)
- {
- sum +=(Convert.ToInt32(number17[i]))*Quan[i];
- }
- int mod = sum % 11;
- string result=Checkwei[mod].ToString();
- return number18.Equals(result, StringComparison.OrdinalIgnoreCase);//区分大小写比较是否相等
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- }
- }
- }
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |