Python打造在线学习进度跟踪系统

admin 2025-01-12 729 0

在这个信息爆炸的时代,在线学习已成为许多人提升自我的重要途径。然而,面对海量的学习资源,如何有效地跟踪和管理学习进度成为了一个难题。今天,我们将用Python语言编写一个简单的在线学习进度跟踪系统,帮助大家更好地规划和管理学习。

Python打造在线学习进度跟踪系统

系统设计思路

首先,我们需要明确系统的基本功能:

  1. 用户管理:注册、登录、个人信息管理。
  2. 课程管理:添加、删除、修改课程信息。
  3. 进度跟踪:记录和展示用户的学习进度。
  4. 数据存储:将用户和课程信息持久化存储。

为了实现这些功能,我们将使用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)