sysutil.h
来自「使用C++Builder开发的常住人口管理系统」· C头文件 代码 · 共 101 行
H
101 行
#ifndef SYSUTIL_H
#define SYSUTIL_H
#include <cstdio>
#include <vcl.h>
//#include "dstring.h"
using namespace std;
class SysUtil
{
public:
static bool JudgeSfzID(AnsiString SfzID); //身份证的识别
static bool IsNumberString(AnsiString numstring);
static bool createFile(char *filename);
};
bool SysUtil::createFile(char *filename)
{
FILE *fp;
if((fp=fopen(filename,"rb+"))==NULL) //不存在则新建一个
{
if((fp=fopen(filename,"wb+"))==NULL)
{ ShowMessage("创建文件失败!!");
return false;
}
}
fclose(fp);
return true;
}
bool SysUtil::IsNumberString(AnsiString numstring)
{
bool isNumber=true;
for(int i=0;i<numstring.Length();i++)
{
if((numstring.SubString(i,1)>'9')||(numstring.SubString(i,1)<'0'))
{
isNumber=false; //存在非法字符,则isNumber设为false
break;
}
}
if (numstring.IsEmpty())
{
isNumber=false;
}
return isNumber;
}
bool SysUtil::JudgeSfzID(AnsiString SfzID)
{
bool Error=false;
switch (SfzID.Length())
{
case 15: //15位的身份证号,应为全数字
for(int i=1;i<=15;i++)
{
if((SfzID.SubString(i,1)>'9')||(SfzID.SubString(i,1)<'0'))
{
Error=true; //存在非法字符,则Error设为true
break;
}
}
break;
case 18: // 18位的身份证号,前17位应为数字
for(int i=1;i<=17;i++)
{
if((SfzID.SubString(i,1)>'9')||(SfzID.SubString(i,1)<'0'))
{
Error=true; //存在非法字符,则Error设为true
break;
}
}
//最后一位可能是英文,但只可能是‘x’
if((SfzID.SubString(18,1)>'9')||(SfzID.SubString(18,1)<'0'))
if(SfzID.SubString(18,1)!='x')
Error=true;
break;
default: //长度不符
ShowMessage("身份证号码长度不符!!");
return false;
}
//Error为true,则存在非法字符
if(Error) ShowMessage("身份证号存在非法字符!!");
else
{
//ShowMessage("身份证号合法!!");
return true;
}
return false;
}
//-----------------
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?