软件测试——电话账单收费

来源:互联网 发布:elasticsearch mysql 编辑:程序博客网 时间:2024/06/11 02:06

对电话账单来说,春季和秋季的标准时间与夏时制时间的转换会带来有意思的问题。春季,这种转换发生在(3 月末,4 月初的)星期日凌晨 2:00 时,这时时钟要设置为凌晨 3:00 时。对称的转换通常发生在 10 月最后一个星期日,时钟要从 2:59:59 调回到 2:00:00。

 

请为采用以下费率计算用户的每月通话费:

 

(1)通话时间<=20 分钟时,每分钟收费 0.05 美元,通话时间不到 1 分钟时按 1 分钟计算。

 

(2)通话时间>20 分钟时,收费 1.00 美元,外加每分钟 0.10 美元,超过 20 分钟的部分,不到 1 分钟时按 1 分钟计算。假设:

 

(1)通话计费时间从被叫方应答开始计算,到呼叫方挂机时结束。(2)通话时间的秒数四舍五入到分钟。

 

(3)没有超过 20 个小时的通话。

 

实现代码如下:

import java.io.*;
import java.text.DecimalFormat;
public class panduan{
public static int testweek(int Year,int Month,int Day) {
//利用公式判断某年某月某日为星期几
int iweek = 0;
int y=0,c=0,m=0,d=0;

if(Month == 1 || Month == 2) {
c=(Year-1)/100;
y=(Year-1)%100;
m=Month+12;
d=Day;
}

else {
c=Year/100;
y=Year%100;
m=Month;
d=Day;
}
        
iweek=y+y/4+c/4-2*c+26*(m+1)/10+d-1;
iweek=iweek>=0?(iweek%7):(iweek%7+7);
if(iweek == 0) {
iweek=7;
}
return iweek;
}

//判断日期是否为特殊时间段,并对通话时间进行处理
public static long testdate1(int Month,int Day,long Min) {
//boolean flag=false;
if(Month==3||Month==4) {
if(Day+7>31||Day+1<8) {
//判断是否为三月末、四月初的星期日
  Min=Min-60;  
}
}
return Min;
}

public static long testdate2(int Month,int Day,long Min){

if(Month==10) {
if(Day>=24&&Day<=30) {
//判断是否为10月最后一个星期日
  Min=Min+60;
}
}

return Min;
}
}



import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.Date;
public class sy {
  public static void main(String [] args) throws ParseException { 
        Scanner sc = new Scanner(System.in); 
        System.out.println("请输入开始年:"); 
        int Byear = sc.nextInt(); 
        System.out.println("请输入开始月:"); 
        int Bmonth = sc.nextInt(); 
        System.out.println("请输入开始日:"); 
        int Bday = sc.nextInt();
        //后续判断需要用到“小时”,此处单独输入,下同
        System.out.println("请输入开始时:"); 
        int Bhour = sc.nextInt();
        System.out.println("请输入开始时分秒:"); 
        String Btime = sc.next(); 
       
       
        System.out.println("请输入截止日:"); 
        int Oday = sc.nextInt(); 
        System.out.println("请输入截止时:"); 
        int Ohour = sc.nextInt();
        System.out.println("请输入截止时分秒:"); 
        String Otime = sc.next(); 
       
        
        double money;
        
        //计算开始时间与截止时间的差值
        SimpleDateFormat dfs = new SimpleDateFormat("HH:mm:ss");
        
        Date begin=dfs.parse(Btime);
        Date end = dfs.parse(Otime);
        long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒
        long min=between/60;
        //不足一分钟的按一分钟计算
        if(between%60>0){
        min=min+1;
        }
         
        //System.out.print(min);
        
        int week;
        //调用testweek函数判断为星期几
        week=panduan.testweek(Byear,Bmonth,Bday);
        //当前时间为星期天时,考虑特殊情况
        if(week==7){
        if(Bhour<2||Ohour>=3){
         /*当时间在2:00到3:00转换的区域内时,
         * 调用testdate1函数进一步判断是否为转换时间,
         * 并对通话时间进行相应处理
         */
        min=panduan.testdate1(Bmonth,Bday,min);
        }
        if(Bhour<=2||Ohour>=2){
         /*当时间在2:59:59到2:00转换的区域内时,
         * 调用teatdate2函数进一步判断是否为转换时间,
         * 并对通话时间进行相应处理
         */
        min=panduan.testdate2(Bmonth,Bday,min);
        }
       //此处输出一下计算出来的时间,看是否正确
       // System.out.println("时间"+min);
        
        if(min<=20) {
//当通话时间不超过20分钟时,计算费用
money=0.05*min;
}
else {
//当通话时间超过20分钟时,计算费用
money=1+0.1*min;


}
//将double类型的money的值保留小数点后三位输出
DecimalFormat df = new DecimalFormat("0.000");
String mmoney = df.format(money);
System.out.printf("电话费用一共为:"+mmoney);
}
        
  }


}


总结:

当通话时期为10月最后一个星期日时,如果通话开始时间为2:20,截止时间为2:30,不能确定通话时长是10分钟还是70分钟,程序中直接作70分钟处理。

后续仍需改进。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大门对大门怎么办?巧用天官赐福 委托书公司名称打错了怎么办 招行ubank不对账怎么办 信贷公司利息高不合理怎么办 衣服上的logo掉怎么办 ui设计师接不到私活怎么办 微信打开很慢怎么办 小泰迪感冒加身上结痂怎么办 法斗眼睛肿了怎么办 地图鱼身上有白点怎么办 人被广告牌砸了怎么办 小米手机出现繁体中文英文怎么办 雅思考试把姓名写错了怎么办 房贷的流水账假怎么办 报到证报道期限过期了怎么办 注销公司公章丢了怎么办 家里的猫太调皮怎么办 孩子纹身了我该怎么办 46天婴儿感冒了怎么办 狗病了不吃东西怎么办 幼儿急诊见风了怎么办 哺乳期乳房有硬块而且疼怎么办 哺乳期乳头破裂乳房似针扎怎么办 回奶胀痛的厉害怎么办 淡水龟的壳变软了怎么办 棕色的泰迪变白怎么办 大班教案泥石流来了怎么办 鸟类的嘴巴坏了怎么办 四川麦蚊子咬了怎么办 脸上被晒脱皮了怎么办 额头被晒脱皮了怎么办 脸黑一块白一块怎么办 小乌龟的壳软了怎么办 把田螺后面吃了怎么办 微生物生态菌群异常怎么办 怀孕初期感染了动物病毒怎么办? 金龙和银龙打架怎么办 海水缸盐度高了怎么办 洗空调洗坏了怎么办 老师是条青花鱼怎么办 吃了带鱼和南瓜怎么办