应某大型炼化企业要求,为其开发(简易)在线产品采购系统,所需功能如下。
用户登录和注销功能
系统有顾客、商家和管理员三种用户,其中顾客账户数量不限,商家和管理员账户仅有 一个。每个用户都有各自的用户名和密码,输入用户名和密码即可登录为对应角色,登录后 可随时注销。
为简化考虑,注册和修改密码功能完全由管理员账户承担,登录界面不做这两个功能的 要求。
顾客功能
顾客登录后,须具备以下功能:
按不同类别查看化工产品的名称、价格、库存量和组分信息,界面清楚且按一定规
则排序;
将化工产品添加至进货单;
查看或结算进货单;
选择某一化工产品,查看其平均打分和全部反馈及回复;
选择某一化工产品(不限定是否购买过),给其打分并发布反馈。
商家功能
商家登录后,须具备以下功能:
按不同类别查看化工产品的名称、价格、库存量和组分信息,界面清楚且按一定规
则排序;
增减化工产品种类;
修改化工产品价格、库存量和组分信息;
选择某一化工产品,再选择某一顾客的反馈,发布回复。
管理员功能
管理员作为超级用户,除了具备商家的全部功能外,还须具备以下功能: 1. 增加顾客账户;
删除顾客账户,同时一并删除其所有打分和反馈;
修改顾客或商家账户的密码;
选择某一化工产品,选择某一打分、反馈或回复,修改其内容或将其删除。
可以回答你的问题,但是回答以前,你先给咱们说说你是怎么拿到大型炼化企业的合同的。
【以下回答由 GPT 生成】
代码示例:
from flask import Flask, session, redirect, url_for, request
app = Flask(__name__)
app.secret_key = "mysecretkey"
# 用户账户信息的数据库
users = [
{'username': 'customer1', 'password': 'password1'},
{'username': 'customer2', 'password': 'password2'},
{'username': 'merchant', 'password': 'password'},
{'username': 'admin', 'password': 'password'}
]
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
# 验证用户名和密码
for user in users:
if user['username'] == username and user['password'] == password:
session['username'] = username
return redirect(url_for('index'))
return 'Invalid username or password'
return '''
<form method="post">
<input type="text" name="username" placeholder="Username"><br>
<input type="password" name="password" placeholder="Password"><br>
<input type="submit" value="Login">
</form>
'''
@app.route('/logout')
def logout():
session.pop('username', None)
return redirect(url_for('index'))
@app.route('/')
def index():
if 'username' in session:
return 'Logged in as {}'.format(session['username'])
return 'Not logged in'
if __name__ == '__main__':
app.run()
代码示例:
import sqlite3
# 连接到数据库
conn = sqlite3.connect('products.db')
cursor = conn.cursor()
# 创建产品信息表
cursor.execute('''
CREATE TABLE IF NOT EXISTS products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
price REAL,
stock INTEGER,
composition TEXT,
rating REAL
)
''')
# 插入示例数据
products = [
('Product A', 10.0, 5, 'Component A,B,C', 4.5),
('Product B', 15.0, 3, 'Component A,B,D', 3.8),
('Product C', 12.0, 8, 'Component B,C,D', 4.2)
]
cursor.executemany('INSERT INTO products (name, price, stock, composition, rating) VALUES (?, ?, ?, ?, ?)', products)
# 查询产品信息
category = 'Category A'
order_by = 'price DESC'
cursor.execute('SELECT * FROM products WHERE category = ? ORDER BY ?', (category, order_by))
products = cursor.fetchall()
# 打印产品信息
for product in products:
print('Name: {}, Price: {}, Stock: {}, Composition: {}, Rating: {}'.format(product[1], product[2], product[3], product[4], product[5]))
# 关闭数据库连接
conn.close()
代码示例:
@app.route('/add_to_cart/<int:product_id>')
def add_to_cart(product_id):
if 'cart' not in session:
session['cart'] = []
# 添加产品至进货单
session['cart'].append(product_id)
return redirect(url_for('view_cart'))
@app.route('/view_cart')
def view_cart():
cart = session.get('cart')
# 根据进货单中产品ID查询产品信息
products = []
for product_id in cart:
product = get_product_by_id(product_id)
if product:
products.append(product)
return render_template('cart.html', products=products)
代码示例:
@app.route('/view_cart')
def view_cart():
cart = session.get('cart')
# 根据进货单中产品ID查询产品信息
products = []
for product_id in cart:
product = get_product_by_id(product_id)
if product:
products.append(product)
return render_template('cart.html', products=products)
@app.route('/checkout')
def checkout():
# 根据进货单中产品ID计算总价格
total_price = 0
cart = session.get('cart')
for product_id in cart:
product = get_product_by_id(product_id)
if product:
total_price += product['price']
return render_template('checkout.html', total_price=total_price)
代码示例:
# 创建评分和反馈表
cursor.execute('''
CREATE TABLE IF NOT EXISTS ratings (
id INTEGER PRIMARY KEY AUTOINCREMENT,
product_id INTEGER,
rating REAL,
feedback TEXT,
reply TEXT
)
''')
# 插入示例数据
ratings = [
(1, 4.5, 'Good product', 'Thank you for your feedback'),
(1, 5.0, 'Excellent product', 'We appreciate your positive feedback'),
(2, 3.5, 'Average product', 'We apologize for any inconvenience caused')
]
cursor.executemany('INSERT INTO ratings (product_id, rating, feedback, reply) VALUES (?, ?, ?, ?)', ratings)
# 计算产品的平均打分
average_rating = cursor.execute('SELECT AVG(rating) FROM ratings WHERE product_id = ?', (product_id,)).fetchone()[0]
print('Average rating: {}'.format(average_rating))
# 查询产品的全部反馈及回复
feedbacks = cursor.execute('SELECT feedback, reply FROM ratings WHERE product_id = ?', (product_id,)).fetchall()
for feedback in feedbacks:
print('Feedback: {}, Reply: {}'.format(feedback[0], feedback[1]))
# 关闭数据库连接
conn.close()
代码示例:
@app.route('/rate_product/<int:product_id>', methods=['GET', 'POST'])
def rate_product(product_id):
if request.method == 'POST':
rating = request.form['rating']
feedback = request.form['feedback']
# 将打分和反馈存储到数据库
save_rating(product_id, rating, feedback)
return redirect(url_for('view_product', product_id=product_id))
return '''
<form method="post">
<input type="number" name="rating" min="1" max="5" step="0.1" placeholder="Rating"><br>
<textarea name="feedback" placeholder="Feedback"></textarea><br>
<input type="submit" value="Submit">
</form>
'''
代码示例:
# 增加产品种类字段
cursor.execute('ALTER TABLE products ADD COLUMN category TEXT')
# 插入示例数据
categories = ['Category A', 'Category B', 'Category C']
for category in categories:
cursor.execute('INSERT INTO products (category) VALUES (?)', (category,))
# 删除指定的产品种类
category_to_delete = 'Category C'
cursor.execute('DELETE FROM products WHERE category = ?', (category_to_delete,))
代码示例:
@app.route('/edit_product/<int:product_id>', methods=['GET', 'POST'])
def edit_product(product_id):
product = get_product_by_id(product_id)
if not product:
return 'Product not found'
if request.method == 'POST':
price = request.form['price']
stock = request.form['stock']
composition = request.form['composition']
# 更新产品信息
update_product(product_id, price, stock, composition)
return redirect(url_for('view_product', product_id=product_id))
return '''
<form method="post">
<input type="number" name="price" step="0.01" placeholder="Price" value="{}"><br>
<input type="number" name="stock" placeholder="Stock" value="{}"><br>
<input type="text" name="composition" placeholder="Composition" value="{}"><br>
<input type="submit" value="Save">
</form>
'''.format(product['price'], product['stock'], product['composition'])
代码示例:
@app.route('/reply_feedback/<int:product_id>/<int:rating_id>', methods=['GET', 'POST'])
def reply_feedback(product_id, rating_id):
rating = get_rating_by_id(rating_id)
if not rating:
return 'Rating not found'
if request.method == 'POST':
reply = request.form['reply']
# 更新反馈的回复内容
update_reply(rating_id, reply)
return redirect(url_for('view_product', product_id=product_id))
return '''
<form method="post">
<textarea name="reply" placeholder="Reply"></textarea><br>
<input type="submit" value="Reply">
</form>
'''
代码示例:
@app.route('/add_customer', methods=['GET', 'POST'])
def add_customer():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
# 将顾客账户存储到数据库
save_customer(username, password)
return redirect(url_for('index'))
return '''
<form method="post">
<input type="text" name="username" placeholder="Username"><br>
<input type="password" name="password" placeholder="Password"><br>
<input type="submit" value="Add Customer">
</form>
'''
代码示例:
@app.route('/delete_customer/<int:customer_id>')
def delete_customer(customer_id):
# 删除用户账户和相关评分和反馈
delete_customer_info(customer_id)
return redirect(url_for('index'))
代码示例:
@app.route('/change_password/<int:user_id>', methods=['GET', 'POST'])
def change_password(user_id):
user = get_user_by_id(user_id)
if not user:
return 'User not found'
if request.method == 'POST':
password = request.form['password']
# 更新用户密码
update_password(user_id, password)
return redirect(url_for('index'))
return '''
<form method="post">
<input type="password" name="password" placeholder="Password"><br>
<input type="submit" value="Change Password">
</form>
'''
代码示例: ```python @app.route('/edit_rating//', methods=['GET', 'POST']) def edit_rating(product_id, rating_id): rating = get_rating_by_id(rating_id) if not rating: return 'Rating not found'
if request.method == 'POST':
rating = request.form['rating']
feedback = request.form['feedback']
# 更新评分和反馈内容
update_rating(rating_id, rating, feedback)
return redirect(url_for('view_product', product_id=product_id))
return '''
<form method="post">
<input type="number" name="rating" min="1" max="5" step="0.1" placeholder="Rating" value="{}"><br>
<textarea name="feedback" placeholder="Feedback">{}</textarea><br>
<input type="submit" value="Save">
</form>
'''.
【相关推荐】