如题....判断一个身份证号是否正确。...

解决方案 »

  1.   

    http://topic.csdn.net/t/20050509/18/3992946.html
      

  2.   

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.Data.OleDb;
    using System.Text.RegularExpressions;public class Check
    {
        protected string number;
        public SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnString"].ToString());    public string Number
        {
            get
            {
                return number;
            }
            set
            {
                number = value.Trim();
            }
        }  //属性    public Check(string numberValue)  //构造函数
        {
            Number = numberValue;
        }    public bool truefalsnumber(string stringValue)  //是否为全数字
        {
            string aa = @"^[0-9]+$";
            if (!Regex.Match(stringValue, aa).Success) return false;
            else return true;
        }
    }public class sfz : Check  //身份证类
    {
        public sfz(string numberValue):base (numberValue)
        {
        }    public string sfzyear()//返回身份证的年月日信息  
        {
            string aa, bb, cc;        if (Number .Length ==15 && truefalsnumber(Number.Substring(0,Number.Length - 1)))
            {
                aa = Number.Substring(6, 2);
                bb = Number.Substring(8, 2);
                cc = Number.Substring(10, 2);            if (int.Parse(bb) < 12 && int.Parse(cc) < 31)
                    return "19" + aa + "年" + bb + "月" + cc + "日";
                else
                    return "年月日信息有错误!";
            }
            else if (Number .Length == 18 && truefalsnumber(Number.Substring(0,Number.Length - 1)))
            {
                aa = Number.Substring(6, 4);
                bb = Number.Substring(10, 2);
                cc = Number.Substring(12, 2);
                if (int.Parse(bb) < 12 && int.Parse(cc) < 31)
                    return aa + "年" + bb + "月" + cc + "日";
                else
                    return "年月日信息有错误!";
            }
            else return "";
        }    public string sfzsex()  //返回身份证的性别
        {
            int str;
            if (Number.Length == 15 && truefalsnumber(Number.Substring(0, Number.Length - 1)))
            {
                str = int.Parse(Number.Substring(14, 1));            if ((str % 2) == 0) return "男";
                else return "女";
            }        if (Number.Length == 18 && truefalsnumber(Number.Substring(0,Number.Length - 1)))
            {
                str = int.Parse(Number.Substring(17, 1));            if ((str % 2) == 0) return "男";
                else return "女";
            }
            return "";
        }    public string sfzaddress() //返回身份证的地区
        {
            string str;
            int aa;
            if (truefalsnumber(Number.Substring(0, Number.Length - 1)))
            {            if (Number.Length == 18 || Number.Length == 15)
                {
                    str = Number.Substring(0, 6);
                    aa = int.Parse(str);
                    SqlCommand CMD = new SqlCommand("Select DQ From sfz Where BM = @aa", conn);
                    SqlParameter myParm = CMD.Parameters.Add("aa", SqlDbType.Int);
                    myParm.Value = aa;
                    conn.Open();
                    SqlDataReader myReader = CMD.ExecuteReader();
                    myReader.Read();
                    if (myReader.HasRows)
                        return myReader.GetString(0);
                    else
                        return "";
                }
                else return ""; 
            }
            else return "";
        }
    }public class sjh : Check  //手机类
    {    public sjh(string numberValue)
            : base(numberValue)
        {
        }    private string sjquare1()
        {
            string aa = Number.Substring(0, 7);
            SqlCommand CMD = new SqlCommand("Select * From mod Where right(start,1) <= @a1 And " +
                      "right([end],1) >= @a1 And left(start,6) = @a2 And left([end],6) = @a2 And grade = 1", conn);        SqlParameter myParm1 = CMD.Parameters.Add("a1", SqlDbType.Char);
            myParm1.Value = aa.Substring(6, 1);
            SqlParameter myParm2 = CMD.Parameters.Add("a2", SqlDbType.Char);
            myParm2.Value = aa.Substring(0, 6);
            conn.Open();        SqlDataReader myReader = CMD.ExecuteReader();
            myReader.Read();
            if (myReader.HasRows)
                return myReader.GetString(2) + "  " + myReader.GetString(3) + "   " + myReader.GetString(4);
            else
                conn.Close();
                return "";
        }    private string sjquare2()
        {
            string aa = Number.Substring(0, 7);
            SqlCommand CMD = new SqlCommand("Select * From mod Where right(start,2) <= @a1 And " +
                      "right([end],2) >= @a1 And left(start,5) = @a2 And left([end],5) = @a2 And grade = 1", conn);        SqlParameter myParm1 = CMD.Parameters.Add("a1", SqlDbType.Char);
            myParm1.Value = aa.Substring(5, 2);
            SqlParameter myParm2 = CMD.Parameters.Add("a2", SqlDbType.Char);
            myParm2.Value = aa.Substring(0, 5);
            conn.Open();        SqlDataReader myReader = CMD.ExecuteReader();
            myReader.Read();
            if (myReader.HasRows)
                return myReader.GetString(2) + "  " + myReader.GetString(3) + "   " + myReader.GetString(4);
            else
                conn.Close();
                return "";
        }    private string sjquare3()
        {
            string aa = Number.Substring(0, 7);
            SqlCommand CMD = new SqlCommand("Select * From mod Where right(start,3) <= @a1 And " +
                      "right([end],3) >= @a1 And left(start,4) = @a2 And left([end],4) = @a2 And grade = 1", conn);        SqlParameter myParm1 = CMD.Parameters.Add("a1", SqlDbType.Char);
            myParm1.Value = aa.Substring(4, 3);
            SqlParameter myParm2 = CMD.Parameters.Add("a2", SqlDbType.Char);
            myParm2.Value = aa.Substring(0, 4);
            conn.Open();        SqlDataReader myReader = CMD.ExecuteReader();
            myReader.Read();
            if (myReader.HasRows)
                return myReader.GetString(2) + "  " + myReader.GetString(3) + "   " + myReader.GetString(4);
            else
                conn.Close();
                return "";
        }    private string sjquare4()
        {
            string aa = Number.Substring(0, 7);
            SqlCommand CMD = new SqlCommand("Select * From mod Where start <= @a1 And " +
                      "[end] >= @a1 And grade = 1", conn);        SqlParameter myParm1 = CMD.Parameters.Add("a1", SqlDbType.Char);
            myParm1.Value = aa;
            conn.Open();        SqlDataReader myReader = CMD.ExecuteReader();
            myReader.Read();
            if (myReader.HasRows)
                return myReader.GetString(2) + "  " + myReader.GetString(3) + "   " + myReader.GetString(4);
            else
                conn.Close();
                return "";
        }    public string sjhaddress()  //返回手机号地区
        {
            if (Number.Length == 11 && truefalsnumber(Number.Substring(0, Number.Length)))
            {
                string s = sjquare1();
                if (s.Trim() != "") return s;            s = sjquare2();
                if (s.Trim() != "") return s;            s = sjquare3();
                if (s.Trim() != "") return s;            s = sjquare4();
                if (s.Trim() != "") return s;            return "";
            }
            else
            {
                return "";
            }
        }
    }public class Ip : Check   //IP类
    {
        public Ip(string numberVale)
            : base(numberVale)
        {
        }    public string ipaddress() //根据IP返回物理地址
        {
            string fip = "";
            string[] split = Number.Split(new Char[] { '.' });
            foreach (string s in split)
            {
                fip += s;
            }
            return fip;
        }
    }