JS-面向对象-车辆租赁系统


    <script>
        // 面向对象素例:用面向对象做一个车辆租赁管理系统
        // 1.把所有车的公共属性提取处理,作为--个车辆的公共类,
        // 2.有不同类型的车辆,每种车辆应是由车辆分类的类产生的,不同类型的车辆应该继承自车辆公共类型。VIP的车辆类型和普通车辆类型
        // 3. 每辆车有company,id(车编号),price(价格),day(租车天数),每辆有计算租车价格的方法,租车成功的方法,还车的方法,
        // 4. VIP车辆是100元1天,普通车辆是80元1天

        //创建一个cars类 公共类
        function ClassCar(company, id, price) {
            this.company = company;
            this.id = id;
            this.price = price;
            this.day = 0;//租车的时候穿天数
            //看车是否租出 false 是没有租出
            this.isOut = false;

        }
        //创建租车的方法 (公用的方法放在原型省空间)
        ClassCar.prototype.rent = function (day) {
            this.isOut = true;
            this.day = day;
            alert("租车成功,车辆编号是" + this.id + ",您租车" + day + "天,总价是:" + this.day * this.price)

        }
        //创建还车的方法 (看输入对象的isOut属性)
        ClassCar.prototype.back = function () {
            if (this.isOut) {
                this.isOut = false;
                alert("车辆编号是" + this.id + "还车成功")
            } else {
                alert("该车辆已归还");
            }
        }
        //创建vip类
        function VipCar(id, company) { //根据ID来判断车
            //继承公共类的属性
            ClassCar.call(this, company, id, 100)
            this.type = "vip";
            //原型属性不能直接继承,用浅拷贝
            VipCar.prototype.rent = ClassCar.prototype.rent;
            VipCar.prototype.back = ClassCar.prototype.back;


        }
        //创建普通类
        function NormalCar(id, company) {
            //继承公共类的属性
            ClassCar.call(this, company, id, 80)
            this.type = "normal"
            //租车的原型
            NormalCar.prototype.rent = ClassCar.prototype.rent;
            //还车的原型
            NormalCar.prototype.back = ClassCar.prototype.back;

        }
        //创建5辆车数组
        var cars = [
            new VipCar(1000, "a"),
            new VipCar(1001, "a"),
            new VipCar(1002, "a"),
            new NormalCar(2001, "c"),
            new NormalCar(2002, "c"),
        ]
        //提示菜单
        var out = true;
        while (out) {
            var type = +prompt("1.租车 2.还车 3.退出");
            //1.租车
            if (type === 1) {
                //提示客户是vip还是normal 
                var carType = prompt("请输入租车的类型:vip或normal");
                var day = +prompt("请输入你想要租车的天数");
                //遍历cars数组 如果cars数组中的type属性 = 输入的 carType 并且 车子并没有租出,则吧这辆车子的信息输出
                var car = "";
                for (var i = 0; i < cars.length; i++) {
                    if (cars[i].type === carType && !cars[i].isOut) {
                        car = cars[i];
                        break;
                    }
                }
                //如果找到car  则询问用户是否确认租这辆车
                if (car) {
                    // confirm js自带的确认框,确定返回true,取消返回false
                    var ok = confirm("确定租用这辆车?");
                    if (ok) {
                        //如果想要租车 则调用租车的方法
                        car.rent(day);
                    }
                } else {
                    alert("没有找到符合条件的车辆");
                }
            }
            //2.还车  需要用汽车的编号去还对应的车辆
            else if (type === 2) {
                var carId = +prompt("请输入车辆编号");
                //车辆变量
                var car = "";
                for (var i = 0; i < cars.length; i++) {
                    if (cars[i].id === carId) {
                        car = cars[i];
                        break;
                    }
                }
                if (car) {
                    car.back();
                } else {
                    alert("没有找到符合条件的车辆");
                }
            }
            else if (type === 3) {
                out = false;
            }
        }

    </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值