美文网首页计算机杂谈
C#:身份证检验码,性别以及地区生日

C#:身份证检验码,性别以及地区生日

作者: e8a88b4a4052 | 来源:发表于2019-11-14 14:34 被阅读0次

private bool CheckIDCard(string idNumber)//判断位数和校验码

        {

            int n = idNumber.ToCharArray().Length;

            if (n != 18)

            {

                return false;

            }

            string[] Code = ("1,0,x,9,8,7,6,5,4,3,2").Split(',');//校验码字符值Ai的顺序

            string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(',');//加权因子

            char[] Ai = idNumber.Remove(17).ToCharArray();

            int sum = 0;

            for (int i = 0; i < 17; i++)

            {

                sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());

            }

          int y = sum % 11;//计算余数用来找校验码

            if (Code[y] != idNumber.Substring(17, 1).ToLower())//判断输入的校验码是否和计算出来的校验码相同

            {

              return false;//校验码验证 

            }

              return true;

        }

        private  string GetSex(string number)//判断性别

        {

            string sexnum = number.Substring(number.Length - 4, 3);

            int num = int.Parse(sexnum);

            if (num % 2 == 0)

                return "女";

            else

                return "男";

        }

        private  string Getarea(string iccardno)//查询地区

        {

            string strMessage = "";

            string strSQL = "select 全称  FROM [Check_CardID].[dbo].[地区代码表]where 身份证前6位 = '" + iccardno + "'";

            DataTable dt = Global.dbHelp.GetDataTablebySQL(strSQL, out strMessage);

            if (dt == null) //数据库访问出错

            {

                return strMessage;

            }

            if (dt.Rows.Count < 1) //返回的是空表,说明前六位有错误

            {

                strMessage = "没有该用户!";

                return strMessage;

            }

            //返回非空表,取第一行,实际上也只有一行

            string Area = dt.Rows[0].ItemArray[0].ToString();

            return Area;

        }

        private string Getbirthday(string brinumber)//获取生日

        {

            string brithday="";

            string year =brinumber.Substring(0, 4);

            string month= brinumber.Substring(4, 2);

            string day = brinumber.Substring(6, 2);

            brithday = year + "年—" + month + "月—" + day + "日";

            return brithday;

        }

相关文章

网友评论

    本文标题:C#:身份证检验码,性别以及地区生日

    本文链接:https://www.haomeiwen.com/subject/ocsrictx.html