搜档网
当前位置:搜档网 › 身份证号码校验

身份证号码校验

身份证号码校验
身份证号码校验

Visual C++范例开发大全目录Mylaf 2012-10-23

第1篇VC++入门与基本文档视图

第1章Visual C++ 6.0 MFC程序设计快速入门 2

1.1 Visual C++ 6.0开发环境简介2

1.2 创建Visual C++ 6.0应用程序3

实例001 创建第一个MFC应用程序 3

实例002 创建第一个C++应用程序 4

第2章文档视图应用程序实例6

2.1 窗体操作6

实例003 实现启动时无子窗口的MDI程序 6

实例004 实现MDI应用程序启动时子窗口默认最大化7 实例005 MDI应用程序启动时主窗口默认最大化8

实例006 具有图片背景的MDI主窗口9

实例007 全屏显示的窗体12

实例008 创建带滚动条的窗体15

实例009 窗体拆分16

实例010 始终置顶的SDI程序17

实例011 不可移动的窗体18

实例012 创建不可改变大小的SDI窗口19

实例013 动态设置窗口位置和大小20

实例014 保存窗口状态21

实例015 双击主窗口弹出“打开”对话框23

2.2 标题栏25

实例016 获取标题栏高度25

实例017 获取标题栏上按钮的尺寸26

实例018 定制标题栏文字27

实例019 添加标题栏右键菜单项28

实例020 屏蔽标题栏右键系统菜单及隐藏按钮29

实例021 禁用标题栏上的最大化、最小化和关闭按钮30 实例022 显示和隐藏标题栏31

2.3 菜单32

实例023 获取菜单栏高度32

实例024 启用和禁用菜单33

实例025 动态添加菜单35

实例026 带单选标记的菜单36

实例027 复选标记的菜单38

实例028 带图标菜单的SDI程序39

实例029 带图标菜单的MDI 40

实例030 位图菜单41

实例031 创建客户区右键菜单43

实例032 隐藏和显示菜单栏44

实例033 为应用程序添加多语言支持45

2.4 工具栏48

实例034 工具栏按钮的添加、删除和分组48

实例035 不能停靠的工具栏48

实例036 下压式工具栏按钮49

实例037 给工具栏添加图像背景50

实例038 动态隐藏和显示工具栏51

2.5 状态栏52 实例039 显示和隐藏状态栏52

实例040 带进度条的状态栏53

实例041 在状态栏上加载图像54

实例042 滚动字幕的状态栏56

第3章对话框应用实例58

3.1 对话框界面58

实例043 设置对话框应用程序窗口启动位置58

实例044 半透明对话框59

实例045 创建不规则对话框应用程序60

实例046 拖动没有标题栏的对话框61

实例047 实现收缩对话框应用程序62

实例048 基于对话框的托盘程序64

实例049 为对话框应用程序添加菜单栏66

实例050 带有工具栏的对话框应用程序67

实例051 为对话框应用程序添加右键菜单68

实例052 模式对话框与非模式对话框69

实例053 属性页对话框71

实例054 向导式对话框72

实例055 为对话框应用程序添加启动界面73

实例056 为对话框应用程序添加百叶窗的启动界面76 3.2 通用对话框77

实例057 文件打开对话框78

实例058 在程序启动时弹出文件打开对话框79

实例059 在文件打开对话框中预览图片80

实例060 文件保存对话框81

实例061 选择文件夹对话框82

实例062 字体对话框84

实例063 颜色对话框86

实例064 查找与替换对话框87

第4章控件应用实例89

4.1 常见控件89

实例065 图文按钮89

实例066 具有随机图片背景的EditBox控件90

实例067 使用List Box显示系统逻辑磁盘驱动器列表92 实例068 利用列标题对列表视图进行数据排序93

实例069 使用Static Text控件显示当前系统时间95

实例070 使用Data Time Picker控件调整系统时间96

实例071 使用Combo Box控件控制字体大小97

实例072 使用Rich Edit控件显示文本文件98

实例073 使用Tree Control控件显示文件目录100

实例074 位图进度条102

实例075 使用Progress控件实现文字进度条103

实例076 使用Static Text控件显示当前时间104

实例077 使用Picture Box显示动态打开图像106

实例078 使用Group Box控件对控件分组107

实例079 使用Check Box实现多选109

实例080 使用Radio Button实现单选110

实例081 HorizontalScrollBar,VerticalScrollBar滚动条111

实例082 Slider控件的使用112

实例083 捕获键盘热键113

实例084 播放动画115

实例085 使用Data Time Picker实现日期的选择116

实例086 使用Month Calendar获取日期117

实例087 使用IP Address读取IP 118

实例088 使用Custom Control自定义控件119

实例089 Extended Combo Box控件120

实例090 使用Tab Control实现选项卡122

4.2 控件的扩展使用方法124

实例091 动态创建控件124

实例092 隐藏和显示控件125

实例093 启用和禁用控件126

实例094 向窗体中动态添加控件127

实例095 在控件上右击弹出菜单128

实例096 自定义控件字体颜色129

第2篇文件、系统、输入输出和音频视频

第5章文件系统应用实例134

5.1 文件操作134

实例097 读写文件134

实例098 读写INI文件136

实例099 对话框支持文件拖放138

实例100 复制、移动和删除文件139

实例101 显示复制过程对话框141

实例102 获取与修改文件属性143

实例103 获取与修改文件创建、修改和访问时间146 实例104 获得文件大小148

实例105 获取文件类型149

实例106 检索文件150

实例107 重命名文件151

5.2 文件夹操作152

实例108 获取与修改文件夹创建、修改及访问时间153 实例109 创建和删除文件夹155

实例110 复制和移动文件夹156

实例111 判断目标是否是文件夹157

实例112 检索文件夹159

实例113 重命名文件夹160

第6章图形图像程序应用实例163

6.1 图形应用实例163

实例114 简单直线的绘制163

实例115 绘制正弦曲线166

实例116 绘制图形169

实例117 绘制渐变图形171

实例118 绘制渐变文字172

6.2 图像应用实例174

实例119 显示资源中的位图174

实例120 图像目录自动浏览程序176

实例121 浏览大幅图像178

实例122 获得图像大小179

实例123 放大和缩小图像181 实例124 实现鼠标拖动图像183

实例125 图像马赛克效果185

实例126 图像百叶窗效果187

