当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]完成了方法的编写,就可以开始实现各个按钮的事件了,即当用户激发某些事情时,系统将产生相应的回应,比如,在用户输入时,通过文本框的TextChanged事件来完成显示用户已经输入字符数的提示。先在设计器中选中txtID文本输入框控件,然后在属性中单击事件按钮 ,然后找到TextChanged事件,双击添加事件,其代码如下所示

完成了方法的编写,就可以开始实现各个按钮的事件了,即当用户激发某些事情时,系统将产生相应的回应,比如,在用户输入时,通过文本框的TextChanged事件来完成显示用户已经输入字符数的提示。先在设计器中选中txtID文本输入框控件,然后在属性中单击事件按钮 ,然后找到TextChanged事件,双击添加事件,其代码如下所示。

private void txtID_TextChanged(object sender, EventArgs e)

//这个事件会在txtID文本输入框的内容被改变时执行,目的是为了显示当前已经

//输入的字符个数

{

lblInfo.Text = "You Have been Input " + txtID.Text.Length + " Strings";

if (txtID.Text.Length > 18)

{

lblInfo.Text = "To much Numbers!!";

}

}

然后是Clean按钮的单击事件,当单击这个按钮后,需要清空txtID输入框中的内容以供用户输入,另外,还需要清空的是用户对性别选择的两个单选按钮,它的代码如下所示。

private void btnClean_Click(object sender, EventArgs e)

//这是“Clean”按钮的单击事件,当这个按钮被单击操作时,便会执行这些个操

//作,包括:将txtID文本输入框内容清空,并消息提示框的文本内容改为“Clea red”,

//并将性别选择框中的选择取消

{

txtID.Text = "";

lblInfo.Text = "Cleared.";

rbMan.Checked = false;

rbWoman.Checked = false;

}

最后就是控制整个系统流程的Check按钮了,当用户单击这个按钮后,系统就需要使用它的流程来进行身份证号码的合法性判断,它会调用各个已经写好的方法,相对来讲,它的判断结构更加复杂,下面是它的实现代码。

private void btnCheck_Click(object sender, EventArgs e)

//这是“Check”按钮的单击事件,当这个按钮被单击操作时,便会执行这些个操

//作,它的主要作用是进行整个验证

{

string strID = txtID.Text;

//用来存储用户输入的需要验证的身份证号

byte byteIsNumorX = 0;

//一个标志,用于记录用户输入的字符串是否含有非法字符,如果含有则置为0,

//否则置为1

byte byteInputSex = 0;

//对用户所进行的性别选择进行记载,当用户没有选择性别时,将其置为0,如果

//选择为男性,则置为1,如果选择为女性,则置为2

if (txtID.Text.Length >= 1)

{

if (rbMan.Checked)

//如果用户选择了身份证编码的对象为男性,则置intInputSex为1

{

byteInputSex = 1;

}

if (rbWoman.Checked)

//如果用户选择了身份证编码的对象为女性,则置intInputSex为0

{

byteInputSex = 2;

}

for (int i = 0; i <= txtID.Text.Length - 1; i++)

//该循环的主要目的是为了验证用户输入的需要验证的字符身份证号码中

//是否包含了非法字符

{

string strIDEachBit = txtID.Text.Substring(i,1);

//每次从用户输入的身份证号码中取出一个字符进行合法性验证

if ((IdChk.ischarlegal(strIDEachBit) == 1) || (i == 17 && IdChk. ischarlegal(strIDEachBit) == 2))

//进行字符合法性判断,除了第18位上的字符,其他字符都不能为非数字

{

byteIsNumorX = 1;

//字符合法,由标志位置1

}

else

//输入的需要验证的身份证号码中含有非法字符或者X出现在了不对

//的位置,提示错误,并告诉用户错误的原因

{

lblInfo.Text = "The X isnot in the Right Place,or other letters in the ID";

IdChk.Msg("The ID is illegal!", 1);

goto end;

}

}

if (byteIsNumorX == 1)

//如果输入的身份证号码从字符上讲上合法的,则进行下一步的验证

{

switch (txtID.Text.Length)

//判断输入的身份证号码的长度,并做不同的处理

{

case 15:

//如果输入的身份证是15位号,则将其扩充为17位码

strID = strID.Substring(0, 6) + "19" + strID.Substring(6);

break;

case 18:

//如果输入的身份证号是18位号,则对它的校验位进行验证,如果验证

//通过,则亦将其处理为17位码

if (IdChk.is18ChkNumRight(ref strID) == 1)

//判断校验位是否正确,如果正确则将其处理为17位码,并进入下

//一步的判断

{

strID = strID.Substring(0,17);

//取18位身份证号码的前17位

}

else

//如果错误,则提示用户18位码的校验码错误

{

lblInfo.Text = "The Last Check Code is Wrong!";

IdChk.Msg("The ID is illegal!",1);

goto end;

}

break;

default:

//如果不是15或者18位码,则提示用户输入的身份证号码长度有误

lblInfo.Text = "The length of the ID is not 15 or 18";

IdChk.Msg("The length of the ID is illegal!",1);

goto end;

}

if (strID.Length == 17)

//首先验证一下,15位或者18位码是否已经被正确的处理为17位码,如果是,则

//进行下一步的验证,否则,提示程序在断送的过程中出现了异常,请重新输入

//并再一次验证

{

if (IdChk.is17DateRight(strID) == 1)

//判断日期是否合法,如果合法,则进入下一步的判断

{

if (byteInputSex == 0)

//先判断用户是否输入了性别信息,如果没有输入,则提示用户输入的身

//份证号码除了性别信息都是正确的,并提示用户选择性别再验证

{

lblInfo.Text="The ID is legal except the Sex, please select the Sex and Check again.";

IdChk.Msg("The ID is Legal except the Sex!",3);

goto end;

}

else

//如果用户选择了性别,则进行性别的验证

{

int intSexTemp = Convert.ToChar(strID.Substring(16,1));

//从用户输入的身份证号码中读取性别信息,即取17位码的最后一位

if (intSexTemp % 2 == byteInputSex % 2)

//如果二者同为奇数或者同为偶数,则提示用户输入的身份证号码是

//合法的,否则提示用户输入的身份证号码的性别信息有误

{

lblInfo.Text = "The ID is legal!";

IdChk.Msg("The ID is Legal!", 3);

goto end;

}

else

{

lblInfo.Text = "The Sex in the ID and Selected isnot matching!";

IdChk.Msg("The ID is illegal!", 1);

goto end;

}

}

}

else

{

lblInfo.Text = "The Date Information in the ID is illegal";

IdChk.Msg("The ID is illegal!",1);

goto end;

}



}

else

{

lblInfo.Text = "Process have some exceptional, please input the ID again!";

IdChk.Msg("Exceptional occurred!",1);

goto end;

}

}

}

else

{

lblInfo.Text = "Please Input the Numbers";

IdChk.Msg("Please Input the ID!",1);

}

end:

//“Check”按钮单击事件的末尾

;

}

当完成所有代码的编写后,便可以开始进行系统的调试了。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