C++ 入门项目 Demo 点餐系统

写了一个C++的入门项目点餐系统,用到的技能包括
正则表达式校验(int,double,数字是否在允许的输入范围)
vector (取值,存值)
map(取值,存值)
set(取值,存值)
time.h(time_t的日期时间操作)
字符串的操作(string转成double,int,char)
class 和 struct的一般用法(例如重载操作运算符)
标准库的一些用法,例如输入输出等等

操作环境是 centOS(linux)

想要下载代码可以到GitHub

https://github.com/howard789/OrderDishes

 

bool RegUtil::isValid(char *str, char *patterm)
{
	char ebuff[256];
	regex_t reg;
	int cflag = REG_EXTENDED | REG_NEWLINE | REG_NOSUB;
	int status = 0;
	status = regcomp(&reg, patterm, cflag);

	if (status != 0) {
		regerror(status, &reg, ebuff, 256);
		cout << ebuff << endl;
		return false;
	}
	status = regexec(&reg, str, 0, NULL, 0);
	if (status == 0) {
		return true;
	}
	else {
		return false;
	}
}


bool RegUtil::isPositiveDouble(char *str)
{
	char *patterm = "^[+]?[0-9]+[.]?[0-9]+$";
	return isValid(str, patterm);
}

bool RegUtil::isPositiveDouble(string str) {
	return isPositiveDouble(StringUtils::stringToChar(str));
}

double RegUtil::returnDoubleIfValid(string num, double minNum, double maxNum)
{
	string temp;
	if (num.at(0) == '-') {
		temp = num.substr(1, num.length());
	}
	else {
		temp = num;
	}
	bool validDouble = isPositiveDouble(temp);
	double result;
	if (validDouble) 
	{
		result= StringUtils::stringToDouble(num);
		if (result ==0) {
			cout << "can not be zero 不可为零!" << endl;
			return 0;
		}
		if (result > maxNum&&maxNum != -1) {
			cout << "bigger than maxNum allowed 输入的数字超过最大值" << endl;
			return 0;
		}
		if (result < minNum&&minNum != -1) {
			cout << "smaller than minNum allowed 输入的数字小于最小值" << endl;
			return 0;
		}
		return result;
	}
	else 
	{
		cout<<"illegal input 输入的字符不合法"<<endl;
		return 0;
	}
};

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值