实例127 图像扫描效果189

实例128 图像栅条效果190

实例129 图像渐显效果191

实例130 图像翻转效果193

实例131 图像锐化处理195

实例132 图像反色处理198

实例133 图像的灰度化199

实例134 图像的裁剪202

实例135 图像的合成203

实例136 获取图像中鼠标的坐标值205

实例137 提取图片中的对象206

实例138 提取应用程序图标207

实例139 截取当前屏幕图像209

实例140 颜色提取器210

实例141 图像分割211

6.3 使用GDI+绘图213

实例142 显示JPEG与GIF图片213

实例143 实现位图文件转化为JPEG文件215

实例144 实现JPEG图像旋转180°并保存217

实例145 实现渐变画刷219

实例146 实现半透明图片重迭221

实例147 在平行四边形中显示JPEG图像222

实例148 实现旋转显示图像224

实例149 绘制曲线225

实例150 绘制平滑直线与曲线227

实例151 绘制颜色渐变文字228

实例152 绘制竖立文字230

第7章音频和视频应用实例232

7.1 音频和视频播放基础232

实例153 使用PlaySound()播放W A V文件232

实例154 一个简单的MP3音频播放器234

实例155 Flash播放器237

实例156 一个可以控制进度的Flash播放器239

实例157 获取A VI文件的格式信息243

实例158 基于MCI的A VI播放器246

实例159 USB摄像头程序248

实例160 录制USB摄像头到A VI文件250

7.2 音频和视频案例252

实例161 一个录音程序252

实例162 视频音频播放器254

实例163 显示进度的MP3播放器258

实例164 关闭和打开光驱门262

实例165 Flash播放窗口右键屏蔽以及键盘响应262 第8章操作系统应用实例265

8.1 注册表相关265

实例166 注册表的备份265

实例167 注册表的恢复266

实例168 设置注册表键值268

实例169 列举子键270

实例170 禁用注册表271

实例171 启用注册表272

8.2 显示相关273

实例172 获取和更改屏幕分辨率273

实例173 获取和设置屏幕刷新频率274

实例174 获取和设置屏幕颜色质量275

实例175 获取和设置系统标题栏文字颜色276

8.3 磁盘驱动器相关278

实例176 枚举系统磁盘驱动器278

实例177 获取和设置磁盘驱动器卷标名称279

实例178 获取磁盘驱动器文件系统名称281

实例179 判断磁盘驱动器类型282

实例180 获取磁盘驱动器空间信息284

实例181 设置磁盘驱动器图标285

实例182 隐藏、显示磁盘驱动器287

8.4 桌面应用实例292

实例183 隐藏、显示“任务栏” 292

实例184 显示任务栏中窗口标题293

实例185 设置桌面壁纸295

实例186 删除桌面快捷方式297

实例187 清空“回收站” 299

8.5 系统相关301

实例188 枚举系统文件类型301

实例189 枚举系统字体303

实例190 枚举系统进程305

实例191 获取计算机所有者名称和所有者单位名称306 实例192 获取Windows版本号,内建号与安装序列号308 实例193 获取CPU属性参数309

实例194 获取显卡BIOS版本号和更新日期311

实例195 获取系统BIOS版本号和更新日期313

实例196 控制光驱的弹开与关闭315

实例197 启用与禁用光驱的自动播放功能317

实例198 启动控制面板318

实例199 检测系统启动模式319

实例200 获取和设置系统时间320

实例201 注销当前用户321

实例202 关闭计算机322

实例203 重新启动计算机324

实例204 获取内存使用状态325

实例205 虚拟内存分配示例326

8.6 系统文件夹328

实例206 获取当前文件夹的位置328

实例207 获取文件夹中的所有子文件329

实例208 获取“启动”文件夹和“临时”文件夹位置331

实例209 获取“桌面”文件夹的位置332

实例210 获取“字体”文件夹的位置334

实例211 获取“网上邻居”文件夹的位置334

实例212 获取“我的文档”文件夹的位置335 实例213 获取system文件夹的位置336

实例214 获取WINDOWS文件夹的位置337

8.7 IE相关338

实例215 获取IE浏览器的版本号338

实例216 修改IE默认主页339

实例217 修改IE标题栏341

实例218 用非IE窗体显示HTML文件342

实例219 隐藏IE工具栏344

实例220 使IE的默认打开方式为全屏显示345

实例221 获取IE收藏夹默认路径346

实例222 添加IE收藏夹内容347

实例223 获取IE临时文件夹默认路径349

实例224 清空IE临时文件夹350

实例225 清空IE历史记录353

实例226 清空IE地址栏记录353

实例227 使用默认浏览器打开指定网页354

实例228 修改IE链接按钮356

8.8 其他应用357

实例229 隐藏运行程序357

实例230 控制其他exe程序358

实例231 注册COM服务组件359

实例232 取消COM服务组件注册360

第9章鼠标及键盘应用实例362

9.1 鼠标应用362

实例233 判断鼠标左右键是否交换和禁止交换362

实例234 判断系统是否安装鼠标和鼠标是否有滚轮363 9.2 键盘应用364

实例235 设置键盘输入响应速度364

实例236 使用Enter键切换输入焦点366

实例237 捕获Alt和Alt+Shift组合键366

实例238 捕获Ctrl和Ctrl+Shift组合键367

实例239 捕获Ctrl、Ctrl+Alt和Ctrl+Alt+Shift组合键369 第10章光标与图标应用实例371

10.1 光标应用实例371

实例240 设置光标371

实例241 在不同的区域显示不同的光标373

实例242 创建和结束等待光标376

实例243 显示动态光标377

实例244 在按钮上显示自定义光标378

实例245 一个链接文本的制作381

10.2 图标应用实例383

实例246 动态更改应用程序图标384

实例247 交替改变的应用程序图标385

实例248 制作一个系统托盘图标387

实例249 从模块中获取图标391

实例250 制作一个像QQ那样的托盘闪烁图标393

实例251 读取文件图标395

实例252 保存图标到位图文件396

第3篇数据库、进程和动态链接库

第11章数据库技术应用实例402

11.1 数据库操作访问技术实例402

实例253 使用DAO建立Access数据库文件402

实例254 使用ADOX建立Access数据库文件404

实例255 使用ADO添加数据库记录407

实例256 使用ADO查询数据库记录409

