当前位置:实例文章 » 其他实例» [文章]网上书店管理系统

网上书店管理系统

发布人: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;
}


**注意**: 上述代码仅供参考,需要根据实际需求进行调整和完善。

相关标签:数据库
其他信息

其他资源

Top