网上书店管理系统
发布人: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;
}
**注意**: 上述代码仅供参考,需要根据实际需求进行调整和完善。