实例257 使用ADO删除和修改数据库记录413

实例258 使用ADO实现数据库记录排序417

实例259 使用ADO实现数据库条件查询420

11.2 ODBC操作数据库423

实例260 数据源配置工具的制作424

实例261 利用ODBC显示数据427

实例262 利用ODBC实现数据的增加和删除429

实例263 利用ODBC实现简单的学生管理系统434 11.3 DataGrid控件和MSFlexGrid控件的使用438

实例264 使用DataGrid显示数据库查询结果439

实例265 DataGrid的单元格背景和文字颜色441

实例266 DataGrid自定义列标题442

实例267 DataGrid自动增加数据443

实例268 DataGrid升序和降序排列444

实例269 DataGrid一个综合的例子447

实例270 使用FlexGrid显示数据库查询结果448

实例271 FlexGrid自定义列标题451

实例272 FlexGrid的升序和降序排列452

实例273 FlexGrid一个界面综合例子454

实例274 FlexGrid自动设置列宽456

实例275 FlexGrid响应Tab按键458

实例276 FlexGrid合并单元格461

实例277 FlexGrid修改单元格数据(综合)463

第12章进程和线程应用实例468

12.1 进程基本操作468

实例278 使用CreateProcess()函数创建进程468

实例279 使用其他方式打开进程470

实例280 枚举系统所有进程471

实例281 打开和关闭计算器进程472

实例282 显示和隐藏进程的主窗口474

实例283 用SendMessage()函数实现进程之间的通信478 实全284 使用剪贴板实现进程通信482

实例285 使用邮槽实现进程通信484

实例286 使用匿名管道实现进程通信486

实例287 从任务管理器窗口中读取列表信息488

实例288 运行系统程序并输出结果490

12.2 线程基本操作492

实例289 创建线程492

实例290 挂起和恢复线程494

实例291 终止线程495

实例292 如何使用CEvent类497

实例293 如何使用CCriticalSection类499

实例294 如何使用CSemaphore类502

实例295 如何使用CSingleLock类504

实例296 如何使用CMutex类506 实例297 线程的消息队列508

第13章动态链接库512

13.1 DLL基础512

实例298 创建和使用一个Win32 DLL 512

实例299 创建和使用一个MFC DLL 514

实例300 动态链接库的显式调用515

实例301 动态链接库的隐式调用517

实例302 从DLL中创建对话框并显示518

实例303 DLL创建出口类520

实例304 从DLL中绘制图片523

13.2 系统钩子526

实例305 键盘钩子的制作527

实例306 使用系统钩子记录活动窗口的窗口名529

实例307 鼠标钩子制作532

第14章ActiveX控件和COM组件535

14.1 ActiveX控件535

实例308 在网页上显示ActiveX控件535

实例309 网页中显示带控件的ActiveX控件537

实例310 网页向ActiveX控件传递参数539

实例311 实现ActiveX控件的事件540

14.2 COM组件的简单介绍542

实例312 创建一个简单的COM组件543

实例313 COM组件的调用(COM001)544

实例314 使用COM组件实现多接口545

实例315 多接口COM组件的调用(COM002)549

实例316 使用COM组件显示对话框550

第4篇网络技术及其他特殊操作技巧

第15章网络开发技术应用实例554

15.1 本地计算机信息和局域网信息554

实例317 获取本地计算机名和IP地址554

实例318 获取本地计算机的主机信息555

实例319 获取本地计算机的操作系统557

实例320 用SendARP()获取局域网计算机MAC地址558 实例321 获取主机共享文件夹560

实例322 获取局域网主机共享文件目录561

实例323 在局域网实现共享文件夹564

实例324 在局域网查找存活主机566

实例325 读取本机所有的串口568

实例326 枚举本机所安装的网络协议570

实例327 读取本机所有拨号名称572

实例328 获取系统UDP列表573

实例329 获取系统TCP列表575

实例330 映射网络驱动器577

15.2 网络套接字编程580

实例331 端口扫描581

实例332 用UDP实现聊天功能584

实例333 组播通信588

实例334 广播通信593

实例335 聊天室程序(客户端部分)598

实例336 聊天室程序(服务端部分)602

实例337 文件传输(服务端部分)609

实例338 文件传输(客户端部分)613

实例339 制作网络嗅探工具616

实例340 利用网络嗅探实现抓取网络文件623

15.3 Internet编程626

实例341 读取网页数据626

实例342 利用WinInet实现文件下载628

实例343 发送电子邮件630

实例344 获取电子邮件信息637

实例345 浏览FTP文件641

实例346 网络校时646

第16章操作XML、HTML、Word与Excel文件650 16.1 XML的读取和存储650

实例347 创建XML文件650

实例348 在XML的根节点加入子节点652

实例349 得到XML节点的属性和文字654

实例350 删除XML根节点下的某子节点656

实例351 设置XML子节点的文字和属性658

实例352 利用递归方式遍历XML文件661

16.2 HTML文件操作664

实例353 获取HTML文件中的所有链接664

实例354 动态设置HTML的背景色667

实例355 动态获取TABLE中的TD内容668

实例356 动态改变网页中的链接信息671

实例357 动态向网页写入数据672

实例358 动态更改TABLE中TD的数据674

实例359 一键填写表单676

16.3 操作Word文件678

实例360 打开和关闭Word 678

实例361 在Word中写入文字并保存680

实例362 从当前Word文档中读取文本682

实例363 在Word文档中增加表格684

16.4 操作Excel文件686

实例364 在Excel中加入表单686

实例365 在Excel中添写表单689

实例366 在Excel中输出表单692

第17章VC 6.0其他编程实例695

17.1 控件编程695

实例367 CCheckListBox的使用695

实例368 自绘ProgressCtrl 697 实例369 自绘按钮控件700

实例370 TabCtrl切换显示界面705

实例371 实现EDIT控件限制输入710

实例372 实现EDIT控件自绘712

实例373 改变RICHEDIT的字体风格713

实例374 颜色间隔的ListCtrl控件715

实例375 在ListCtrl的栏目中加入进度条717

实例376 显示颜色的ComboBox 721

实例377 自绘的ListBox控件723

实例378 BCMenu类的使用726

实例379 制作资源浏览器727

17.2 C++ STL简介734

实例380 vector的用法734

实例381 list的用法735

实例382 string的用法736

实例383 map的用法736

