c程序设计(第2版) 教学课件 作者 赵震奇 教案 项目七 公民身份证号码生成与查询2.doc

(6页)

'c程序设计(第2版) 教学课件 作者 赵震奇 教案 项目七 公民身份证号码生成与查询2.doc'

《c程序设计(第2版) 教学课件 作者 赵震奇 教案 项目七 公民身份证号码生成与查询2.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《c程序设计(第2版) 教学课件 作者 赵震奇 教案 项目七 公民身份证号码生成与查询2.doc》文档请在天天文库搜索。

1、公开课教案教 师班级科 目C#程序设计开课时间地 点机房课题名称项目七:公民身份证号码生成与查询课时数6背景分析本课程是为软件技术专业的学生开设的一门很重要的程序设计类课程。本次项目学习了部分新控件的属性和事件,尤其是组合框的DisplayMember和ValueMember两个属性的运用。进一步学习了随机数,巩固了如何向List中添加不重复的数字。另外,自定义方法的编写,进一步训练了程序设计的逻辑思维。本项目涉及知识点比较多,学习者应该仔细体会运用。学生已经具备一定的应用软件能力。根据课程教学目标和学生的专业特点,教学中应当注重培养学生的操作能力、思维能力和学习能力。本课采用以项目教学为主,边讲边做,让学生在做的过程中学会探索、学会合作。学习目标设 定1. 控件属性与事件、随机数类、控件数据绑定以及读文件等。2. 培养学生积极思考、敢于尝试,让学生体验学习的乐趣,激发学生对本课程的学习。

2、兴趣。学习任务描 述学习任务围绕学生成绩统计的综合运用而展开,根据教师设计的项目,并将其分解为任务完成。通过任务的设定,在对比中,引导学生自主学习、合作学习、竞争学习。教学情境创 设本节课通过对一个贴近学生生活的项目学习,引导学生做中学习、合作学习。围绕课堂总目标,让学生在不断的成功体验中进行快乐学习。教学资源准 备时间资源:课前资料收集、课堂教学、课后资料整理、完成作业信息资源:教案、教学素材人员资源:1位专业教师,1位专业指导教师,学生小组设备资源:2.2 GHz 或速度更快的 CPU、1GB或更大容量的 RAM、1280x1024 显示器、7200 RPM 或更高转速的硬盘;操作系统:Windows 7或以上;开发软件:Visual Studio 2012 中文版(含MSDN);教 学 过 程 实 施内 容方法【导入】目前国内不少邮箱、网盘等申请时要求填写身份证号码,而用户又不想公开。

3、自己的真实信息,从而需要一个相对“真实”的身份证号码。【新课】项目七:公民身份证号码生成与查询【项目描述】制作如图所示的身份证号码生成与查询系统,本项目主要有三个任务: 1.制作项目界面 (包括数据绑定)2.身份证号码生成 (随机数,控件 延伸:生成的号码编序号)3.身份证号码验证与解读 【项目分析】身份证号码生成与查询系统包含身份证号码生成和身份证号码查询两大功能。中国公民的身份证号码的编制是有规则的,在生成和查询身份证号码时,我们必须要要遵守这个规则。制作身份证号码生成与查询系统的主要步骤如下:1.制作项目界面2.身份证号码生成3.身份证号码验证与解读任务二 生成身份证号码【任务实施】2. 随机生成500个所属行政区域的身份证号。(1)生成身份证号的最后一位校验码是本次任务的一个难点,下面介绍下校验码的生成步骤:校验码是通过一系列数学计算得出来的,具体校验的计算方式如下:①对前17位数。

4、字本体码加权求和   公式为:S = Sum(Ai * Wi), i = 0, ... , 16   其中Ai表示第i位置上的身份证号码数字值,Wi表示第i位置上的加权因子,其各位对应的值依次为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2通俗解释:身份证第一位数字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值:  0 1 2 3 4 5 6 7 8 9。

5、 10   校验码: 1 0 X 9 8 7 6 5 4 3 2     通俗解释:余数为0,则校验码为1;依次类推:余数为1,则校验码对应0;以下:2--X;3--9;4--8;5--7;6--6;7--5;8--4;9-3;10-2。如果校验码不符合这个规则,则肯定是假号码。(2)身份证的随机生成的另个难点是随机数的选择,其中要考虑性别问题。任务三 身份证号码验证与解读【任务描述】给出一个身份证号码能给验证该号码是否合法,如果合法解读出其详细信息,如果不合法给出错误信息。【任务实施】1.验证行政区域的合法性,代码如下: //验证行政区域的合法性 private bool isDiscValid(string s) { bool iFlag = false; foreach (clsAdministrativeDivisionsCode cadc in cityCode) { if (c。

