您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Python购物实例分析
## 1. 前言
在当今数字化时代,电子商务已成为人们日常生活中不可或缺的一部分。Python作为一门功能强大且易于学习的编程语言,被广泛应用于电商系统开发、数据分析以及自动化流程中。本文将深入分析一个基于Python的购物系统实例,探讨其核心功能实现、代码结构以及优化方向。
## 2. 系统架构设计
### 2.1 基础架构
```python
class ShoppingSystem:
def __init__(self):
self.products = [] # 商品列表
self.cart = [] # 购物车
self.users = {} # 用户数据库
class Product:
def __init__(self, id, name, price, stock):
self.id = id
self.name = name
self.price = price
self.stock = stock
def add_product(products, product):
"""添加商品到系统"""
products.append(product)
print(f"商品 {product.name} 添加成功!")
# 示例用法
products = []
p1 = Product(1, "Python编程书", 59.9, 100)
add_product(products, p1)
import hashlib
def register_user(users, username, password):
"""用户注册功能"""
if username in users:
print("用户名已存在!")
return False
# 使用SHA256加密密码
hashed_pw = hashlib.sha256(password.encode()).hexdigest()
users[username] = {
'password': hashed_pw,
'cart': [],
'orders': []
}
print("注册成功!")
return True
def login(users, username, password):
"""用户登录验证"""
hashed_pw = hashlib.sha256(password.encode()).hexdigest()
if users.get(username, {}).get('password') == hashed_pw:
print("登录成功!")
return True
print("用户名或密码错误!")
return False
def add_to_cart(users, username, product_id, quantity=1):
"""添加商品到购物车"""
if username not in users:
print("用户不存在!")
return False
# 在实际应用中应该检查商品库存
users[username]['cart'].append({
'product_id': product_id,
'quantity': quantity
})
print("商品已添加到购物车")
return True
def view_cart(users, username, products):
"""查看购物车详情"""
total = 0
print("\n=== 购物车内容 ===")
for item in users[username]['cart']:
product = next((p for p in products if p.id == item['product_id']), None)
if product:
item_total = product.price * item['quantity']
print(f"{product.name} x{item['quantity']} - ¥{item_total:.2f}")
total += item_total
print(f"总计: ¥{total:.2f}\n")
import datetime
def create_order(users, username):
"""生成订单"""
if not users[username]['cart']:
print("购物车为空!")
return None
order = {
'order_id': f"ORD-{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}",
'items': users[username]['cart'].copy(),
'status': '待支付',
'created_at': datetime.datetime.now()
}
users[username]['orders'].append(order)
users[username]['cart'] = [] # 清空购物车
print(f"订单 {order['order_id']} 创建成功!")
return order
def process_payment(users, username, order_id):
"""模拟支付处理"""
order = next((o for o in users[username]['orders'] if o['order_id'] == order_id), None)
if not order:
print("订单不存在!")
return False
if order['status'] != '待支付':
print("订单状态异常!")
return False
# 模拟支付成功
order['status'] = '已支付'
order['paid_at'] = datetime.datetime.now()
print("支付成功!")
return True
import json
def save_data(users, products, filename='shopping_data.json'):
"""保存系统数据到文件"""
data = {
'users': users,
'products': [vars(p) for p in products]
}
with open(filename, 'w') as f:
json.dump(data, f, indent=2, default=str)
def load_data(filename='shopping_data.json'):
"""从文件加载系统数据"""
try:
with open(filename) as f:
data = json.load(f)
users = data['users']
products = [Product(**p) for p in data['products']]
return users, products
except FileNotFoundError:
return {}, []
def init_test_data():
"""初始化测试数据"""
users = {}
products = [
Product(1, "Python编程书", 59.9, 100),
Product(2, "无线鼠标", 129.0, 50),
Product(3, "机械键盘", 399.0, 30)
]
register_user(users, "testuser", "password123")
return users, products
def test_shopping_flow():
"""测试完整购物流程"""
print("\n=== 开始测试购物流程 ===")
users, products = init_test_data()
# 用户登录
login(users, "testuser", "password123")
# 添加商品到购物车
add_to_cart(users, "testuser", 1, 2) # 2本Python书
add_to_cart(users, "testuser", 2) # 1个鼠标
# 查看购物车
view_cart(users, "testuser", products)
# 创建订单
order = create_order(users, "testuser")
# 支付订单
if order:
process_payment(users, "testuser", order['order_id'])
# 保存数据
save_data(users, products)
print("=== 测试完成 ===")
# 执行测试
test_shopping_flow()
建议使用SQLite或MySQL替代JSON文件存储:
import sqlite3
def init_db():
conn = sqlite3.connect('shopping.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS products
(id INT PRIMARY KEY, name TEXT, price REAL, stock INT)''')
conn.commit()
conn.close()
使用线程锁防止资源竞争:
from threading import Lock
cart_lock = Lock()
def safe_add_to_cart(users, username, product_id, quantity=1):
with cart_lock:
add_to_cart(users, username, product_id, quantity)
def robust_add_to_cart(users, username, product_id, quantity=1):
try:
if quantity <= 0:
raise ValueError("数量必须大于0")
# ...原有逻辑...
except Exception as e:
print(f"添加购物车失败: {str(e)}")
return False
import bcrypt
def secure_register_user(users, username, password):
if username in users:
return False
# 使用bcrypt加盐哈希
hashed_pw = bcrypt.hashpw(password.encode(), bcrypt.gensalt())
users[username] = {
'password': hashed_pw.decode(),
# ...其他字段...
}
return True
def safe_query_product(db_conn, product_id):
cursor = db_conn.cursor()
cursor.execute("SELECT * FROM products WHERE id = ?", (product_id,))
return cursor.fetchone()
本文通过一个Python购物系统实例,详细展示了电商平台的核心功能实现。这个系统虽然简单,但包含了用户认证、商品管理、购物车、订单处理等基本要素。开发者可以在此基础上进行扩展,构建更复杂的商业应用。
关键要点: - 清晰的模块划分有助于系统维护 - 数据持久化是商业系统的基本要求 - 安全考虑应贯穿开发全过程 - 异常处理保证系统健壮性 - 性能优化提升用户体验
完整实现代码已超过300行,限于篇幅未全部展示,但核心逻辑均已包含。读者可以根据实际需求进一步完善这个购物系统。
字数统计:约3150字(含代码) “`
这篇文章以Markdown格式呈现,包含了: 1. 多级标题结构 2. Python代码块展示 3. 功能模块详细说明 4. 实际应用示例 5. 系统优化建议 6. 安全注意事项 7. 扩展功能方向
可以根据需要调整各部分内容深度或添加更多实现细节。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。