实例384 set的用法737

实例385 vector中的排序738

实例386 list中的排序739

实例387 queue的用法740

实例388 用string拆分字符串741

实例389 string中显示特定字符串742

实例390 多字节、Unicode和UTF8字符串的互换743 实例391 在vector和list中插入数据745

17.3 常见VC 6.0编程技巧实例746

实例392 简易浏览器746

实例393 时间日期显示(跟系统一样的显示方式)751 实例394 本机文件目录监视753

实例395 枚举已安装的软件757

实例396 给程序增加提示对话框759

实例397 从下冒起的提示框760

实例398 枚举窗口762

实例399 枚举组合框的子窗口764

实例400 系统热键的使用765

实例401 在对话框中显示工具栏767

实例402 窗口淡入淡出效果769

实例403 按分隔符提取字符串组770

实例404 CRectTracker类的使用771

实例405 得到鼠标指向窗口的窗口名和类名773

实例406 画出鼠标指向窗口的矩形区域774

身份证号码知识 Mylaf 2012-10-23

根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由17位数字本体码和1位数字校验码组成。排列顺序从左至右依次为:6位数字地址码,8位数字出生日期码,3位数字顺序码和1位数字校验码。

地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。

生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。

顺序码表示同一地址码所标识的区域范围内,对同一出生日期的人员编定的顺序号。奇数为男性,偶数为女性。 校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

bit 17 16

15 14 13

12 11 10

9

8

7

6

5

4

3 2

1

0 号码值 3

4 0

5 2 4 1 9 8 0 0 1 0 1 0 0 1 待定 意义 地址码(6位) 出生日期码(8位yyyymmdd ) 顺序码 校验码 权值

7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

---

校验码生成步骤:

1,计算数字本体码加权和:()∑=?=

17

1

i i

i

R n Sum

i----表示号码字符从右至左包括校验码在内的位置序号; n i ----表示第i 位置上的号码值; R i ----示第i 位置上的权值。 计算实例:

bit 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 号码值 3

4 0

5 2 4 1 9 8 0 0 1 0 1 0 0 1 待定 权值 7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

---

∑(n i ×R i )

=3×7+4×9+0×10+5×5+2×8+4×4+……+0×4+1×2=189

2,计算Sum 对11的余

Y=mod(Sum,11);

上例中,Y=mod(189,11)=2;

3,根据余数查表,得到对应的校验码

Y 0 1 2 3 4 5 6 7 8 9 10 校验码

1

X

9

8

7

6

5

4

3

2

上例中,Y=2,对应的校验码为X 。

故而,上面的身份证号完整为340524************ 。

公民身份证号码18位数字含义

公民身份证号码18位数字含义2010.07 目前我国公民身份证号码由18位数字组成:前6位为地址码,第7至14位为出生日期码,第15至17位为顺序码,第18位为校验码。检验码分别是“0、1、2、……10”共11个数字,当检验码为“10”时,为了保证公民身份证号码18位,所以用“X”表示。虽然校验码为“X”不能更换,但若需全用数字表示,只需将18位公民身份号码转换成15位居民身份证号码,去掉第7至8位和最后1位3个数码。 当今的身份证号码有15位和18位之分。1985年我国实行居民身份证制度,当时签发的身份证号码是15位的,1999年签发的身份证由于年份的扩展(由两位变为四位)和末尾加了效验码,就成了18位。这两种身份证号码将在相当长的一段时期内共存。两种身份证号码的含义如下: 18位的身份证号码如:130429####%%%%0078 1~6位为地区代码,其中1、2位数为各省级政府的代码,3、4位数为地、市级政府的代码,5、6位数为县、区级政府代码。如13(河北省)04(邯郸市)29(永年县) 7~14位为出生年月日 15~17位为顺序号,是县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:007的就是个男生而且和他同年月日生的男生至少有两个他们的后四位是001* 和003* 18位为效验位(识别码),通过复杂公式算出,普遍采用计算机自动生成。是前面17位的一种检验代码,如果你改变了前面某个数字而后面的效验代码不响应改变就会被计算软件判断为非法身份正号码。X也是效验代码的一中 15位的身份证号码: (1)1~6位为地区代码 (2)7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期 (3)第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。 《中华人民共和国行政区划代码》 (GB/T2260-1995)

Excel判断身份证号校验码

