《编程教育》-项目七 公民身份证号码生成与查询2_第1页
《编程教育》-项目七 公民身份证号码生成与查询2_第2页
《编程教育》-项目七 公民身份证号码生成与查询2_第3页
《编程教育》-项目七 公民身份证号码生成与查询2_第4页
《编程教育》-项目七 公民身份证号码生成与查询2_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

公开课教案教师班级科目C#程序设计开课时间地点机房课题名称项目七:公民身份证号码生成与查询课时数6背景分析本课程是为软件技术专业的学生开设的一门很重要的程序设计类课程。本次项目学习了部分新控件的属性和事件,尤其是组合框的DisplayMember和ValueMember两个属性的运用。进一步学习了随机数,巩固了如何向List中添加不重复的数字。另外,自定义方法的编写,进一步训练了程序设计的逻辑思维。本项目涉及知识点比较多,学习者应该仔细体会运用。学生已经具备一定的应用软件能力。根据课程教学目标和学生的专业特点,教学中应当注重培养学生的操作能力、思维能力和学习能力。本课采用以项目教学为主,边讲边做,让学生在做的过程中学会探索、学会合作。学习目标设定1.控件属性与事件、随机数类、控件数据绑定以及读文件等。培养学生积极思考、敢于尝试,让学生体验学习的乐趣,激发学生对本课程的学习兴趣。学习任务描述学习任务围绕学生成绩统计的综合运用而展开,根据教师设计的项目,并将其分解为任务完成。通过任务的设定,在对比中,引导学生自主学习、合作学习、竞争学习。教学情境创设本节课通过对一个贴近学生生活的项目学习,引导学生做中学习、合作学习。围绕课堂总目标,让学生在不断的成功体验中进行快乐学习。教学资源准备时间资源:课前资料收集、课堂教学、课后资料整理、完成作业信息资源:教案、教学素材人员资源:1位专业教师,1位专业指导教师,学生小组设备资源:2.2GHz或速度更快的CPU、1GB或更大容量的RAM、1280x1024显示器、7200RPM或更高转速的硬盘;操作系统:WindowsXP、Vista或2000以上;开发软件:VisualStudio2005/2008中文版(含MSDN);教学过程实施内容方法【导入】目前国内不少邮箱、网盘等申请时要求填写身份证号码,而用户又不想公开自己的真实信息,从而需要一个相对“真实”的身份证号码。【新课】项目七:公民身份证号码生成与查询【项目描述】制作如图所示的身份证号码生成与查询系统,本项目主要有三个任务:1.制作项目界面(包括数据绑定)2.身份证号码生成(随机数,控件延伸:生成的号码编序号)3.身份证号码验证与解读【项目分析】身份证号码生成与查询系统包含身份证号码生成和身份证号码查询两大功能。中国公民的身份证号码的编制是有规则的,在生成和查询身份证号码时,我们必须要要遵守这个规则。制作身份证号码生成与查询系统的主要步骤如下:1.制作项目界面2.身份证号码生成3.身份证号码验证与解读任务二生成身份证号码【任务实施】2.随机生成500个所属行政区域的身份证号。(1)生成身份证号的最后一位校验码是本次任务的一个难点,下面介绍下校验码的生成步骤:校验码是通过一系列数学计算得出来的,具体校验的计算方式如下:①对前17位数字本体码加权求和

公式为:S=Sum(Ai*Wi),i=0,...,16

其中Ai表示第i位置上的身份证号码数字值,Wi表示第i位置上的加权因子,其各位对应的值依次为:7910584216379105842通俗解释:身份证第一位数字X7+第二位X9+第三位X10+第四位X5+第五位X5+第六位X8+第七位X4+第八位X1+第九位X6+第十位X3+十一位X7+十二位X9+十三位X10+十四位X5+十五位X8+十六位X4+十七位X2;计算出总和(用S)表示。②以11对计算结果取模Y=mod(S,11)通俗解释:用S除以11,看最后的余数。如果除尽,为0;余数为1,则计为1;最大余数为10;全部数字为0-10共11个数字。(用Y表示)。③根据模的值得到对应的校验码

对应关系为:

Y值:

012345678910

校验码:10X98765432

