用pathon写一个在线外语学习系统的代码
时间: 2024-05-03 07:19:15 浏览: 7
首先,需要明确在线外语学习系统的功能和需求,比如用户注册、登录、课程选择、学习进度记录等。然后,我们可以使用 Python 搭建一个 Web 应用程序,使用 Flask 框架进行开发,具体代码如下:
```python
from flask import Flask, render_template, request, redirect, url_for, session
import sqlite3
app = Flask(__name__)
app.secret_key = 'secret_key'
# 首页
@app.route('/')
def index():
return render_template('index.html')
# 用户注册
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
email = request.form['email']
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
cursor.execute("INSERT INTO users (username, password, email) VALUES (?, ?, ?)", (username, password, email))
conn.commit()
conn.close()
return redirect(url_for('login'))
else:
return render_template('register.html')
# 用户登录
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
conn = sqlite3.connect('users.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE username = ? AND password = ?", (username, password))
user = cursor.fetchone()
conn.close()
if user:
session['user_id'] = user[0]
return redirect(url_for('dashboard'))
else:
return render_template('login.html', error='Invalid username or password')
else:
return render_template('login.html')
# 用户退出
@app.route('/logout')
def logout():
session.pop('user_id', None)
return redirect(url_for('index'))
# 课程列表
@app.route('/courses')
def courses():
conn = sqlite3.connect('courses.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM courses")
courses = cursor.fetchall()
conn.close()
return render_template('courses.html', courses=courses)
# 课程详情
@app.route('/courses/<int:course_id>')
def course(course_id):
conn = sqlite3.connect('courses.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM courses WHERE id = ?", (course_id,))
course = cursor.fetchone()
conn.close()
return render_template('course.html', course=course)
# 学习记录
@app.route('/dashboard')
def dashboard():
user_id = session.get('user_id')
if user_id:
conn = sqlite3.connect('learning.db')
cursor = conn.cursor()
cursor.execute("SELECT courses.title, learning.progress FROM learning JOIN courses ON learning.course_id = courses.id WHERE user_id = ?", (user_id,))
progress = cursor.fetchall()
conn.close()
return render_template('dashboard.html', progress=progress)
else:
return redirect(url_for('login'))
# 学习进度更新
@app.route('/learn', methods=['POST'])
def learn():
user_id = session.get('user_id')
if user_id:
course_id = request.form['course_id']
progress = request.form['progress']
conn = sqlite3.connect('learning.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM learning WHERE user_id = ? AND course_id = ?", (user_id, course_id))
learning = cursor.fetchone()
if learning:
cursor.execute("UPDATE learning SET progress = ? WHERE user_id = ? AND course_id = ?", (progress, user_id, course_id))
else:
cursor.execute("INSERT INTO learning (user_id, course_id, progress) VALUES (?, ?, ?)", (user_id, course_id, progress))
conn.commit()
conn.close()
return redirect(url_for('dashboard'))
else:
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
```
上述代码中使用了 SQLite 数据库来存储用户信息、课程信息和学习记录。在开发前需要先创建该三个表格。
此外,还需要在 templates 目录下创建对应的 HTML 模板,比如 index.html、register.html、login.html、courses.html、course.html 和 dashboard.html。这些模板文件需要根据功能需求进行开发,具体实现方法可以参考 Flask 的官方文档。