⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvalidate.cpp

📁 软件的名称:AA制用餐管理系统 软件的功能:管理消费中产生的费用
💻 CPP
字号:
/***********************************************************************
 * Module:  CValidate.cpp
 * Author:  Administrator
 * Modified: 2008年9月8日 18:50:38
 * Purpose: Implementation of the class CValidate
 * Comment: 合法验证
 ***********************************************************************/

#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;//日期在给定范围内
   //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)//不为空,才需要进一步一下判断
	{
		if(!len)
			return 1;//为空
		
		else if(!(len<=10))
			return 2;//长度过长
		else if(datestr[4]!='-')
			return 3;//格式错误
		/*对如2008-8-9这类不完整的表示进行完善为: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;//非数字
		}
		for(int j=0;j<2;j++)
		{
			if(!isdigit(mstr[j]))
				return 4;//非数字
		}
		for(int k=0;k<2;k++)
		{
			if(!isdigit(dstr[i]))
				return 4;//非数字
		}
		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;//每个月的最大天数要与月份相对应
		}
		else
		{
			if( !(atoi(dstr)>=1 && atoi(dstr)<=monthlist[atoi(mstr)-1])) 
				return 6;//每个月的最大天数要与月份相对应
		}
	}
	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;//是否由数字组成
		}
		if(len==12)
		{
			if(mobilestr[0]!='0')
				return 3;//号码12位时,必须以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;//正确
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -