JS——验证身份证号码

var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];    // 加权因子
var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];            // 身份证验证位值.10代表X   
function IdCardValidate(idCard){
	idCard = trim(idCard.replace(/ /g, ""));               //去掉字符串头尾空格
	if (idCard.length == 15) {
		return isValidityBrithBy15IdCard(idCard);       //进行15位身份证的验证
	}
	else if(idCard.length == 18){
		var a_idCard = idCard.split("");                // 得到身份证数组           
		if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){
			//进行18位身份证的基本验证和第18位的验证            
			return true;           
		}else{
			return false;	
		}       
	} 
	else{
		return false;
	} 
}


/*** 判断身份证号码为18位时最后的验证位是否正确   
 * @param a_idCard 身份证号码数组  
 * @return   */  
 function isTrueValidateCodeBy18IdCard(a_idCard){
	var sum = 0;                             // 声明加权求和变量       
	if (a_idCard[17].toLowerCase() == 'x') {
		a_idCard[17] = 10;     // 将最后位为x的验证码替换为10方便后续操作       
	}       
	
	for ( var i = 0; i < 17; i++){
		sum += Wi[i] * a_idCard[i];            // 加权求和       
	}
	valCodePosition = sum % 11;                // 得到验证码所位置
	if (a_idCard[17] == ValideCode[valCodePosition]){
		return true;       
	}
	else{
		return false;
	}   
}   	



/*** 验证18位数身份证号码中的生日是否是有效生日   
 * @param idCard 18位书身份证字符串    
 * @return    */  
function isValidityBrithBy18IdCard(idCard18){
	var year =  idCard18.substring(6,10);
	var month = idCard18.substring(10,12); 
	var day = idCard18.substring(12,14);
	var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));       
	// 这里用getFullYear()获取年份,避免千年虫问题       
	if(temp_date.getFullYear()!=parseFloat(year) || temp_date.getMonth()!=parseFloat(month)-1 || temp_date.getDate()!=parseFloat(day)){
		return false;
	}
	else{           
		return true;       
	}   
}


/*** 验证15位数身份证号码中的生日是否是有效生日     
 * @param idCard15 15位书身份证字符串     
 * @return     */    
 function isValidityBrithBy15IdCard(idCard15){
	var year =  idCard15.substring(6,8);
	var month = idCard15.substring(8,10);         
	var day = idCard15.substring(10,12);         
	var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day)); 
	
	// 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法         
	if(temp_date.getYear()!=parseFloat(year) || temp_date.getMonth()!=parseFloat(month)-1 || temp_date.getDate()!=parseFloat(day)){
		return false;           
	}
	else{               
		return true;           
	}     
}

//去掉字符串头尾空格   
function trim(str) {       
	return str.replace(/(^\s*)|(\s*$)/g, "");   
}


/*** 通过身份证判断是男是女   
 * @param idCard 15/18位身份证号码   
 * @return 'female'-女、'male'-男   */
function maleOrFemalByIdCard(idCard){
	idCard = trim(idCard.replace(/ /g, ""));        // 对身份证号码做处理。包括字符间有空格。       
	if(idCard.length==15){
		if(idCard.substring(14,15)%2==0){
			return 'female';           
		}
		else{               
			return 'male';           
		}       
	}else if(idCard.length ==18){
		if(idCard.substring(14,17)%2==0){
			return 'female';           
		}
		else{               
			return 'male';           
		}       
	}else{           
		return null;       
	}   
} 


使用:

function checkID(){
	var flag = false;
	flag = IdCardValidate(num);//num为输入的身份证号码
	if(!flag){
		alert("请输入正确的证件号码!");
		return;
	}
}










《宾馆客房管理系统》是一个基于C#与MySQL的项目,旨在帮助学习者掌握数据库管理和系统开发知识。该项目通过完整代码实现,将编程技术应用于宾馆客房管理的实际业务场景。 C#是微软开发的面向对象编程语言,广泛用于Windows应用程序开发。在本项目中,C#用于构建用户界面、处理业务逻辑以及与数据库交互。它拥有丰富的类库,便于开发复杂图形用户界面(GUI),并通过ADO.NET组件实现与MySQL数据库的连接。MySQL是一种流行的开源关系型数据库管理系统(RDBMS),常用于Web应用程序,用于存储客房、预订、客户等核心数据。通过SQL语句,开发者可对数据进行增、删、改、查操作。系统中可能涉及“客房表”“预订表”“客户表”等,包含客房编号、类型、价格、预订日期等字段。 数据库连接是系统的关键部分。C#通过ADO.NET的SqlConnection类连接MySQL数据库,连接字符串包含服务器地址、数据库名称、用户名和密码。用户下载项目后,需根据本地环境修改连接字符串中的用户名和密码。系统主要功能模块包括:客房管理,可展示、添加、修改、删除客房信息;预订管理,处理预订的查看、新增、修改和取消;客户管理,存储和管理客户个人信息;查询功能,支持按客房类型、价格范围、预订日期等条件查询;报表和统计功能,生成入住率、收入统计等报表辅助决策。开发者需编写C#方法对应数据库操作,同时设计直观易用的界面,方便用户完成预订流程。项目中的MySQL文件可能是数据库脚本或配置文件,包含建表、数据填充及权限设置等内容,用户需在本地测试前运行脚本设置数据库环境。 总之,该系统结合C#和MySQL,为学习者提供了一个涵盖数据库设计、业务逻辑处理和界面开发的综合实践案例,有助于提升开发者在数据库应用和系统集成方面的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值