当前位置:首页 > JavaScript

js实现旅游结算

2026-02-03 02:44:23JavaScript

实现旅游结算功能

使用JavaScript实现旅游结算功能需要结合前端交互与后端数据处理。以下是一个基于前端实现的简化方案,包含价格计算、优惠券应用和订单生成逻辑。

价格计算逻辑

定义旅游产品的基础价格和附加服务费用计算方式:

js实现旅游结算

function calculateBasePrice(destination, duration) {
  const priceMap = {
    'beijing': 2000,
    'shanghai': 2500,
    'guangzhou': 1800
  };
  return priceMap[destination] * duration;
}

function calculateExtraServices(services) {
  return services.reduce((total, service) => {
    const fees = {
      'insurance': 100,
      'guide': 300,
      'meal': 150
    };
    return total + (fees[service] || 0);
  }, 0);
}

优惠券验证系统

实现优惠券折扣计算和验证逻辑:

function applyCoupon(total, couponCode) {
  const coupons = {
    'SUMMER10': 0.9,
    'WELCOME20': 0.8,
    'VIP15': 0.85
  };
  const discount = coupons[couponCode] || 1;
  return total * discount;
}

订单生成流程

整合所有计算步骤生成最终订单:

js实现旅游结算

function generateOrder(orderDetails) {
  const { destination, duration, services, couponCode } = orderDetails;

  const basePrice = calculateBasePrice(destination, duration);
  const extraFees = calculateExtraServices(services);
  const subtotal = basePrice + extraFees;
  const total = applyCoupon(subtotal, couponCode);

  return {
    destination,
    duration,
    services,
    basePrice,
    extraFees,
    discount: subtotal - total,
    totalPrice: total
  };
}

前端交互示例

创建简单的HTML表单和事件处理:

<form id="bookingForm">
  <select id="destination" required>
    <option value="beijing">北京</option>
    <option value="shanghai">上海</option>
    <option value="guangzhou">广州</option>
  </select>

  <input type="number" id="duration" min="1" value="3" required>

  <div class="services">
    <label><input type="checkbox" name="service" value="insurance"> 保险</label>
    <label><input type="checkbox" name="service" value="guide"> 导游</label>
    <label><input type="checkbox" name="service" value="meal"> 餐饮</label>
  </div>

  <input type="text" id="coupon" placeholder="优惠码">
  <button type="submit">计算总价</button>
</form>

<div id="orderResult"></div>

<script>
document.getElementById('bookingForm').addEventListener('submit', function(e) {
  e.preventDefault();

  const destination = document.getElementById('destination').value;
  const duration = parseInt(document.getElementById('duration').value);
  const couponCode = document.getElementById('coupon').value.trim();

  const serviceCheckboxes = document.querySelectorAll('input[name="service"]:checked');
  const services = Array.from(serviceCheckboxes).map(cb => cb.value);

  const order = generateOrder({ destination, duration, services, couponCode });
  displayOrderResult(order);
});

function displayOrderResult(order) {
  const resultDiv = document.getElementById('orderResult');
  resultDiv.innerHTML = `
    <h3>订单明细</h3>
    <p>目的地: ${order.destination}</p>
    <p>天数: ${order.duration}</p>
    <p>基础费用: ¥${order.basePrice}</p>
    <p>附加服务: ¥${order.extraFees}</p>
    <p>优惠减免: ¥${order.discount}</p>
    <h4>总计: ¥${order.totalPrice.toFixed(2)}</h4>
  `;
}
</script>

数据验证增强

添加输入验证确保数据可靠性:

function validateOrderInput(orderDetails) {
  if (!['beijing', 'shanghai', 'guangzhou'].includes(orderDetails.destination)) {
    throw new Error('无效的目的地');
  }
  if (orderDetails.duration < 1 || orderDetails.duration > 30) {
    throw new Error('天数必须在1-30之间');
  }
  // 其他验证规则...
}

完整实现建议

  1. 将价格配置数据存储在数据库或单独配置文件中
  2. 添加本地存储保存用户订单历史
  3. 实现与后端API的对接进行真实支付处理
  4. 增加多种支付方式选择逻辑
  5. 添加多语言支持适应不同地区用户

这个实现方案可根据实际需求扩展,例如添加日期选择、多人价格计算、税费计算等功能模块。对于生产环境,建议使用框架如React或Vue构建更复杂的交互界面。

标签: 旅游js
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaS…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标…