6、adc.AdCode == s) { string st = s.Substring(0, 2); foreach (clsAdministrativeDivisionsCode capc in provinceCode) { if (capc.AdCode.Substring(0, 2) == st) { lbCardInfo.Items.Add("省或直辖市名称:" + capc.AdName); break; } } foreach (clsAdministrativeDivisionsCode caac in cityCode) { if (caac.AdCode == s.Substring(0, 4) + "00") { lbCardInfo.Items.Add("市名称:" + caac.AdName.TrimStart()); break; } } lbCardInfo.I。

7、tems.Add("地区名称:" + cadc.AdName.TrimStart()); iFlag = true; break; } } return iFlag; }2.验证出生日期的合法性,代码如下: //验证出生日期的合法性 private bool isBirthValid(string s) { string sYear = s.Substring(0, 4); string sMonth = s.Substring(4, 2); string sDay = s.Substring(6, 2); DateTime dt; if (DateTime.TryParse(string.Format("{0}-{1}-{2}", sYear, sMonth, sDay), out dt)) { if (dt > DateTime.Now) return false; else r。

8、eturn true; } else return false; }3.验证性别的合法性,代码如下: //验证性别的合法性 private bool isSexValid(string s) { return s == "000" ? false : true; }4.验证校验码的合法性,代码如下: //验证校验码的合法性 private bool isParityValid(string s18) { int[] Weight = new int[] { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; string Parity = "10X98765432"; string s17 = s18.Substring(0, 17); int s = 0; for (int i = 0; i < s17.Length; i+。

9、+) { s += Int32.Parse(s17[i].ToString()) * Weight[i]; } return Parity[s % 11].ToString() == s18.Substring(17, 1) ? true : false; }5.编写验证按钮btnVerification控件的事件,代码如下: private void btnVerification_Click(object sender, EventArgs e) { Regex reg = new Regex(@"^\d{17}(\d|X)"); string sTemp = tbVerification.Text; lbCardInfo.Items.Clear(); if (sTemp == string.Empty) { MessageBox.Show("没有输入任何身份证号码", "请注意", 。

10、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("输入的身份证号码行政区划代码无效", "请注意", M。

11、essageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (!isBirthValid(sTemp.Substring(6, 8))) { MessageBox.Show("输入的身份证号码出生日期无效", "请注意", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else lbCardInfo.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("输入的身份证号码。

12、性别顺序码无效", "请注意", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else { lbCardInfo.Items.Add("性别:" + ((Convert.ToInt32(sTemp.Substring(14, 3)) % 2 == 0) ? "女" : "男")); } if (!isParityValid(sTemp)) { MessageBox.Show("输入的身份证号码验证码无效", "请注意", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } lbCardInfo.Items.Insert(0, "身份证号:" + sTemp); lbCardInfo.Items.Insert(0, "验证解读信息:"); lbCardInfo.。

13、Items.Add("完成验证!"); gbCardInfo.Visible = true; }【项目小结】 本次项目学习了部分新控件的属性和事件,尤其是组合框的DisplayMember和ValueMember两个属性的运用。进一步学习了随机数,巩固了如何向List中添加不重复的数字。另外,自定义方法的编写,进一步训练了程序设计的逻辑思维。本项目涉及知识点比较多,学习者应该仔细体会运用。【思考与练习】1. 制作程序“手机号所在地查询”。创设情境、激发学习兴趣营造良好的学习氛围明确任务,通过系列实验逐步呈现知识学生自主学习师生互动学习环节包括“实验与思考”、“观察与思考”、“交流与分享”巡回指导师生互动学习环节包括“实验与思考”、“观察与思考”、“交流与分享”教师及时引导与评价学习环节分为“合作与探索”、“交流与分享”、“实践与体验”教师巡回指导教师及时评价与引导学习环节分为“合作与探索”、“成功的体验”、“思考与提高”教师巡回指导学习环节分为“合作与探索”、“成功的体验”学生评价、教师评价。

关 键 词:
教案 项目 公民 身份证号码 作者 教学 生成 查询 程序设计
 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:c程序设计(第2版) 教学课件 作者 赵震奇 教案 项目七 公民身份证号码生成与查询2.doc
链接地址: https://www.wenku365.com/s-59387007.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给天天文库发消息,QQ:1290478887 - 联系我们

本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。本站是网络服务平台方,若您的权利被侵害,侵权客服QQ:1290478887 欢迎举报。

1290478887@qq.com 2017-2027 https://www.wenku365.com 网站版权所有

粤ICP备19057495号 

收起
展开