?? cvalidate.cpp
字號:
/***********************************************************************
* Module: CValidate.cpp
* Author: Administrator
* Modified: 2008年9月8日 18:50:38
* Purpose: Implementation of the class CValidate
* Comment: 合法驗(yàn)證
***********************************************************************/
#include "CValidate.h"
#include "CDate.h"
#include "CTrim.h"
#include "CConvert.h"
#include <cstdlib>
#include <cstring>
#include <string>
using namespace std;
////////////////////////////////////////////////////////////////////////
// Name: CValidate::Lengthisture(string str, int length)
// Purpose: Implementation of CValidate::Lengthisture()
// Parameters:
// - str
// - length
// Return: bool
////////////////////////////////////////////////////////////////////////
int CValidate::LengthIsTure(string& str, int length)
{
// TODO : implement
int len;
CTrim::Trim(str);//去兩邊空格
len =strlen(str.c_str());
if(!len)
return 1;//為空
else if(!(len<=length))
{
return 2;//長度過大
}
return 0;
}
////////////////////////////////////////////////////////////////////////
// Name: CValidate::IsLetterOrSpace(string str)
// Purpose: Implementation of CValidate::IsLetterOrSpace()
// Parameters:
// - str
// Return: bool
////////////////////////////////////////////////////////////////////////
int CValidate::IsLetterOrSpace(string &str)
{
// TODO : implement
CTrim::Trim(str);
int len =strlen(str.c_str());
int i =0;
if(!len)
return 1;//為空
else
{
while(i<len)
{
if(!(str[i]==32 || (str[i]>=65 && str[i]<=90) || (str[i]>=97 && str[i]<=122)))
return 2;//判斷是否為字母或者空格
i++;
}
}
return 0;//正確
}
////////////////////////////////////////////////////////////////////////
// Name: CValidate::IsTureSex(char str)
// Purpose: Implementation of CValidate::IsTureSex()
// Parameters:
// - str
// Return: bool
////////////////////////////////////////////////////////////////////////
int CValidate::IsTureSex(string& str)
{
// TODO : implement
CTrim::Trim(str);
if(strlen(str.c_str())==0)
return 1;//為空
else if(!(strcmp(str.c_str(),"m")==0 || strcmp(str.c_str(),"M")==0 ||
strcmp(str.c_str(),"F")==0 || strcmp(str.c_str(),"f")==0))
return 2;
return 0;
}
////////////////////////////////////////////////////////////////////////
// Name: CValidate::DateRangle(CDate currentDate, CDate beginDate, CDate endDate)
// Purpose: Implementation of CValidate::DateRangle()
// Parameters:
// - currentDate
// - beginDate
// - endDate
// Return: bool
////////////////////////////////////////////////////////////////////////
/*
int CValidate::Datestrcmp(CDate &dateone,CDate &datetwo)
{
string strone =CConvert::DataToStr(dateone);
string strtwo =CConvert::DataToStr(datetwo);
if(strone>strtwo)
return 1;
else if(strone<strtwo)
return -1;
else
return 0;
}
*/
///////////////////////////////////////////////////////////////////////
int CValidate::DateRangle(CDate& currentDate, CDate& beginDate, CDate& endDate)
{
//if(Datestrcmp(currentDate,beginDate)>=0 && Datestrcmp(currentDate,endDate)<=0)
//return 0;//日期在給定范圍內(nèi)
//return 1;
if(!currentDate.operator <(beginDate) && !currentDate.operator >(endDate))
return 0;
else
return 1;
}
////////////////////////////////////////////////////////////////////////
// Name: CValidate::IsDateString(string datestr)
// Purpose: Implementation of CValidate::IsDateString()
// Parameters:
// - datestr,-sign
// Return: bool
////////////////////////////////////////////////////////////////////////
int CValidate::IsDateString(string &datestr,int sign)
{
int monthlist[12]={31,28,31,30,31,30,31,31,30,31,30,31};
CTrim::MidTrim(datestr);//去掉字符串中所有空格
int len =strlen(datestr.c_str());
if(sign)//不為空,才需要進(jìn)一步一下判斷
{
if(!len)
return 1;//為空
else if(!(len<=10))
return 2;//長度過長
else if(datestr[4]!='-')
return 3;//格式錯誤
/*對如2008-8-9這類不完整的表示進(jìn)行完善為:2008-08-09*/
if(datestr[4]=='-' && datestr[6]=='-')
{
datestr.insert(5,"0");
}
len =strlen(datestr.c_str());
if(datestr[len-2] =='-' )
datestr.insert(len-1,"0");
char ystr[5];
char mstr[3];
char dstr[3];
strncpy(ystr,datestr.c_str(),4);
strncpy(mstr,datestr.c_str()+5,2);
strncpy(dstr,datestr.c_str()+8,2);
ystr[4] ='\0';
mstr[2] ='\0';
dstr[2] ='\0';
////////////////////////////////////////////////////////////////
if(!(datestr[4]=='-' && datestr[7]=='-'))
return 3;//格式錯誤
for(int i=0;i<4;i++)
{
if(!isdigit(ystr[i]))
return 4;//非數(shù)字
}
for(int j=0;j<2;j++)
{
if(!isdigit(mstr[j]))
return 4;//非數(shù)字
}
for(int k=0;k<2;k++)
{
if(!isdigit(dstr[i]))
return 4;//非數(shù)字
}
if(!(atoi(mstr)>=1 && atoi(mstr)<=12))
return 5;//月份必須在1-12之間
if(CDate::Isleapyear(atoi(ystr)))
{
monthlist[1]=29;
if( !(atoi(dstr)>=1 && atoi(dstr)<=monthlist[atoi(mstr)-1]))
return 6;//每個(gè)月的最大天數(shù)要與月份相對應(yīng)
}
else
{
if( !(atoi(dstr)>=1 && atoi(dstr)<=monthlist[atoi(mstr)-1]))
return 6;//每個(gè)月的最大天數(shù)要與月份相對應(yīng)
}
}
return 0;//正確
}
////////////////////////////////////////////////////////////////////////
// Name: CValidate::IsMobileTel(string mobilestr)
// Purpose: Implementation of CValidate::IsMobileTel()
// Parameters:
// - mobilestr
// Return: bool
////////////////////////////////////////////////////////////////////////
int CValidate::IsMobileTel(string &mobilestr,int sign)//sign為0可空
{
// TODO : implement
CTrim::MidTrim(mobilestr);//去掉字符串中所有空格
int len =strlen(mobilestr.c_str());
if(sign)
{
//if(!len)
// return 1;//為空
if(!(len ==11 || len ==12))
return 1;//長度不符合要求
for(int i=0;i<len;i++)
{
if(!isdigit(mobilestr[i]))
return 2;//是否由數(shù)字組成
}
if(len==12)
{
if(mobilestr[0]!='0')
return 3;//號碼12位時(shí),必須以0開頭
}
}
return 0;
}
////////////////////////////////////////////////////////////////////////
// Name: CValidate::IsDataRangle(double data, double begin, double end)
// Purpose: Implementation of CValidate::IsDataRangle()
// Parameters:
// - data
// - begin
// - end
// Return: bool
////////////////////////////////////////////////////////////////////////
int CValidate::IsDataRangle(double data, double begin, double end)
{
// TODO : implement
if(!(data>=begin && data<=end))
return 1;
return 0;
}
////////////////////////////////////////////////////////////////////////
// Name: CValidate::IsDataRangle(int data, int begin, int end)
// Purpose: Implementation of CValidate::IsDataRangle()
// Parameters:
// - data
// - begin
// - end
// Return: bool
////////////////////////////////////////////////////////////////////////
int CValidate::IsDataRangle(int data, int begin, int end)
{
// TODO : implement
if(!(data>=begin && data<=end))
return 1;
return 0;
}
//////////////////////////////////////////////////////////////////////
int CValidate::IsSelectRight(char *str,int select)//菜單選擇是否越界
{
CTrim::MidTrim(str);
int len =strlen(str);
if(!len)
return 1;//為空
else
{
for(int i=0;i<len;i++)
{
if(!(str[i]>='0' && str[i]<='9'))
return 2;//輸入非法字符
}
if(!(atoi(str)>=0 && atoi(str)<=select-1))
return 3;//超出范圍
}
return 0;//正確
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -