这里用到了很多其他的知识!难度可能比较大,不过我也硬着头皮啃了一口下来,弄懂了一部分吧!
感觉最主要的部分还是字符串的处理,接下来的就是文件的装载与读取
另外还有一个身份证各个地区的文件,点击这里,全部复制下来再领存为idinfo.txt文件吧。再把这个文件直接复制到解决防方案资源管理器里面
图片如下:
第一个页面是:index.aspx 控件如下图:
代码如下:
第一个页面的代码页:index.aspx.cs 代码如下:
第二个页面是:idinfo.aspx 是没有添加任何控件的,代码如下:
第二个页面的代码页:idinfo.aspx.cs 代码如下:
protected void Page_Load(object sender, EventArgs e)
{
string id = Request.QueryString["id"];
//首先获取第一个页面上的id
string idinfo = Server.MapPath("idinfo.txt");
//通过Server对象下的mapPath方法获取指定文件的路径。Server对象是用户访问服务器上的资源的
//通过Server对象下的mapPath方法获取指定文件的路径。Server对象是用户访问服务器上的资源的
string[] info = null;
//定义一个空的数组用来装东西
//定义一个空的数组用来装东西
using (FileStream fs = File.OpenRead(idinfo))
//读取刚才那个路径的文件!这里要注意的是上面必须有using System.IO;来导入类才能使用这个功能
{
byte[] b = new byte[fs.Length];
//新建一个位的数组,其中新建的长度是idinfo.txt文件的长度
fs.Read(b,0,b.Length);
//其实就是把这个按位的长度全部装进内存了,这个的大概用法就是
//第一个参数是用b来装,从0开始装,装到b的最大长度
string sidinfo = Encoding.Default.GetString(b);
//注意!使用Encoding需要导入包:using System.Text;
//这个的作用就是将装进内存的b的所有字符组合成字符串!!
info = sidinfo.Split(new char[] { '\r','\n'});
//这个就强大了,是将上一行,所有组合而成的字符串按照回车换行来进行分割
//split就是用来分割的,按照char里面定义的 '\r','\n' 来进行分割
}
if (info!=null&&info.Length>0)
//这里是检测info里面有没数据,如果没有就直接放弃,如果有,就进行下一步操作
{
string id6 = id.Substring(0,6);
//获取身份证的前6位号码,这6位号码就是确定到底是哪个地区的身份证
//读取刚才那个路径的文件!这里要注意的是上面必须有using System.IO;来导入类才能使用这个功能
{
byte[] b = new byte[fs.Length];
//新建一个位的数组,其中新建的长度是idinfo.txt文件的长度
fs.Read(b,0,b.Length);
//其实就是把这个按位的长度全部装进内存了,这个的大概用法就是
//第一个参数是用b来装,从0开始装,装到b的最大长度
string sidinfo = Encoding.Default.GetString(b);
//注意!使用Encoding需要导入包:using System.Text;
//这个的作用就是将装进内存的b的所有字符组合成字符串!!
info = sidinfo.Split(new char[] { '\r','\n'});
//这个就强大了,是将上一行,所有组合而成的字符串按照回车换行来进行分割
//split就是用来分割的,按照char里面定义的 '\r','\n' 来进行分割
}
if (info!=null&&info.Length>0)
//这里是检测info里面有没数据,如果没有就直接放弃,如果有,就进行下一步操作
{
string id6 = id.Substring(0,6);
//获取身份证的前6位号码,这6位号码就是确定到底是哪个地区的身份证
string areainfo = info.Where(W => W.IndexOf(id6) > -1).First();
//这个符号=> 是Lambda 表达式,就是一个匿名函数
//上面这个语句的主要作用就是寻找符合id6这个变量的字符串,只要前面符合了,就整个字符串都返回
string area = areainfo.Split(',')[1];
//这个就是把刚才搜索到符合条件的身份证数字跟地区的字符串分割开来,并且只取逗号后面的文字部分字符串,注意[1]
string birthdayinfo = id.Substring(6,8);
//从id这个字符串的第6位开始,取8位数出来!这8位就是代表了出生年月日了
//从id这个字符串的第6位开始,取8位数出来!这8位就是代表了出生年月日了
string sexinfo = id.Substring(16, 1);
//从id这个字符串的第16位置开始,取1位出来,这一位就代表了性别
string sex = "男";
//这里直接默认设置为男性,等下再增加判断条件来切换这个结果
string birthday = birthdayinfo.Substring(0, 4) + "年" + birthdayinfo.Substring(4, 2) + "月" + birthdayinfo.Substring(6, 2) + "日";
//这里就把出生年月日都弄出来了!
if (int.Parse(sexinfo) % 2 == 0)
{
sex = "女";
}
string idinfostr = "<div>你输入的身份证号为:" + id + "该身份证对应的人员信息如下:<div>";
idinfostr += "性别"+sex+"<br>";
idinfostr += "所属地区" + area + "<br>";
idinfostr += "出生年月日" + birthday + "<br>";
//上面这几行就是把所有信息连接在一起,变成一个字符串
//从id这个字符串的第16位置开始,取1位出来,这一位就代表了性别
string sex = "男";
//这里直接默认设置为男性,等下再增加判断条件来切换这个结果
string birthday = birthdayinfo.Substring(0, 4) + "年" + birthdayinfo.Substring(4, 2) + "月" + birthdayinfo.Substring(6, 2) + "日";
//这里就把出生年月日都弄出来了!
if (int.Parse(sexinfo) % 2 == 0)
{
sex = "女";
}
string idinfostr = "<div>你输入的身份证号为:" + id + "该身份证对应的人员信息如下:<div>";
idinfostr += "性别"+sex+"<br>";
idinfostr += "所属地区" + area + "<br>";
idinfostr += "出生年月日" + birthday + "<br>";
//上面这几行就是把所有信息连接在一起,变成一个字符串
this.idInfo.InnerHtml = idinfostr;
//这里的idInfo跟aspx页面下的div是有关联的,div的id名称就是idInfo
//然后innerHtml的作用就是获取跟设置的作用,这里的等于号,就是设置了,具体就是设置DIV框里的内容来输出!
}
}