身份证信息查询系统

首先我们需要了解身份证信息的构成:

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位为顺序号,并能够判断性别,奇数为男,偶数为女。
上图:

代码:

#include
#include
typedef struct
{
	int year;
	int month;
	int day;
	int sex;
}Person;
Person pe[1];
logon()
{printf("\n\n\n\t\t\t  身份证信息查询系统\n\n");
 printf("\t\t\t     版本号:1.0\n\n");
 printf("\n\n\t\t\t    2012年3月4日\n\n");
 printf("\t\t\t    C区xx栋514寝\n");
system("pause");
}


int main()
{

	int i=1;
	int addr;
	char g[]={"gile"};
	char b[]={"boy"};
		logon() ;

			printf("       请输入您的身份证号码      \n");
	    scanf("%6d%4d%2d%2d%4d",&addr,&pe[i].year,&pe[i].month,&pe[i].day,&pe[i].sex);

		if(pe[i].sex&1==0)//判断男生女生,有身份证其特殊性,一般倒数第二个数位性别
			pe[i].sex=g;
		else
			pe[i].sex=b;

		printf("year=%d\nmonth=%d\nday=%d\nsex=%s\n",pe[i].year,pe[i].month,pe[i].day,pe[i].sex);
				switch(addr)
	{
		case 430180:printf("湖南省xxx\n");break;//按照这个将相应的case语句补上就实现了省份的查询
		case 0:;

	}
    system("pause");

	return 0;
}


你可能感兴趣的:(C语言)