PHP 语言 实现课程学习进度

PHP阿木 发布于 16 天前 3 次阅读


PHP 课程学习进度管理系统实现

随着互联网技术的飞速发展,PHP 作为一种流行的服务器端脚本语言,被广泛应用于网站开发、网络应用等领域。为了帮助学习者更好地掌握 PHP 技能,本文将围绕课程学习进度这一主题,使用 PHP 语言实现一个简单的课程学习进度管理系统。通过本系统的实现,学习者可以清晰地了解自己的学习进度,从而更好地规划学习计划。

系统需求分析

在开始编写代码之前,我们需要对系统进行需求分析。以下是本系统的主要需求:

1. 用户管理:包括用户注册、登录、信息修改等功能。

2. 课程管理:包括课程添加、删除、修改、查询等功能。

3. 学习进度管理:包括学习进度记录、查询、统计等功能。

4. 权限管理:管理员可以管理用户、课程和学习进度。

系统设计

技术选型

- 前端:HTML、CSS、JavaScript

- 后端:PHP

- 数据库:MySQL

系统架构

本系统采用前后端分离的架构,前端负责展示和交互,后端负责数据处理和业务逻辑。

系统实现

数据库设计

我们需要设计数据库表结构。以下是主要表的设计:

1. 用户表(users):存储用户信息。

- id:主键,自增

- username:用户名

- password:密码

- email:邮箱

- role:角色(管理员/普通用户)

2. 课程表(courses):存储课程信息。

- id:主键,自增

- name:课程名称

- description:课程描述

3. 学习进度表(progress):存储学习进度信息。

- id:主键,自增

- user_id:用户ID

- course_id:课程ID

- progress:学习进度(0-100)

用户管理模块

1. 用户注册:用户填写注册信息,提交后存储到数据库。

php

// 用户注册


if ($_SERVER['REQUEST_METHOD'] == 'POST') {


$username = $_POST['username'];


$password = password_hash($_POST['password'], PASSWORD_DEFAULT);


$email = $_POST['email'];


$role = '普通用户';

// 连接数据库


$conn = new mysqli('localhost', 'root', 'password', 'database');

// 检查用户名是否存在


$stmt = $conn->prepare("SELECT id FROM users WHERE username = ?");


$stmt->bind_param("s", $username);


$stmt->execute();


$result = $stmt->get_result();


if ($result->num_rows > 0) {


echo "用户名已存在!";


} else {


// 插入用户信息


$stmt = $conn->prepare("INSERT INTO users (username, password, email, role) VALUES (?, ?, ?, ?)");


$stmt->bind_param("ssss", $username, $password, $email, $role);


$stmt->execute();


echo "注册成功!";


}


$stmt->close();


$conn->close();


}


?>


2. 用户登录:用户输入用户名和密码,验证成功后跳转到首页。

php

// 用户登录


if ($_SERVER['REQUEST_METHOD'] == 'POST') {


$username = $_POST['username'];


$password = $_POST['password'];

// 连接数据库


$conn = new mysqli('localhost', 'root', 'password', 'database');

// 查询用户信息


$stmt = $conn->prepare("SELECT id, password FROM users WHERE username = ?");


$stmt->bind_param("s", $username);


$stmt->execute();


$result = $stmt->get_result();


if ($result->num_rows > 0) {


$row = $result->fetch_assoc();


if (password_verify($password, $row['password'])) {


// 登录成功,设置session


$_SESSION['user_id'] = $row['id'];


echo "登录成功!";


} else {


echo "密码错误!";


}


} else {


echo "用户不存在!";


}


$stmt->close();


$conn->close();


}


?>


课程管理模块

1. 课程添加:管理员添加课程信息,提交后存储到数据库。

php

// 课程添加


if ($_SERVER['REQUEST_METHOD'] == 'POST') {


$name = $_POST['name'];


$description = $_POST['description'];

// 连接数据库


$conn = new mysqli('localhost', 'root', 'password', 'database');

// 插入课程信息


$stmt = $conn->prepare("INSERT INTO courses (name, description) VALUES (?, ?)");


$stmt->bind_param("ss", $name, $description);


$stmt->execute();


echo "课程添加成功!";


$stmt->close();


$conn->close();


}


?>


2. 课程删除:管理员删除课程信息。

php

// 课程删除


if ($_SERVER['REQUEST_METHOD'] == 'POST') {


$id = $_POST['id'];

// 连接数据库


$conn = new mysqli('localhost', 'root', 'password', 'database');

// 删除课程信息


$stmt = $conn->prepare("DELETE FROM courses WHERE id = ?");


$stmt->bind_param("i", $id);


$stmt->execute();


echo "课程删除成功!";


$stmt->close();


$conn->close();


}


