学-海无涯- 2024-06-17 21:38 采纳率: 76%
浏览 1

汽车租赁管理数据库系统,求每日租金的存储过程

汽车表里有车牌号,日租租金和月租租金,车牌号为主键。
租赁表里有车牌号,租赁日期,租赁天数,还车日期,车牌号为外键。
要求建一个存储过程,计算当天租赁表中所有租赁合同产生的租金。提示:若租赁天数小于三十天则按照日租租金计算每天的费用,若租赁天数大于等于三十天,则按照月租租金计算每天的费用。若当日日期在租赁合同的租赁日期和还车日期之间,则计算当日该合同产生的租金。

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-06-17 21:38
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据你的需求,下面是一个MySQL存储过程的示例代码,用于计算每日的租金。这个存储过程会根据租赁表中的记录,按照你提供的规则计算租金。

    DELIMITER //
    
    CREATE PROCEDURE CalculateDailyRent()
    BEGIN
        -- 声明一个变量来存储总租金
        DECLARE total_rent DECIMAL(10, 2);
    
        -- 初始化总租金
        SET total_rent = 0.00;
    
        -- 遍历租赁表中的每条记录
        DECLARE done INT DEFAULT FALSE;
        DECLARE cur_rental CURSOR FOR 
            SELECT 
                r.plate_number,
                c.rent_daily AS daily_rent,
                c.rent_monthly AS monthly_rent,
                r.rental_date,
                r.return_date,
                r.rental_days
            FROM 
                rent_table r
            INNER JOIN 
                car_table c ON r.plate_number = c.plate_number
            WHERE 
                r.rental_date <= CURDATE() AND 
                r.return_date >= CURDATE();
    
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
        OPEN cur_rental;
    
        read_loop: LOOP
            FETCH cur_rental INTO 
                @plate_number,
                @daily_rent,
                @monthly_rent,
                @rental_date,
                @return_date,
                @rental_days;
    
            IF done THEN
                LEAVE read_loop;
            END IF;
    
            -- 根据租赁天数计算租金
            IF @rental_days < 30 THEN
                SET total_rent = total_rent + (@daily_rent * 1);
            ELSE
                SET total_rent = total_rent + (@monthly_rent / 30);
            END IF;
        END LOOP;
    
        CLOSE cur_rental;
    
        -- 输出总租金
        SELECT total_rent AS 'Total Daily Rent';
    END //
    
    DELIMITER ;
    

    这个存储过程首先声明了一个变量total_rent来存储总租金,然后通过一个游标遍历租赁表中所有符合条件的记录。对于每条记录,根据租赁天数是小于30天还是大于等于30天,来计算每天的租金,并累加到total_rent中。最后,存储过程输出总租金。

    请注意,这个存储过程假设rent_table是租赁表的名称,car_table是汽车表的名称,并且它们之间通过车牌号plate_number关联。同时,这个存储过程使用了CURDATE()函数来获取当前日期,确保只有当日的租赁合同被计算租金。

    在实际使用中,你可能需要根据你的数据库表的实际名称和字段进行相应的调整。此外,这个存储过程没有考虑数据库的并发访问和事务处理,如果需要处理这些高级特性,你可能需要进一步的修改。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月17日

悬赏问题

  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环