通俗解释:余数为0,则校验码为1;依次类推:余数为1,则校验码对应0;以下:2--X;3--9;4--8;5--7;6--6;7--5;8--4;9-3;10-2。如果校验码不符合这个规则,则肯定是假号码。(2)身份证的随机生成的另个难点是随机数的选择,其中要考虑性别问题。任务三身份证号码验证与解读【任务描述】给出一个身份证号码能给验证该号码是否合法,如果合法解读出其详细信息,如果不合法给出错误信息。【任务实施】1.验证行政区域的合法性,代码如下://验证行政区域的合法性privateboolisDiscValid(strings){booliFlag=false;foreach(clsAdministrativeDivisionsCodecadcincityCode){if(cadc.AdCode==s){stringst=s.Substring(0,2);foreach(clsAdministrativeDivisionsCodecapcinprovinceCode){if(capc.AdCode.Substring(0,2)==st){lbCardInfo.Items.Add("省或直辖市名称:"+capc.AdName);break;}}foreach(clsAdministrativeDivisionsCodecaacincityCode){if(caac.AdCode==s.Substring(0,4)+"00"){lbCardInfo.Items.Add("市名称:"+caac.AdName.TrimStart());break;}}lbCardInfo.Items.Add("地区名称:"+cadc.AdName.TrimStart());iFlag=true;break;}}returniFlag;}2.验证出生日期的合法性,代码如下://验证出生日期的合法性privateboolisBirthValid(strings){stringsYear=s.Substring(0,4);stringsMonth=s.Substring(4,2);stringsDay=s.Substring(6,2);DateTimedt;if(DateTime.TryParse(string.Format("{0}-{1}-{2}",sYear,sMonth,sDay),outdt)){if(dt>DateTime.Now)returnfalse;elsereturntrue;}elsereturnfalse;}3.验证性别的合法性,代码如下://验证性别的合法性privateboolisSexValid(strings){returns=="000"?false:true;}4.验证校验码的合法性,代码如下://验证校验码的合法性privateboolisParityValid(strings18){int[]Weight=newint[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};stringParity="10X98765432";strings17=s18.Substring(0,17);ints=0;for(inti=0;i<s17.Length;i++){s+=Int32.Parse(s17[i].ToString())*Weight[i];}returnParity[s%11].ToString()==s18.Substring(17,1)?true:false;}5.编写验证按钮btnVerification控件的事件,代码如下:privatevoidbtnVerification_Click(objectsender,EventArgse){Regexreg=newRegex(@"^\d{17}(\d|X)");stringsTemp=tbVerification.Text;lbCardInfo.Items.Clear();if(sTemp==string.Empty){MessageBox.Show("没有输入任何身份证号码","请注意",MessageBoxButtons.OK,MessageBoxIcon.Warning);return;}if(sTemp.Length!=18){MessageBox.Show("输入身份证号码的长度应为位","请注意",MessageBoxButtons.OK,MessageBoxIcon.Warning);return;}if(reg.Matches(sTemp).Count==0){MessageBox.Show("输入身份证号码的格式有误","请注意",MessageBoxButtons.OK,MessageBoxIcon.Warning);return;}if(!isDiscValid(sTemp.Substring(0,6))){MessageBox.Show("输入的身份证号码行政区划代码无效","请注意",MessageBoxButtons.OK,MessageBoxIcon.Warning);return;}if(!isBirthValid(sTemp.Substring(6,8))){MessageBox.Show("输入的身份证号码出生日期无效","请注意",MessageBoxButtons.OK,MessageBoxIcon.Warning);return;}elselbCardInfo.Items.Add(string.Format("出生日期:{0}年{1}月{2}日",sTemp.Substring(6,4),sTemp.Substring(10,2),sTemp.Substring(12,2)));if(!isSexValid(sTemp.Substring(14,3))){MessageBox.Show("输入的身份证号码性别顺序码无效","请注意",MessageBoxButtons.OK,MessageBoxIcon.Warning);return;}else{lbCardInfo.Items.Add("性别:"+((Convert.ToInt32(sTemp.Substring(14,3))%2==0)?"女":"男"));}if(!isParityValid(sTemp)){MessageBox.Show("输入的身份证号码验证码无效","请

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论