?>


3. 课程修改:管理员修改课程信息。

php

// 课程修改


if ($_SERVER['REQUEST_METHOD'] == 'POST') {


$id = $_POST['id'];


$name = $_POST['name'];


$description = $_POST['description'];

// 连接数据库


$conn = new mysqli('localhost', 'root', 'password', 'database');

// 修改课程信息


$stmt = $conn->prepare("UPDATE courses SET name = ?, description = ? WHERE id = ?");


$stmt->bind_param("ssi", $name, $description, $id);


$stmt->execute();


echo "课程修改成功!";


$stmt->close();


$conn->close();


}


?>


4. 课程查询:管理员查询课程信息。

php

// 课程查询


if ($_SERVER['REQUEST_METHOD'] == 'GET') {


$id = $_GET['id'];

// 连接数据库


$conn = new mysqli('localhost', 'root', 'password', 'database');

// 查询课程信息


$stmt = $conn->prepare("SELECT FROM courses WHERE id = ?");


$stmt->bind_param("i", $id);


$stmt->execute();


$result = $stmt->get_result();


if ($result->num_rows > 0) {


$row = $result->fetch_assoc();


echo "课程名称:" . $row['name'] . "<br>";


echo "课程描述:" . $row['description'];


} else {


echo "课程不存在!";


}


$stmt->close();


$conn->close();


}


?>


学习进度管理模块

1. 学习进度记录:用户记录学习进度。

php

// 学习进度记录


if ($_SERVER['REQUEST_METHOD'] == 'POST') {


$user_id = $_SESSION['user_id'];


$course_id = $_POST['course_id'];


$progress = $_POST['progress'];

// 连接数据库


$conn = new mysqli('localhost', 'root', 'password', 'database');

// 检查学习进度是否存在


$stmt = $conn->prepare("SELECT id FROM progress WHERE user_id = ? AND course_id = ?");


$stmt->bind_param("ii", $user_id, $course_id);


$stmt->execute();


$result = $stmt->get_result();


if ($result->num_rows > 0) {


// 更新学习进度


$stmt = $conn->prepare("UPDATE progress SET progress = ? WHERE user_id = ? AND course_id = ?");


$stmt->bind_param("iii", $progress, $user_id, $course_id);


$stmt->execute();


echo "学习进度更新成功!";


} else {


// 插入学习进度


$stmt = $conn->prepare("INSERT INTO progress (user_id, course_id, progress) VALUES (?, ?, ?)");


$stmt->bind_param("iii", $user_id, $course_id, $progress);


$stmt->execute();


echo "学习进度记录成功!";


}


$stmt->close();


$conn->close();


}


?>


2. 学习进度查询:用户查询自己的学习进度。

php

// 学习进度查询


if ($_SERVER['REQUEST_METHOD'] == 'GET') {


$user_id = $_SESSION['user_id'];

// 连接数据库


$conn = new mysqli('localhost', 'root', 'password', 'database');

// 查询学习进度


$stmt = $conn->prepare("SELECT courses.name, progress.progress FROM progress INNER JOIN courses ON progress.course_id = courses.id WHERE progress.user_id = ?");


$stmt->bind_param("i", $user_id);


$stmt->execute();


$result = $stmt->get_result();


if ($result->num_rows > 0) {


while ($row = $result->fetch_assoc()) {


echo "课程:" . $row['name'] . ",进度:" . $row['progress'] . "%<br>";


}


} else {


echo "暂无学习进度!";


}


$stmt->close();


$conn->close();


}


?>


3. 学习进度统计:管理员统计所有用户的学习进度。

php

// 学习进度统计


if ($_SERVER['REQUEST_METHOD'] == 'GET') {


// 连接数据库


$conn = new mysqli('localhost', 'root', 'password', 'database');

// 查询所有用户的学习进度


$stmt = $conn->prepare("SELECT users.username, courses.name, progress.progress FROM progress INNER JOIN users ON progress.user_id = users.id INNER JOIN courses ON progress.course_id = courses.id");


$stmt->execute();


$result = $stmt->get_result();


if ($result->num_rows > 0) {


while ($row = $result->fetch_assoc()) {


echo "用户:" . $row['username'] . ",课程:" . $row['name'] . ",进度:" . $row['progress'] . "%<br>";


}


} else {


echo "暂无学习进度!";


}


$stmt->close();


$conn->close();


}


?>


总结

本文使用 PHP 语言实现了一个简单的课程学习进度管理系统。通过本系统的实现,学习者可以清晰地了解自己的学习进度,从而更好地规划学习计划。在实际应用中,可以根据需求对系统进行扩展和优化,例如添加更多功能、提高用户体验等。希望本文对 PHP 学习者有所帮助。