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 + -
显示快捷键?