Matlab学习:停车场计费

 设计实现停车场计费程序;

(1)计算出从车辆入场时间到离场时间之间的时间差,传入的时间格式(如:2023-10-01 16:10:32),计算出的时间是以小时为单位。

(2)根据步骤1计算出的时间来划分收费标准。如果连续停车时长大于24*20小时(20天)则采用按月收费标准(1000元/月),避免按天收费来造成用户负担更多的停车费用;如果连续停车时长>=24小时且<24*20小时,则按天收费(50元/天);如果连续停车时长>=12小时并且小于24小时的话,那么按小时收费标准收费;如果停车时长小于等于12小时,那么按照以下方式来进行处理:

①判断停车的时间是否在白天的07:00-19:00之间。如果在这个时间范围内:再判断这个停车时长是否在半小时以内,半小时免费停车;超过半小时而<=10小时,按3元/小时收费;如果时长大于10小时且小于等于12小时,则按白天12小时停车(白天停车30元/车)。

②判断停车时间是否在晚上19:00到第二天07:00之间。如果在这个时间范围内:判断夜晚停车时长是否在半小时以内,半小时免费停车;超过半小时而<=4小时,按2.5元/小时收费;大于4小时且小于等于12小时,则按夜晚12小时收费标准收费(夜晚停车20元/车)。

③ 如果停车时间是在横跨白天和夜晚停车,但停车时长小于等于12小时的话,那么按昼夜交替停车标准来进行收费。

function  parkingFee = parking_fee(enterTime, exitTime)
    % 将输入的时间字符串转换为Matlab中的日期时间格式
    enterDateTime = datetime(enterTime, 'InputFormat', 'yyyy-MM-dd HH:mm:ss');
    exitDateTime = datetime(exitTime, 'InputFormat', 'yyyy-MM-dd HH:mm:ss');
    
    % 计算停车时长,单位为小时
    parkingDuration = hours(exitDateTime - enterDateTime);
    
    % 判断停车时长并计算停车费用
    if parkingDuration > 24*20
        % 按月收费标准
        parkingFee = 1000 * ceil(parkingDuration / (24*30));
    elseif parkingDuration >= 24 && parkingDuration <= 24*20
        % 按天收费标准
        parkingFee = 50 * ceil(parkingDuration / 24);
    elseif parkingDuration >= 12 && parkingDuration < 24
        % 按小时收费标准
        parkingFee = 10 * ceil(parkingDuration);
    elseif parkingDuration <= 12
        % 判断停车时间段
        enterHour = hour(enterDateTime);
        exitHour = hour(exitDateTime);
        
        % 白天停车
        if enterHour >= 7 && exitHour <= 19
            if parkingDuration <= 0.5
                % 半小时免费停车
                parkingFee = 0;
            elseif parkingDuration <= 10
                % 按3元/小时收费
                parkingFee = 3 * ceil(parkingDuration);
            else
                % 白天12小时停车
                parkingFee = 30;
            end
        % 夜晚停车
        elseif (enterHour >= 19 && exitHour <= 24) || (enterHour >= 0 && exitHour <= 7)
            if parkingDuration <= 0.5
                % 半小时免费停车
                parkingFee = 0;
            elseif parkingDuration <= 4
                % 按2.5元/小时收费
                parkingFee = 2.5 * ceil(parkingDuration);
            else
                % 夜晚12小时停车
                parkingFee = 20;
            end
        % 昼夜交替停车
        else
            % 计算白天停车时长和夜晚停车时长
            dayParkingDuration = hours(datetime(enterDateTime.Year, enterDateTime.Month, enterDateTime.Day, 19, 0, 0) - enterDateTime);
            nightParkingDuration = parkingDuration - dayParkingDuration;
            
            % 按昼夜交替停车标准收费
            parkingFee = 3 * ceil(dayParkingDuration) + 2.5 * ceil(nightParkingDuration);
        end
    end
end

测试结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晞微

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值