在这个信息爆炸的时代,在线学习已成为许多人提升自我的重要途径。然而,面对海量的学习资源,如何有效地跟踪和管理学习进度成为了一个难题。今天,我们将用Python语言编写一个简单的在线学习进度跟踪系统,帮助大家更好地规划和管理学习。
系统设计思路
首先,我们需要明确系统的基本功能:
- 用户管理:注册、登录、个人信息管理。
- 课程管理:添加、删除、修改课程信息。
- 进度跟踪:记录和展示用户的学习进度。
- 数据存储:将用户和课程信息持久化存储。
为了实现这些功能,我们将使用Python的标准库和一些第三方库,如Flask
用于构建Web应用,SQLite
用于数据存储。
环境搭建
首先,确保你已经安装了Python环境。接下来,安装必要的第三方库:
pip install Flask
代码实现
1. 初始化项目
创建一个新的Python文件app.py
,并初始化Flask应用:
from flask import Flask, request, jsonify, session
import sqlite3
app = Flask(__name__)
app.secret_key = 'your_secret_key'
2. 数据库设计
使用SQLite创建一个简单的数据库,包含用户表和课程表:
def init_db():
conn = sqlite3.connect('learning.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY, username TEXT, password TEXT)''')
c.execute('''CREATE TABLE IF NOT EXISTS courses
(id INTEGER PRIMARY KEY, user_id INTEGER, course_name TEXT, progress INTEGER,
FOREIGN KEY(user_id) REFERENCES users(id))''')
conn.commit()
conn.close()
init_db()
3. 用户管理
实现用户注册和登录功能:
@app.route('/register', methods=['POST'])
def register():
username = request.form['username']
password = request.form['password']
conn = sqlite3.connect('learning.db')
c = conn.cursor()
c.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, password))
conn.commit()
conn.close()
return jsonify({'message': 'User registered successfully'})
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
conn = sqlite3.connect('learning.db')
c = conn.cursor()
user = c.execute('SELECT * FROM users WHERE username=? AND password=?', (username, password)).fetchone()
conn.close()
if user:
session['user_id'] = user[0]
return jsonify({'message': 'Login successful'})
else:
return jsonify({'message': 'Invalid credentials'})
4. 课程管理
实现添加、删除和修改课程功能:
@app.route('/add_course', methods=['POST'])
def add_course():
if 'user_id' not in session:
return jsonify({'message': 'Not logged in'})
user_id = session['user_id']
course_name = request.form['course_name']
conn = sqlite3.connect('learning.db')
c = conn.cursor()
c.execute('INSERT INTO courses (user_id, course_name, progress) VALUES (?, ?, 0)', (user_id, course_name))
conn.commit()
conn.close()
return jsonify({'message': 'Course added successfully'})
@app.route('/delete_course/<int:course_id>', methods=['DELETE'])
def delete_course(course_id):
if 'user_id' not in session:
return jsonify({'message': 'Not logged in'})
user_id = session['user_id']
conn = sqlite3.connect('learning.db')
c = conn.cursor()
c.execute('DELETE FROM courses WHERE id=? AND user_id=?', (course_id, user_id))
conn.commit()
conn.close()
return jsonify({'message': 'Course deleted successfully'})
@app.route('/update_progress/<int:course_id>', methods=['PUT'])
def update_progress(course_id):
if 'user_id' not in session:
return jsonify({'message': 'Not logged in'})
user_id = session['user_id']
progress = request.form['progress']
conn = sqlite3.connect('learning.db')
c = conn.cursor()
c.execute('UPDATE courses SET progress=? WHERE id=? AND user_id=?', (progress, course_id, user_id))
conn.commit()
conn.close()
return jsonify({'message': 'Progress updated successfully'})
5. 运行应用
在app.py
的末尾添加以下代码以启动应用:
if __name__ == '__main__':
app.run(debug=True)
总结
通过以上步骤,我们成功搭建
评论(0)