test.cpp

来自「c++实现的对电话进行计费的系统」· C++ 代码 · 共 102 行

CPP
102
字号
//****************************
//****     test.cpp      *****
//****************************
#include"Date.h"
#include<iostream.h>

void charge(DateTime startTime,DateTime endTime){

	int minusTime;
	float charge;
	
	if (endTime.year-startTime.year > 1){
		cout<<"输入有误!1"<<endl;
		return;
	}
	else if(endTime.month-startTime.month > 1){
		cout<<"输入有误!2"<<endl;
		return;
	}
	else if(endTime.date-startTime.date >1){
		cout<<"输入有误!3"<<endl;
		return;
	}
	else if((endTime.date-startTime.date == 1 || endTime.date-startTime.date < 0)&&
		    endTime.hour+24-startTime.hour+(endTime.minute-startTime.minute)/60+(endTime.second-startTime.second)/3600 > 20){
		cout<<"输入有误!4"<<endl;
		return;
	}
	else if(endTime.date-startTime.date == 0 &&
		    endTime.hour-startTime.hour+(endTime.minute-startTime.minute)/60+(endTime.second-startTime.second)/3600 > 20){
		cout<<"输入有误!5"<<endl;
		return;
	}


	//因为没有超过20小时的通话,所以如果开始和结束时间的年月日不同计算
	//时只需将小时之差加上24即可
	if (endTime.year!=startTime.year || endTime.month!=startTime.month
		||endTime.date!=startTime.date)
		minusTime=(endTime.hour-startTime.hour+24)*3600+
				  (endTime.minute-startTime.minute)*60+
	              (endTime.second-startTime.second);
		
	else minusTime=(endTime.hour-startTime.hour)*3600+
				  (endTime.minute-startTime.minute)*60+
	              (endTime.second-startTime.second);	//前后时间相减以秒计算

	if ((startTime.month == 4 && startTime.date == 1 && startTime.hour<2 && endTime.hour>=3)||
		(startTime.month == 3 && startTime.date == 31 && endTime.month ==4 && endTime.date ==1 && endTime.hour>=3))
		minusTime=minusTime-3600;	//定于4月1日凌晨两点进行夏时制转换,如果通话时间在这个时段,通话时间减去一小时即3600秒
	
	if (startTime.month == 10 && startTime.date == 1 && endTime.month == 10 && endTime.date == 1){
		if (((startTime.hour==2 && endTime.hour==2)&&((endTime.minute<startTime.minute) || 
			(endTime.minute == startTime.minute && endTime.second < startTime.second) ))||
			(startTime.hour<=2 && endTime.hour>=3))
			minusTime=minusTime+3600;
	}
	else if(startTime.month == 9 && startTime.date == 30 && endTime.month == 10 
			&& endTime.date == 1 && endTime.hour>=3)
			minusTime=minusTime+3600;//10月一日凌晨三点进行冬时制转换,通话时间在这个时段,通话时间加一个小时

	if (minusTime < 0){
		cout<<"通话时长小于0,非法!";
		return;
	}

	if (minusTime%60 != 0)
		minusTime=minusTime/60+1;//不足一分钟按一分钟算
	else minusTime=minusTime/60;

	if (minusTime<=20)
		charge=minusTime*0.05;
	else charge=1+(minusTime-20)*0.1;

	cout<<"开始时间为:"<<startTime.year<<"年"
						<<startTime.month<<"月"
						<<startTime.date<<"日"
						<<startTime.hour<<"时"
						<<startTime.minute<<"分"
						<<startTime.second<<"秒"
						<<endl;
	cout<<"结束时间为:"<<endTime.year<<"年"
						<<endTime.month<<"月"
						<<endTime.date<<"日"
						<<endTime.hour<<"时"
						<<endTime.minute<<"分"
						<<endTime.second<<"秒"
						<<endl;
	cout<<"通话时长为:"<<minusTime<<"分钟"<<endl;

	cout<<"费用为:"<<charge<<"$"<<endl;


}

void main(){
	while(true){
	DateTime startTime;
	DateTime endTime;
	charge(startTime,endTime);
	}
}

⌨️ 快捷键说明

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