网上书店管理系统
发布人:shili8
发布时间:2025-01-30 22:15
阅读次数:0
**网上书店管理系统**
**系统概述**
本系统是一个完整的网上书店管理系统,包括用户注册、登录、商品管理、订单管理等功能。系统使用Python语言编写,并采用Flask框架构建。
**系统结构**
1. **数据库**: 使用MySQL数据库存储用户信息、商品信息和订单信息。
2. **后端**: 使用Flask框架构建后端API,负责处理用户请求并返回相应的数据。
3. **前端**: 使用HTML、CSS和JavaScript编写前端页面,负责展示数据并与后端进行交互。
**系统功能**
1. **用户注册**: 用户可以注册账号,并填写个人信息。
2. **登录**: 用户可以使用账号密码登录系统。
3. **商品管理**: 系统管理员可以添加、删除和修改商品信息。
4. **订单管理**: 用户可以下单并支付,系统管理员可以查看和处理订单。
5. **商品浏览**: 用户可以浏览商品列表,并点击进入商品详情页面。
**系统代码**
### **models.py**
from flask_sqlalchemy import SQLAlchemydb = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), unique=True, nullable=False) password = db.Column(db.String(128), nullable=False) class Product(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), nullable=False) price = db.Column(db.Float, nullable=False) class Order(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) product_id = db.Column(db.Integer, db.ForeignKey('product.id'), nullable=False)
### **routes.py**
from flask import Blueprint, request, jsonifyfrom models import User, Product, Orderbp = Blueprint('api', __name__) @bp.route('/register', methods=['POST']) def register(): data = request.get_json() user = User(username=data['username'], password=data['password']) db.session.add(user) db.session.commit() return jsonify({'message': '注册成功'}),201@bp.route('/login', methods=['POST']) def login(): data = request.get_json() user = User.query.filter_by(username=data['username']).first() if user and user.password == data['password']: return jsonify({'token': generate_token(user.id)}),200 return jsonify({'message': '登录失败'}),401@bp.route('/products', methods=['GET']) def get_products(): products = Product.query.all() return jsonify([{'id': p.id, 'name': p.name, 'price': p.price} for p in products]),200
### **templates/index.html**
html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>网上书店</title> <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"> </head> <body> <h1>欢迎来到网上书店!</h1> <ul> {% for product in products %} <li>{{ product.name }} ({{ product.price }})</li> {% endfor %} </ul> <script src="{{ url_for('static', filename='script.js') }}"></script> </body> </html>
### **templates/product.html**
html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>{{ product.name }}</title> <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"> </head> <body> <h1>{{ product.name }}</h1> <p>价格: {{ product.price }}</p> <button id="buy-btn">购买</button> <script src="{{ url_for('static', filename='script.js') }}"></script> </body> </html>
### **static/script.js**
javascriptdocument.addEventListener('DOMContentLoaded', function() { const buyBtn = document.getElementById('buy-btn'); buyBtn.addEventListener('click', function() { // 发起购买请求 fetch('/buy', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ product_id: {{ product.id }} }) }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error)); }); });
### **static/style.css**
cssbody { font-family: Arial, sans-serif; } h1 { color: #333; } ul { list-style-type: none; padding:0; margin:0; } li { display: inline-block; margin-right:20px; }
**注意**: 上述代码仅供参考,需要根据实际需求进行调整和完善。