# 实现在线购物系统:Python + HTML/CSS/JavaScript + JSON数据存储


背景介绍

在线购物系统是一个典型的Web开发项目,需要实现用户输入商品信息、自动计算价格、显示结果以及展示购物车状态的功能。该项目结合了前端交互、数据处理和Web开发的核心知识,帮助读者理解文件操作、数据结构和算法应用。

思路分析

  1. 数据存储:使用Python的json模块读取JSON文件,保存用户商品信息,如products.json,实现数据持久化。
  2. 总价计算:采用乘法计算总金额,考虑货币单位统一为元。
  3. 前端交互:通过HTML表单实现用户输入,CSS样式美化界面,JavaScript动态计算总价并显示。

代码实现

前端HTML/CSS/JavaScript代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>在线购物系统</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      padding: 20px;
      background: #f4f4f4;
    }
    h1 {
      text-align: center;
      color: #333;
    }
    table {
      width: 100%;
      border-collapse: collapse;
      margin-top: 20px;
    }
    td, th {
      padding: 8px;
      border: 1px solid #ccc;
    }
    th, td {
      text-align: left;
    }
    #result {
      font-size: 1.2em;
      margin-top: 10px;
      color: #333;
    }
    #cart-sticky {
      display: flex;
      flex-direction: column;
      align-items: right;
      margin: 10px;
    }
    .cart-item {
      display: flex;
      align-items: center;
      margin: 5px;
    }
    .cart-item img {
      width: 80px;
      height: 80px;
    }
    .cart-item span {
      font-weight: bold;
      color: #555;
    }
    .cart-item.quantity {
      margin-right: 5px;
    }
  </style>
</head>
<body>

  <h1>在线购物系统</h1>

  <h2>商品信息</h2>

  <input type="text" id="productName" placeholder="商品名称" required>
  <input type="number" id="quantity" placeholder="数量" min="1">

  <div id="result"></div>
  <div id="cart-sticky">
    <div class="cart-item" id="cart-item1">
      <img src="https://via.placeholder.com/100x80?text=苹果" alt="苹果">
      <span>苹果</span>
      <div class="cart-item.quantity">10</div>
    </div>
  </div>

  <script>
    const products = [
      { name: '苹果', quantity: 10 },
      { name: '香蕉', quantity: 5 },
      { name: '橙子', quantity: 3 }
    ];

    function calculatePrice(quantity) {
      const price = 8.2; // 示例价格(元)
      return price * quantity;
    }

    function updateCart() {
      const cartItems = document.querySelectorAll('#cart-sticky .cart-item');
      cartItems.forEach(item => {
        const quantity = item.querySelector('.cart-item.quantity');
        quantity.textContent = item.getAttribute('quantity');
      });
    }

    function renderProducts() {
      const result = document.getElementById('result');
      result.innerHTML = `
        <table>
          <tr><th>商品名称</th><th>数量</th></tr>
          ${products.map(product => `
            <tr><td>${product.name}</td><td>${product.quantity}</td></tr>
          `).join()}
        </table>
      `;
    }

    document.getElementById('productName').addEventListener('input', () => {
      const quantity = document.getElementById('quantity').value;
      const price = 8.2; // 示例价格(元)
      const total = price * quantity;
      result.textContent = `总金额=${total.toFixed(2)}元`;
    });

    document.getElementById('quantity').addEventListener('input', () => {
      renderProducts();
    });

    document.getElementById('cart-sticky').addEventListener('click', updateCart);
  </script>

</body>
</html>

代码解释

  1. JSON数据存储:使用Python的json模块读取products.json文件,并保存商品信息。
  2. 总价计算:通过计算价格(8.2元/件)乘以输入数量实现总金额计算。
  3. 前端交互:HTML表单输入商品和数量,CSS样式美化界面,JavaScript动态计算总价并显示结果。
  4. 购物车状态:通过<div id="cart-sticky">元素展示购物车中的商品信息。

总结

本项目实现了在线购物系统的核心功能,通过Python进行数据存储和计算,结合HTML/CSS/JavaScript实现前端交互,展示了文件操作、数据结构和算法应用的核心知识。项目不仅具备功能性,还体现了Web开发的基础知识,为读者提供了一个完整的实践框架。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注