c++ builder 身份核查软件 - 无幻の编程 - 对于一个初学者来说,野心也是必须的...

c++ builder 身份核查软件

无幻 posted @ 2009年3月29日 10:10 in C++编程 with tags bcb c++ 身份 , 1314 阅读

开发身份证识别的应用程序

    设计一个18位身份证号码的识别程序,显示出身份证归属地、身份证中的出生年月以及性别信息。程序中需要增加身份证的有效性验证,判断身份证的合法性。

图片是从网上截下来的,编程工具利用c++ builder6 ,目前只完成18位身份证号码的核查功能。作为实验课的作品,现上传上来。

代码如下,部分直接设定属性或事件的,请参照代码。

 

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        AnsiString a,b,c,d,f,i,j;
        String id;int sum=0;
        id=Edit1->Text;          ;
        int w[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
        char y[11]={'1','0','X','9','8','7','6','5','4','3','2'};

        if(id.Length()!=18)
        {
        ShowMessage("输入的身份证号长度不对!");
        return;
        }
       
    for(int k=0;k<17;k++)
        {
                sum+=StrToInt(id[k+1])*w[k];
        }
        if (id.Length()==18 && id[18]==y[sum%11])
        {
                Edit1->SelStart=0;
                Edit1->SelLength=2;
                j=Edit1->SelText;
                switch(StrToInt(j))
                {
                        case 11:i="北京市";break;
                        case 12:i="天津市";break;
                        case 13:i="河北省";break;
                        case 14:i="山西省";break;
                        case 15:i="内蒙古自治区";break;
                        case 21:i="辽宁省";break;
                        case 22:i="吉林省";break;
                        case 23:i="黑龙江省";break;
                        case 31:i="上海市";break;
                        case 32:i="江苏省";break;
                        case 33:i="浙江省";break;
                        case 34:i="安徽省";break;
                        case 35:i="福建省";break;
                        case 36:i="江西省";break;
                        case 37:i="山东省";break;
                        case 41:i="河南省";break;
                        case 42:i="湖北省";break;
                        case 43:i="湖南省";break;
                        case 44:i="广东省";break;
                        case 45:i="广西壮族自治区";break;
                        case 46:i="海南省";break;
                        case 50:i="重庆市";break;
                        case 51:i="四川省";break;
                        case 52:i="贵州省";break;
                        case 53:i="云南省";break;
                        case 54:i="西藏自治区";break;
                        case 61:i="陕西省";break;
                        case 62:i="甘肃省";break;
                        case 63:i="青海省";break;
                        case 64:i="宁夏回族自治区";break;
                        case 65:i="新疆维吾尔自治区";break;
                        case 71:i="台湾省";break;
                        case 81:i="香港特别行政区";break;
                        case 82:i="澳门特别行政区";break;
                        default:i="未知地区";break;
                }

                Edit1->SelStart=16;
                Edit1->SelLength=1;
                d=Edit1->SelText;
                if((StrToInt(d)%2)==1)
                {
                        f="男";
                }
                else
                {
                        f="女";
                }

                Edit1->SelStart=6;
                Edit1->SelLength=4;
                a=Edit1->SelText;
                Edit1->SelStart=10;
                Edit1->SelLength=2;
                b=Edit1->SelText;
                Edit1->SelStart=12;
                Edit1->SelLength=2;
                c=Edit1->SelText;
                Label1->Caption="您是"+i+"人"+a+"年"+b+"月"+c+"日生,"+f+"性!";
                return;
        }
        else
                ShowMessage("输入的身份证号不正确!");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
   if(Key==13)
   {
       Button1Click(Sender);
       return;
   }
   if(!(Key>='0' && Key<='9' || Key==8 || Key=='x' || Key==13) ) //允许输入0~9的数字,退格键,X字符和回车键
   {
       ShowMessage("只能输入数字");
       Key = 0;
   }
   String   S=Edit1->Text;
       if(S.Length()<17)        //1~17位身份证号码不允许输入X字符
       {
          if(Key=='x')
          {
               ShowMessage("只能输入数字");
               Key = 0;
          }
       }
   


}
//---------------------------------------------------------------------------
 

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee