身份证检测系统(小程序)

ID:

#ifndef _ID_H_

#define _ID_H_




#include<stdio.h>
#include<windows.h>
#include<iostream>
using namespace std;


void SetCurPos(int x, int y);
void HideCursor();
void DrawCol(int x, int y, int n);
void DrawRow(int x, int y, int n);
void DrawFont();
void DrawFrame(char *title);
void DrawMenu(char *title);
void Search(char *id, char *address);
void SearchID();
int Check(char *id);
void CheckID();


#endif


achieve:

#include"ID.h"


void SetCurPos(int row, int col)  // 列号 行号 相反 控制输出
{
COORD pos = {col,row};
HANDLE handle =GetStdHandle(STD_OUTPUT_HANDLE); // 获得句柄
SetConsoleCursorPosition(handle, pos); // 获取光标的位置


}


void HideCursor()  //光标设置 
{
CONSOLE_CURSOR_INFO  cursor_info = {1, 1};  //控制光标的隐藏
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);  //获得句柄  
SetConsoleCursorInfo(handle, &cursor_info);  // 获取光标的位置
}


void DrawCol(int col, int row, int n)  // 画列
{
for(int i=0; i<n;i++)
{
SetCurPos(col+i,row);
printf("*");
}
}
void DrawRow(int col, int row, int n)  //画行
{
for(int i=0; i<n;i++)
{
SetCurPos(col,row+i);
printf("-");
}
}
void DrawFont()  // 打印字体
{
SetCurPos(1,(60-4-strlen("身份证验证查询系统"))/2);
printf("身份证验证查询系统");
SetCurPos(8,(60-4-strlen("[1] 身份证归属地查询"))/2);
printf("%s","[1] 身份证归属地查询");
SetCurPos(11,(60-4-strlen("[2] 身份证合法性验证"))/2);
printf("%s","[2] 身份证合法性验证");
DrawRow(2,2,56);

SetCurPos(15,(60-4-strlen("请输入"))/2+8);

SetCurPos(17,(60-4-strlen("exit 退出系统"))/2);
printf("exit 退出系统");
SetCurPos(15,(60-4-strlen("请输入"))/2);
printf("请输入:>");




}
void DrawFrame(char *title)  // 画界面
{
char buffer[25]="title";
strcat(buffer,title);
system(buffer);
system("mode con cols=60 lines=20 ");  // 窗体大小  
system("color  37" ); //设置 背景色  第一个数字代表前景色 第二个数字代表背景色


HideCursor();  // 控制光标
SetCurPos(5,20); // 获取位置
printf("welcome to ID Search\n");


DrawCol(0,0,20);
DrawCol(0,58,20);
DrawRow(0,2, 56);
DrawRow(4,2,56);
DrawRow(14,2,56);
DrawRow(16,2,56);
DrawRow(18,2,56);


//DrawFont();
SetCurPos(15,(60-4-strlen("请输入"))/2+8);


}
void DrawMenu(char *title)  // 设置标题  画界面
{
system("mode con cols=60 lines=20 ");  // 窗体大小  
system("color  37" ); //设置 背景色  第一个数字代表前景色 第二个数字代表背景色
char buffer[25]="title ";
strcat(buffer,title);  //连接使之 变成标题
system(buffer);



HideCursor();  // 控制光标
SetCurPos(5,20); // 获取位置
printf("welcome to ID Search\n");


DrawCol(0,0,20);// 界面坐标
DrawCol(0,58,20);
DrawRow(0,2, 56);
DrawRow(4,2,56);
DrawRow(14,2,56);
DrawRow(16,2,56);
DrawRow(18,2,56);


DrawFont();

}


void Search(char *id, char *address)//检索 对应信息
{
char addr[7]={0};
strncpy(addr,id,6);
FILE *fp=fopen("id.dat","r");
if(fp ==NULL)
{
printf("输入错误!");
return ;
}
char info[100];
char *result=NULL;
while(!feof(fp))
{
fgets(info,100,fp);
result=strstr(info,addr);
if(result !=NULL)
{
//gets(result+7);
strcpy(address,result+7);
break;
}


}


fclose(fp);


}
void SearchID()  //输入并输出 
{
SetCurPos(8,(60-4-strlen("请输入身份证号:")-18)/2);
printf("%s","请输入身份证号:");
char id[18]={0};  // 打印字节数
scanf("%s",&id);
char address[128];  // 带入search 函数进行检索
Search(id,address);


SetCurPos(9,(60-4-strlen("归属地为:")-18)/2);
printf("%s","归属地为:");
SetCurPos(10,(60-4-strlen(address)-3)/2);  // 打印并输出
printf("%s",address);


SetCurPos(11,(60-4-strlen("按任意键继续....")-2)/2);
system("pause");

}
int Check(char *id)
{
int len = strlen(id);
if(len !=18)
return -1;
int W[17] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
int C[11] = {1,0,88,9,8,7,6,5,4,3,2};
int Sum  = 0;


for(int i=0;i<17;i++)
{
Sum=Sum+(id[i]-'0')*W[i];
}


int Mod = Sum% 11;
if(C[Mod]== (id[17]-'0'))
return 1;
return -1;
}
void CheckID()
{
SetCurPos(8,(60-4-strlen("请输入身份证号:")-18)/2);
printf("%s","请输入身份证号:");
char id[18]={0};  // 打印字节数
scanf("%s",&id);
SetCurPos(9,(60-4-strlen("此身份证为:")-18)/2);
printf("%s","此身份证为:");


int flag = Check(id);
if(flag==1)
{
printf("%s","合   法");
Beep(5000,100);  //蜂鸣器发声


}
else
{
system("color 04");
printf("%s","非   法");
}


SetCurPos(11,(60-4-strlen("按任意键继续....")-2)/2);
system("pause");

}