Excel判断身份证号校验码 假设在一个工作表中:A列是姓名,B列是身份证号码,C列是备注。在B列中输入18位身份证号码后,在C2单元格中输入计算数组公式: =RIGHT(B2,1)=MID("10X98765432",MOD(SUM(MID(B2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1) 然后再将该公式复制给C列其他单元格。 公式的计算结果是一个逻辑值,True表示校验正确,即计算出来的校验码与输入的相同,而False则表示校验错误。值得注意的是,使用校验码进行校验判断为正确的身份证号码未必是正确的,但判断为错误的则肯定是错误的,即通过校验的只是身份证号码正确的必要条件而非充分条件。当然,在实际输入中,身份证号码输入错误而校验正确的情况很少见。在大多数情况下,使用校验码进行校验可以大大提高身份证号码输入的正确性。 RIGHT 根据所指定的字符数返回文本字符串中最后一个或多个字符。 MID 返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。 MOD 返回两数相除的余数。SUM 返回某一单元格区域中所有数字之和。ROW 返回引用的行号。INDIRECT 返回由文本字符串指定的引用。 或者输入数组公式: =IF(LEN(B2)<>18,"错误 ",IF(MID("10X98765432",MOD(SUM(MID(B2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=MID(B2,18,1), "正确","错误"))

身份证号码校验实例

身份证号码校验实例 身份证号码是按照一定规律编制的,是个人身份的有效证明,每个人只有一个号码,且不会重复,因而被各单位各部门广泛应用在相关名册中。在大量的身份证号码录入过程中,由于抄写或录入等原因,可能会弄错了某位数字,如果录错了任何一位数字,计算出来的校验码就不一样。根据这一特点,本函数可以对已录入的大批量身份证号码进行校验,如果校验未通过,则说明你录入的号码中必定是某位数字错了,应及时更正,以保证身份证号码正确有效,如果录入的是第一代15位身份证号码,本函数将返回18位号码,使身份证号码保持统一的位数。 代码如下: Function IDcheck(ID) '身份证号码校验函数 Dim s, iAs Integer Dim e, z As String Part1: '----------------------------身份证号码合法性检查--------------------------------------- If Not (Len(ID) = 18 Or Len(ID) = 15) Then '位数检验 IDcheck = "位数错误" Exit Function Else If Len(ID) = 15 Then ID = Left(ID, 6) & "19" & Right(ID, 9)

If IsNumeric(Left(ID, 17)) = False Or InStr(ID, ".") > 0 Then '字符检验 IDcheck = "字符错误" Exit Function End If On Error Resume Next '日期检验 If DateValue(Mid(ID, 7, 4) & "-" & Mid(ID, 11, 2) & "-" & Mid(ID, 13, 2)) < 1 Or _ DateValue(Mid(ID, 7, 4) & "-" & Mid(ID, 11, 2) & "-" & Mid(ID, 13, 2)) > Date Then IDcheck = "日期错误" Exit Function End If End If Part2: '-----------------------------校验码的生成及检查---------------------------------------- s = 0 For i = 1 To 17 s = s + Val(Mid(ID, 18 - i, 1)) * (2 ^ i Mod 11)

身份证号码举例

身份证号码举例 身份证整个号码的含义是什么? 18位身份证号码各位的含义: 1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码; 5-6位县、县级市、区代码; 7-14位出生年月日,比如19670401代表1967年4月1日; 15-17位为顺序号,其中17位(倒数第二位)男为单数,女为双数; 18位为校验码,0-9和X。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,计算的结果是0-10,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。X是罗马 数字的10,用X来代替10。 举例: 130503 19670401 0012这个身份证号的含义: 13为河北,05为邢台,03为桥西区,出生日期为1967年4月1日,顺序号为001,2为校验码。 15位身份证号码各位的含义: 1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码; 5-6位县、县级市、区代码; 7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别; 13-15位为顺序号,其中15位男为单数,女为双数; 与18位身份证号的第二个区别:没有最后一位的校验码。 举例: 130503 670401 001的含义; 13为河北,05为邢台,03为桥西区,出生日期为1967 年4月1日,顺序号为001。 Excel身份证号码校验实例 身份证号码是按照一定规律编制的,是个人身份的有效证明,每个人只有一个号码,且不会重复,因而被各单位各部门广泛应用在相关名册中。在大量的身份证号码录入过程中,由于抄写或录入等原因,可能会弄错了某位数字,如果录错了任何一位数字,计算出来的校验码就不一样。根据这一特点,本函数可以对已录入的大批量身份证号码进行校验,如果校验未通过,则说明你录入的号码中必定是某位数字错了,应及时更正,以保证身份证号码正确有效,如果录入的是第一代15位身份证号码,本函数将返回18位号码,使身份证号码保持 统一的位数。

中华人民共和国身份证号码规则

18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确规定。GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其含义如下: 1. 地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 2. 出生日期码:表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位、2位数字表示,之间不用分隔符。 3. 顺序码:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 校验的计算方式: 1. 对前17位数字本体码加权求和 公式为: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 2. 以11对计算结果取模 Y = mod(S, 11) 3. 根据模的值得到对应的校验码 对应关系为: Y值:0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5 4 3 2 身份证号码的编排规则 身份证号码中这些数字是怎样排列的,每个数字表示什么意思呢?下面就让我们一起来探索其中的规律吧!新的身份证号码是由18位数字组成的,它们分别表示: (1)前1、2位数字表示:所在省份的代码; (2)第3、4位数字表示:所在城市的代码; (3)第5、6位数字表示:所在区县的代码; (4)第7~14位数字表示:出生年、月、日; (5)第15、16位数字表示:所在地的派出所的代码; (6)第17位数字表示性别:奇数表示男性,偶数表示女性; (7)第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生, 用来检验身份证的正确性。校检码可以是0~9的数字,有时也用x表示。 15位的身份证号 dddddd yymmdd xx p 18位的身份证号 dddddd yyyymmdd xx p y 其中dddddd为地址码(省地县三级)18位中的和15位中的不完全相同 yyyymmdd yymmdd 为出生年月日 xx顺号类编码 p性别 18位中末尾的y为校验码,在网上可以找到算法 将前17位的ascii码值经位移、异或运算结果不在0-9的令其为x 中华人民共和国行政区划代码(GB/T2260—999) 代码省、市名称代码省、市名称 11 北京市 42 湖北省

身份证号码第十八位效验码的计算方法

身份证号码第十八位效验码的计算方法- godson_h的专栏- CSDN 博客 默认分类2010-04-10 07:56:04 阅读141 评论0 字号:大中小订阅 身份证号码第十八位效验码的计算方法 关于身份证第18是怎么计算的,原理如下:根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码(身份证前六位)表示编码对象常住户口所在县(市、旗、区)的行政区划代码。(所有区域的编码可以到这个网站https://www.sodocs.net/doc/841225061.html,/tjbz/index.htm 查询到最新的县及县以上的行政编码资料。) 生日期码(身份证第七位到第十四位)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。 顺序码(身份证第十五位到十七位)为同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。 校验码(身份证最后一位)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。 第十八位数字的计算方法为: 1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 2.将这17位数字和系数相乘的结果相加。 3.用加出来和除以11,看余数是多少? 4余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为 1 0 X 9 8 7 6 5 4 3 2。 5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。 例如:某男性的身份证号码是340524************。我们要看看这个身份证是不是合法的身份证。 首先:我们得出,前17位的乘积和是189 然后:用189除以11得出的结果是17 + 2/11,也就是说余数是2。 最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。

检验身份证号码的正确性

检验身份证号码的正确性 =IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:1 7")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2),IF(LEN(A2)=15,ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00")))) EXCEL中如何提取身份证出生日期、性别、检验身份证号码的正确性 中国居民身份证号码是一组特征组合码,原为15位,现升级为18位,其编码规则为:15位:6位数字常住户口所在县市的行政区划代码,6位数字出生日期代码,3位数字顺序码。 18位:6位数字常住户口所在县市的行政区划代码,8位数字出生日期代码,3位数字顺序码和1位检验码。 其中3位数字顺序码,是为同一地址码的同年同月同日出生人员编制的顺序号,偶数的为女性,奇数的为男性。 1、提取籍贯地区的行政区划代码(A2为身份证号,下同) 15与18位通用:=LEFT(A2,6) 如果有一个编码和省份地区的对照表,可以用VLOOKUP函数来提取地区信息。 2、提取出生日期信息 15位:=--TEXT(19&MID(A2,7,6),"#-00-00") 18位:=--TEXT(MID(A2,7,8),"#-00-00") 15与18位通用: =--TEXT(IF(LEN(A2)=15,19,"")&MID(A2,7,6+IF(LEN(A2)=18,2,0)),"#-00-00") 简化公式: =--TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00") (请将输入公式的单元格格式设置为日期格式) 3、提取性别信息 15位:=IF(MOD(RIGHT(A2),2)=1,"男","女") 18位:=IF(MOD(MID(A2),17,1)=1,"男","女") 15与18位通用:=IF(MOD(MID(A2,IF(LEN(A2)=15,15,17),1),2)=1,"男","女") 简化公式:=IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女") 4、检验身份证号码的正确性 18位身份证号码的最后一位是检验码,它是根据身份证前17位数字依照规则计算出来的,其值0~9或X。一般情况只要有一位数字输入错误,依照规则计算后就会与第18位数不符。当然不排除按错误号码计算后恰好与检验码相符的情况,但这种情况出现的可能性较低。因此,对18位号码的验证采用如下公式: =MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-R OW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2,1) 对于15位身份证,由于没有检验码,我们只能简单地去判断出生日期代码是否是一个有效的日期,避免输入一些像“731302”或“980230“等这样不存在的日期。

net实现中国身份证号码验证源码

.net实现中国身份证号码验证源码 using System; /// /// Summary descr ip tion for IDCardValid /// public cl as s IDCardValid { public IDCardValid() { // // TODO: Add constructor logic here // } /// /// 验证身份证号码 /// /// 身份证号码 /// 验证成功为True,否则为False public static bool CheckIDCard(string Id) { if (Id.Length == 18) { bool check = CheckIDCard18(Id); return check; } else if (Id.Length == 15) { bool check = CheckIDCard15(Id); return check; } else { return false; } } #region 身份证号码验证 /// /// 验证15位身份证号 /// /// 身份证号 /// 验证成功为True,否则为False private static bool CheckIDCard18(string Id) { long n = 0; if (long.TryParse(Id.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false) { return false;//数字验证 } string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x6 1x14x32x41x50x62x15x33x42x51x63x21x34x43x52 x64x65x71x81x82x91"; if (address.IndexOf(Id.Remove(2)) == -1) { return false;//省份验证 } string birth = Id.Substring(6, 8).Insert (6, "-").Insert(4, "-"); DateTime time = new DateTime(); if (DateTime.TryParse(birth, out time) == false) { return false;//生日验证 } string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(','); string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(','); char[] Ai = Id.Remove(17).ToCharArray(); int sum = 0; for (int i = 0; i < 17; i++) { sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString()); } int y = -1; Math.DivRem(sum, 11, out y); if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower()) { return false;//校验码验证 } return true;//符合GB11643-1999标准 } /// /// 验证18位身份证号 /// /// 身份证号 /// 验证成功为True,否则为False private static bool CheckIDCard15(string Id) { long n = 0; if (long.TryParse(Id, out n) == false || n < 1

身份证校验码的解释

身份证校验码的解释 新居民身份证的号码是按照国家的标准编制的,由18位组成:前六位为行政区划代码,第七至第十四位为出生日期码,第15至17位为顺序码,第18位为校验码。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。 身份证中第十八位数字的计算方法为: 1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。 2.将这17位数字和系数相乘的结果相加。 3.用加出来和除以11,看余数是多少? 4余数只可能有0 、1、2、3、4、5、6、7、8、9、10这11个数字。其分别对应的最后一位身份证的号码为1、0、X、9、8、7、6、5、4、3、2。 5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。 例如:某男性的身份证号码是340524************。我们要看看这个身份证是不是合法的身份证。 首先:我们得出,前17位的乘积和是189 然后:用189除以11得出的结果是17 + 2/11,也就是说余数是2。 最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。

这里面说的很清楚了,最后一位是用来辨别身份证真假的一种办法。而不是同年同月同日生的人的识别码。 贴个JA V A实现的校验算法 public static char doV erify(String id); { char pszSrc[]=id.toCharArray();; int iS = 0; int iW[]={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; char szVerCode[] = new char[]{'1','0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; int i; for(i=0;i<17;i++); { iS += (int);(pszSrc-'0'); * iW; } int iY = iS%11; return szVerCode[iY]; } =IF(LEN(A101)=15,REPLACE(A101,7,,19)&MID("10X98765432",MOD(SUM(MID(REPLAC E(A101,7,,19),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1),A101 excel计算最后一位的公式,也就是个校验码而已

18位身份证号编制规则

18位身份证号编制规则 一、身份证号码执行标准:18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。 二、编码规则:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示如为ABCDEFYYYYMMDDXXXR。其含义如下: 1. 地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T22 60的规定执行。 2. 出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位(不足两位加0)、2(同上)位数字表示,之间不用分隔符。 3. 顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 4.校验码(R),一位数字,通过前17位数字根据一定计算得出。 三、关于地址码含义的详细解释: 身份证前六位是地区代码,我们用ABCDEF表示。代码的解释规则如下: A:国内区域 1 华北三省二市 2 东北三省 3 华东六省一市

4 华南六省 5 西南四省一市 6 西北五省 7 台湾 8 港澳 B(或者说是AB,就是前2位):省(直辖市,自治区,特别行政区)代码 按照A划定的分区定义省代码,有直辖市的,直辖市列前,其余按离直辖市的距离排序,没有直辖市的,按离北京的远近排序。 具体省(直辖市,自治区,特别行政区)代码如下: 11-15 京津冀晋蒙 21-23 辽吉黑 31-37 沪苏浙皖闽赣鲁 41-46 豫鄂湘粤桂琼 50-54 渝川贵云藏 61-65 陕甘青宁新 81-82 港澳 CD:城市代码 从01开始排,对于直辖市,CD=01表示市辖区,CD=02表示辖县;省的城市代码从省会开始排,比如2101=沈阳2102=大连…… 只有地级城市有独立的城市代码,县级市没有。 EF:市辖区、郊区、郊县、县级市代码

身份证的编码规则

身份证编码规则生活常识 一、身份证号码执行标准:18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。 二、编码规则:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示如为ABCDEFYYYYMMDDXXXR。其含义如下: 1. 地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 2. 出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别 用4位、2位(不足两位加0)、2(同上)位数字表示,之间不用分隔符。 3. 顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 4.校验码(R),一位数字,通过前17位数字根据一定计算得出。 三、关于地址码含义的详细解释: 身份证前六位是地区代码,我们用ABCDEF表示。 代码的解释规则如下:

A:国内区域 1 华北三省二市 2 东北三省 3 华东六省一市 4 华南六省 5 西南四省一市 6 西北五省 7 台湾 8 港澳 B(或者说是AB,就是前2位):省(直辖市,自治区,特别行政区)代码 按照A划定的分区定义省代码,有直辖市的,直辖市列前,其余按离直辖市的距离排序,没有直辖市的,按离北京的远近排序。 具体省(直辖市,自治区,特别行政区)代码如下: 11-15 京 津冀 晋 蒙 21-23 辽 吉黑

18位身份证号码输入的几种解决方法

18位身份证号码输入的几种解决方法: 1、在A1单元输入号码时,在前面先输入?号,就是:?123456789012345,这样单元格会默认为该单元为文本方式,会完整显示出15个号码来,而不会显示那令人讨厌的科学计数方式来了。 2、如果已经输入了大量的号码,全部以科学计数显示的话,而又懒的按照上面的方法一个一个的重新输入的话,也有这个好方法哦,比如已在单元A1:A100输入了号码,按以下步骤做:》选择单元A1:A100》单击鼠标右键,设置单元格式》选择自定义,在…类型?中输入…0?即可,轻松搞定,呵呵!! 3、还有一种用函数来解决的方法:在A1:A100已经输入大量的号码时,在B1单元中输入:=trim(' 'a1),注意两个?之间是空格,这个公式的意思:先在A1单元15位号码前加个空格符号,然后用trim这个函数把空格符号去掉。输完后,B1单元也是显示出完整的15位数字了。 最佳答案 使WORD里面的文章自动生成目录: 假如文章中标题格式为 第一节……大标题(一级) 1.1……小标题(二级) 1.1.1—……小标题下的小标题(三级) …… 第N节……大标题(一级) n.1……小标题(二级) n.1.1—……小标题下的小标题(三级) 自动生成文章目录的操作: 一、设置标题格式 1.选中文章中的所有一级标题; 2.在“格式”工具栏的左端,“样式”列表中单击“标题1”。 仿照步骤1、2设置二、三级标题格式为标题2、标题3。 二、自动生成目录 1.把光标定位到文章第1页的首行第1个字符左侧(目录应在文章的前面); 2.执行菜单命令“插入/引用/索引和目录”打开“索引的目录”对话框; 3.在对话框中单击“目录”选项卡,进行相关设置后,单击“确定”按钮,文章的目录自动生成完成。 友情提示:

身份证号码校验

Visual C++范例开发大全目录Mylaf 2012-10-23 第1篇VC++入门与基本文档视图 第1章Visual C++ 6.0 MFC程序设计快速入门 2 1.1 Visual C++ 6.0开发环境简介2 1.2 创建Visual C++ 6.0应用程序3 实例001 创建第一个MFC应用程序 3 实例002 创建第一个C++应用程序 4 第2章文档视图应用程序实例6 2.1 窗体操作6 实例003 实现启动时无子窗口的MDI程序 6 实例004 实现MDI应用程序启动时子窗口默认最大化7 实例005 MDI应用程序启动时主窗口默认最大化8 实例006 具有图片背景的MDI主窗口9 实例007 全屏显示的窗体12 实例008 创建带滚动条的窗体15 实例009 窗体拆分16 实例010 始终置顶的SDI程序17 实例011 不可移动的窗体18 实例012 创建不可改变大小的SDI窗口19 实例013 动态设置窗口位置和大小20 实例014 保存窗口状态21 实例015 双击主窗口弹出“打开”对话框23 2.2 标题栏25 实例016 获取标题栏高度25 实例017 获取标题栏上按钮的尺寸26 实例018 定制标题栏文字27 实例019 添加标题栏右键菜单项28 实例020 屏蔽标题栏右键系统菜单及隐藏按钮29 实例021 禁用标题栏上的最大化、最小化和关闭按钮30 实例022 显示和隐藏标题栏31 2.3 菜单32 实例023 获取菜单栏高度32 实例024 启用和禁用菜单33 实例025 动态添加菜单35 实例026 带单选标记的菜单36 实例027 复选标记的菜单38 实例028 带图标菜单的SDI程序39 实例029 带图标菜单的MDI 40 实例030 位图菜单41 实例031 创建客户区右键菜单43 实例032 隐藏和显示菜单栏44 实例033 为应用程序添加多语言支持45 2.4 工具栏48 实例034 工具栏按钮的添加、删除和分组48 实例035 不能停靠的工具栏48 实例036 下压式工具栏按钮49 实例037 给工具栏添加图像背景50 实例038 动态隐藏和显示工具栏51 2.5 状态栏52 实例039 显示和隐藏状态栏52 实例040 带进度条的状态栏53 实例041 在状态栏上加载图像54 实例042 滚动字幕的状态栏56 第3章对话框应用实例58 3.1 对话框界面58 实例043 设置对话框应用程序窗口启动位置58 实例044 半透明对话框59 实例045 创建不规则对话框应用程序60 实例046 拖动没有标题栏的对话框61 实例047 实现收缩对话框应用程序62 实例048 基于对话框的托盘程序64 实例049 为对话框应用程序添加菜单栏66 实例050 带有工具栏的对话框应用程序67 实例051 为对话框应用程序添加右键菜单68 实例052 模式对话框与非模式对话框69 实例053 属性页对话框71 实例054 向导式对话框72 实例055 为对话框应用程序添加启动界面73 实例056 为对话框应用程序添加百叶窗的启动界面76 3.2 通用对话框77 实例057 文件打开对话框78 实例058 在程序启动时弹出文件打开对话框79 实例059 在文件打开对话框中预览图片80 实例060 文件保存对话框81 实例061 选择文件夹对话框82 实例062 字体对话框84 实例063 颜色对话框86 实例064 查找与替换对话框87 第4章控件应用实例89 4.1 常见控件89 实例065 图文按钮89 实例066 具有随机图片背景的EditBox控件90 实例067 使用List Box显示系统逻辑磁盘驱动器列表92 实例068 利用列标题对列表视图进行数据排序93 实例069 使用Static Text控件显示当前系统时间95 实例070 使用Data Time Picker控件调整系统时间96 实例071 使用Combo Box控件控制字体大小97 实例072 使用Rich Edit控件显示文本文件98 实例073 使用Tree Control控件显示文件目录100 实例074 位图进度条102 实例075 使用Progress控件实现文字进度条103 实例076 使用Static Text控件显示当前时间104 实例077 使用Picture Box显示动态打开图像106 实例078 使用Group Box控件对控件分组107 实例079 使用Check Box实现多选109 实例080 使用Radio Button实现单选110 实例081 HorizontalScrollBar,VerticalScrollBar滚动条111

SQLServer中获取18位身份证号码校验码的函数

在SQL Server中编写获取18位身份证的校验码函数 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[fn_getChkVal](@IDCardNo nvarchar(18)) RETURNS nvarchar(1) AS BEGIN Declare @iSum integer,@iMod integer if len(@IDCardNo)<>18 return '' if LEFT(@IDCardNo,17) like '%[^0-9]%' RETURN '' --判断1-17位是否为数字0-9,如果不是退出 set @iSum= cast(substring(@IDCardNo,1,1) as int)*7 set @iSum=@iSum+cast(substring(@IDCardNo,2,1) as int)*9 set @iSum=@iSum+cast(substring(@IDCardNo,3,1) as int)*10 set @iSum=@iSum+cast(substring(@IDCardNo,4,1) as int)*5 set @iSum=@iSum+cast(substring(@IDCardNo,5,1) as int)*8 set @iSum=@iSum+cast(substring(@IDCardNo,6,1) as int)*4 set @iSum=@iSum+cast(substring(@IDCardNo,7,1) as int)*2 set @iSum=@iSum+cast(substring(@IDCardNo,8,1) as int)*1 set @iSum=@iSum+cast(substring(@IDCardNo,9,1) as int)*6 set @iSum=@iSum+cast(substring(@IDCardNo,10,1) as int)*3 set @iSum=@iSum+cast(substring(@IDCardNo,11,1) as int)*7 set @iSum=@iSum+cast(substring(@IDCardNo,12,1) as int)*9 set @iSum=@iSum+cast(substring(@IDCardNo,13,1) as int)*10 set @iSum=@iSum+cast(substring(@IDCardNo,14,1) as int)*5 set @iSum=@iSum+cast(substring(@IDCardNo,15,1) as int)*8 set @iSum=@iSum+cast(substring(@IDCardNo,16,1) as int)*4 set @iSum=@iSum+cast(substring(@IDCardNo,17,1) as int)*2 set @iMod=@iSum % 11 return substring('10X98765432',@imod+1,1) END

18位身份证号码验证算法

‘算法为Excel表中用VBA实现身份证号码验证。只验证身份证号码正确否,不验证是否存在此身份证号码。算法思想可普遍适用其他地方。 Sub 身份证号码验证算法() Dim sfzArray(1 To 18) As Integer ‘身份证号码数组,数组每个元素记录每一位号码 Dim sfzPointer As Integer’身份证位数指针,指向每一位号码 Dim checkStart As Long’需验证的起始位置,Excel中第一个身份证号码行号 Dim checkEnd As Long’需验证的最后位置,Excel中最后一个身份证号码行号 Dim checkPointer As Long’验证指针,指向验证的位置 Dim sfzSum As Integer’身份证位数求和 Dim checkWord As String’校验位 Dim initialV alue As String’Excel表中身份证号码初始值 checkStart=2’根据实际情况修改 checkEnd=50000’根据实际情况修改 For checkPointer= checkStart To checkEnd initialV alue = CStr(Cells(checkPointer, 1))’默认Excel表第一列是身份证号码,根据实际情况修改 sfzSum = 0’初始化 For sfzPointer = 1 To 17 sfzArray(sfzPointer) = CInt(Mid(initialV alue, sfzPointer, 1))’对应位赋值给身份证号码数组 Select Case sfzPointer’根据位数不同,求和 Case 1, 11 sfzSum = sfzSum + sfzArray (sfzPointer) * 7 Case 2, 12 sfzSum = sfzSum + sfzArray (sfzPointer)* 9 Case 3, 13 sfzSum = sfzSum + sfzArray (sfzPointer) * 10 Case 4, 14 sfzSum = sfzSum + sfzArray (sfzPointer) * 5 Case 5, 15 sfzSum = sfzSum + sfzArray (sfzPointer)* 8 Case 6, 16 sfzSum = sfzSum + sfzArray (sfzPointer) * 4 Case 7, 17 sfzSum = sfzSum + sfzArray (sfzPointer) * 2 Case 8 sfzSum = sfzSum + sfzArray (sfzPointer) * 1 Case 9 sfzSum = sfzSum + sfzArray (sfzPointer) * 6 Case 10 sfzSum = sfzSum + sfzArray (sfzPointer) * 3 End Select Next sfzPointer sfzSum = sfzSum Mod 11 Select Case sfzS um’根据求模后的余数,可得校验位 Case 0 checkWord = 1 Case 1 checkWord = 0 Case 2 checkWord = "X" Case 3 checkWord = 9 Case 4 checkWord = 8

身份证编码规则

中国公民身份证编号规则 一、身份证号码执行标准:18位身份证标准在国家质量技术监督局于1999年7月1日实施 的GB11643-1999《公民身份号码》。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号 码》从实施之日起代替GB11643-1989。 二、编码规则:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示如为ABCDEFYYYYMMDDXXXR。其含义如下: 1. 地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码, 按GB/T2260的规定执行。 2. 出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位(不足两位加0)、2位(同上)数字表示,之间不用分 隔符。 3. 顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生 的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 4.校验码(R),一位数字,通过前17位数字根据一定计算得出。 第17位数字是表示在前16位数字完全相同时,某个公民的顺序号,并且单数用于男性,双数用于女性。如果前16位数字均相同的同性别的公民超过5人,则可以“进位”到第16位。比如:有6位女性公民前16位数字均相同,并假设第16位数是7,则这些女性公民的末两位编号分别为72,74,76,78,80,82。另外,还特殊规定,最后三位数为996,997,998,999这4个号码为百岁老人的代码,这4个号码将不再分配给任何派出所。

相关主题