main():

#include"ID.h"




void main(int argc,char *argv[])
{
char *title ="身份证验证查询系统";


char select[5];
while(1)
{
 DrawMenu(title);
scanf("%s",&select);
if(strncmp(select,"1",1 )==0)
{
DrawFrame(title);
SearchID();
//归属地查询
}
else if(strncmp(select,"2",2) ==0)
{
DrawFrame(title);
CheckID();
//合法性查询
}
else if(strncmp(select,"exit",4)==0)
{
break;
}
else
{

DrawFrame(title);
SetCurPos(8,(60-4-strlen("Error!!!"))/2);
printf("Error!!!\n");
system("color 34");
break;
}
}

}



Id.dat文件:

110100 北京市 市辖区 (直辖市)
110101 北京市 东城区 (直辖市)
110102 北京市 西城区 (直辖市)
110103 北京市 崇文区 (直辖市)
110104 北京市 宣武区 (直辖市)
110105 北京市 朝阳区 (直辖市)
110106 北京市 丰台区 (直辖市)
110107 北京市 石景山区 (直辖市)
110108 北京市 海淀区 (直辖市)
110109 北京市 门头沟区 (直辖市)
110111 北京市 房山区 (直辖市)
110112 北京市 通州区 (直辖市)
110113 北京市 顺义区 (直辖市)
110221 北京市 昌平县 (直辖市)
110224 北京市 大兴县 (直辖市)
110226 北京市 平谷县 (直辖市)
110227 北京市 怀柔县 (直辖市)
110228 北京市 密云县 (直辖市)
110229 北京市 延庆县 (直辖市)
120100 天津市 市辖区 (直辖市)
120101 天津市 和平区 (直辖市)
120102 天津市 河东区 (直辖市)
120103 天津市 河西区 (直辖市)
120104 天津市 南开区 (直辖市)
120105 天津市 河北区 (直辖市)
120106 天津市 红桥区 (直辖市)
120107 天津市 塘沽区 (直辖市)
120108 天津市 汉沽区 (直辖市)
120109 天津市 大港区 (直辖市)
120110 天津市 东丽区 (直辖市)
120111 天津市 西青区 (直辖市)
120112 天津市 津南区 (直辖市)
120113 天津市 北辰区 (直辖市)
120221 天津市 宁河县 (直辖市)
120222 天津市 武清县 (直辖市)
120223 天津市 静海县 (直辖市)
120224 天津市 宝坻县 (直辖市)
120225 天津市 蓟县 (直辖市)
130101 河北省 石家庄市 市辖区
130102 河北省 石家庄市 长安区
130103 河北省 石家庄市 桥东区
130104 河北省 石家庄市 桥西区
130105 河北省 石家庄市 新华区
130106 河北省 石家庄市 郊区
130107 河北省 石家庄市 井陉矿区
130121 河北省 石家庄市 井陉县
130123 河北省 石家庄市 正定县
130124 河北省 石家庄市 栾城县
130125 河北省 石家庄市 行唐县
130126 河北省 石家庄市 灵寿县
130127 河北省 石家庄市 高邑县
130128 河北省 石家庄市 深泽县
130129 河北省 石家庄市 赞皇县
130130 河北省 石家庄市 无极县
130131 河北省 石家庄市 平山县
130132 河北省 石家庄市 元氏县
130133 河北省 石家庄市 赵县
130181 河北省 石家庄市 辛集市
130182 河北省 石家庄市 藁城市
130183 河北省 石家庄市 晋州市
130184 河北省 石家庄市 新乐市
130185 河北省 石家庄市 鹿泉市
130201 河北省 唐山市 市辖区
130202 河北省 唐山市 路南区
130203 河北省 唐山市 路北区
130204 河北省 唐山市 古冶区
130205 河北省 唐山市 开平区
130206 河北省 唐山市 新区
130221 河北省 唐山市 丰润县
130223 河北省 唐山市 滦县
130224 河北省 唐山市 滦南县
130225 河北省 唐山市 乐亭县
130227 河北省 唐山市 迁西县
130229 河北省 唐山市 玉田县
130230 河北省 唐山市 唐海县
130281 河北省 唐山市 遵化市
130282 河北省 唐山市 丰南市
130283 河北省 唐山市 迁安市
130301 河北省 秦皇岛市 市辖区
130302 河北省 秦皇岛市 海港区
130303 河北省 秦皇岛市 山海关区
130304 河北省 秦皇岛市 北戴河区
130321 河北省 秦皇岛市 青龙满族自治县
130322 河北省 秦皇岛市 昌黎县
130323 河北省 秦皇岛市 抚宁县
130324 河北省 秦皇岛市 卢龙县
130400 河北省 邯郸市 邯郸市
130401 河北省 邯郸市 市辖区
130402 河北省 邯郸市 邯山区
130403 河北省 邯郸市 丛台区
130404 河北省 邯郸市 复兴区
130406 河北省 邯郸市 峰峰矿区
130421 河北省 邯郸市 邯郸县
130423 河北省 邯郸市 临漳县
130424 河北省 邯郸市 成安县
130425 河北省 邯郸市 大名县
130426 河北省 邯郸市 涉县
130427 河北省 邯郸市 磁县
130428 河北省 邯郸市 肥乡县
130429 河北省 邯郸市 永年县
130430 河北省 邯郸市 邱县
130431 河北省 邯郸市 鸡泽县
130432 河北省 邯郸市 广平县
130433 河北省 邯郸市 馆陶县
130434 河北省 邯郸市 魏县
130435 河北省 邯郸市 曲周县
130481 河北省 邯郸市 武安市
130501 河北省 邢台市 市辖区
130502 河北省 邢台市 桥东区
130503 河北省 邢台市 桥西区
130521 河北省 邢台市 邢台县
130522 河北省 邢台市 临城县
130523 河北省 邢台市 内丘县
130524 河北省 邢台市 柏乡县
130525 河北省 邢台市 隆尧县
130526 河北省 邢台市 任县
130527 河北省 邢台市 南和县
130528 河北省 邢台市 宁晋县
130529 河北省 邢台市 巨鹿县
130530 河北省 邢台市 新河县
130531 河北省 邢台市 广宗县
130532 河北省 邢台市 平乡县
130533 河北省 邢台市 威县
130534 河北省 邢台市 清河县
130535 河北省 邢台市 临西县
130581 河北省 邢台市 南宫市
130582 河北省 邢台市 沙河市
130601 河北省 保定市 市辖区
130602 河北省 保定市 新市区
130603 河北省 保定市 北市区
130604 河北省 保定市 南市区
130621 河北省 保定市 满城县
130622 河北省 保定市 清苑县
130623 河北省 保定市 涞水县
130624 河北省 保定市 阜平县
130625 河北省 保定市 徐水县
130626 河北省 保定市 定兴县
130627 河北省 保定市 唐县
130628 河北省 保定市 高阳县
130629 河北省 保定市 容城县
130630 河北省 保定市 涞源县
130631 河北省 保定市 望都县
130632 河北省 保定市 安新县
130633 河北省 保定市 易县
130634 河北省 保定市 曲阳县
130635 河北省 保定市 蠡县
130636 河北省 保定市 顺平县
130637 河北省 保定市 博野县
130638 河北省 保定市 雄县
130681 河北省 保定市 涿州市
130682 河北省 保定市 定州市
130683 河北省 保定市 安国市
130684 河北省 保定市 高碑店市
130701 河北省 张家口市 市辖区
130702 河北省 张家口市 桥东区
130703 河北省 张家口市 桥西区
130705 河北省 张家口市 宣化区
130706 河北省 张家口市 下花园区
130721 河北省 张家口市 宣化县
130722 河北省 张家口市 张北县
130723 河北省 张家口市 康保县
130724 河北省 张家口市 沽源县
130725 河北省 张家口市 尚义县
130726 河北省 张家口市 蔚县
130727 河北省 张家口市 阳原县
130728 河北省 张家口市 怀安县
130729 河北省 张家口市 万全县
130730 河北省 张家口市 怀来县
130731 河北省 张家口市 涿鹿县
130732 河北省 张家口市 赤城县
130733 河北省 张家口市 崇礼县
130801 河北省 承德市 市辖区
130802 河北省 承德市 双桥区
130803 河北省 承德市 双滦区
130804 河北省 承德市 鹰手营子矿区
130821 河北省 承德市 承德县
130822 河北省 承德市 兴隆县
130823 河北省 承德市 平泉县
130824 河北省 承德市 滦平县
130825 河北省 承德市 隆化县
130826 河北省 承德市 丰宁满族自治县
130827 河北省 承德市 宽城满族自治县
130828 河北省 承德市 围场满族蒙古族自治县
130901 河北省 沧州市 市辖区
130902 河北省 沧州市 新华区
130903 河北省 沧州市 运河区
130921 河北省 沧州市 沧县
130922 河北省 沧州市 青县
130923 河北省 沧州市 东光县
130924 河北省 沧州市 海兴县
130925 河北省 沧州市 盐山县
130926 河北省 沧州市 肃宁县
130927 河北省 沧州市 南皮县
130928 河北省 沧州市 吴桥县
130929 河北省 沧州市 献县
130930 河北省 沧州市 孟村回族自治县
130981 河北省 沧州市 泊头市
130982 河北省 沧州市 任丘市
130983 河北省 沧州市 黄骅市
130984 河北省 沧州市 河间市
131001 河北省 廊坊市 市辖区
131002 河北省 廊坊市 安次区
131022 河

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值