PHP 项目实战之任务管理系统
任务管理系统(Task Management System,TMS)是一种用于跟踪和管理项目任务、进度和资源的工具。在软件开发、项目管理等领域,任务管理系统扮演着至关重要的角色。本文将围绕PHP语言,通过一个实战项目——任务管理系统,来探讨相关的代码技术和实现方法。
项目概述
本任务管理系统旨在提供一个简单、易用的平台,帮助团队高效地管理项目任务。系统主要功能包括:
1. 用户注册与登录
2. 任务创建、编辑、删除
3. 任务分配与跟踪
4. 任务进度查看
5. 权限管理
技术栈
- PHP:后端开发语言
- MySQL:数据库
- Bootstrap:前端框架
- HTML/CSS/JavaScript:前端技术
系统设计
数据库设计
我们需要设计数据库表结构。以下是几个主要表的设计:
1. `users`:存储用户信息
- `id`:主键,自增
- `username`:用户名
- `password`:密码
- `email`:邮箱
- `role`:角色(管理员、普通用户)
2. `tasks`:存储任务信息
- `id`:主键,自增
- `title`:任务标题
- `description`:任务描述
- `status`:任务状态(未开始、进行中、已完成)
- `assignee`:负责人(用户ID)
- `start_date`:开始日期
- `end_date`:结束日期
- `priority`:优先级
3. `task_assignments`:存储任务分配信息
- `id`:主键,自增
- `task_id`:任务ID
- `user_id`:用户ID
功能模块实现
用户注册与登录
1. 用户注册
php
// 用户注册表单处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$email = $_POST['email'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'task_management');
// 检查用户名和邮箱是否已存在
$stmt = $conn->prepare("SELECT FROM users WHERE username = ? OR email = ?");
$stmt->bind_param("ss", $username, $email);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
// 用户名或邮箱已存在
echo "Username or email already exists!";
} else {
// 插入新用户
$stmt = $conn->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $password, $email);
$stmt->execute();
echo "Registration successful!";
}
$conn->close();
}
}
2. 用户登录
php
// 用户登录表单处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'task_management');
// 查询用户信息
$stmt = $conn->prepare("SELECT FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
$user = $result->fetch_assoc();
// 验证密码
if (password_verify($password, $user['password'])) {
// 登录成功
$_SESSION['user_id'] = $user['id'];
echo "Login successful!";
} else {
// 密码错误
echo "Password is incorrect!";
}
} else {
// 用户不存在
echo "Username does not exist!";
}
$conn->close();
}
}
任务创建、编辑、删除
1. 任务创建
php
// 任务创建表单处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$title = $_POST['title'];
$description = $_POST['description'];
$assignee = $_POST['assignee'];
$start_date = $_POST['start_date'];
$end_date = $_POST['end_date'];
$priority = $_POST['priority'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'task_management');
// 插入新任务
$stmt = $conn->prepare("INSERT INTO tasks (title, description, assignee, start_date, end_date, priority) VALUES (?, ?, ?, ?, ?, ?)");
$stmt->bind_param("ssssss", $title, $description, $assignee, $start_date, $end_date, $priority);
$stmt->execute();
echo "Task created successfully!";
$conn->close();
}
}
2. 任务编辑
php
// 任务编辑表单处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$id = $_POST['id'];
$title = $_POST['title'];
$description = $_POST['description'];
$assignee = $_POST['assignee'];
$start_date = $_POST['start_date'];
$end_date = $_POST['end_date'];
$priority = $_POST['priority'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'task_management');
// 更新任务信息
$stmt = $conn->prepare("UPDATE tasks SET title = ?, description = ?, assignee = ?, start_date = ?, end_date = ?, priority = ? WHERE id = ?");
$stmt->bind_param("ssssssi", $title, $description, $assignee, $start_date, $end_date, $priority, $id);
$stmt->execute();
echo "Task updated successfully!";
$conn->close();
}
}
3. 任务删除
php
// 任务删除处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$id = $_POST['id'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'task_management');
// 删除任务
$stmt = $conn->prepare("DELETE FROM tasks WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
echo "Task deleted successfully!";
$conn->close();
}
}
任务分配与跟踪
1. 任务分配
php
// 任务分配处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$task_id = $_POST['task_id'];
$user_id = $_POST['user_id'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'task_management');
// 插入任务分配信息
$stmt = $conn->prepare("INSERT INTO task_assignments (task_id, user_id) VALUES (?, ?)");
$stmt->bind_param("ii", $task_id, $user_id);
$stmt->execute();
echo "Task assigned successfully!";
$conn->close();
}
}
2. 任务跟踪
php
// 任务跟踪处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$id = $_POST['id'];
$status = $_POST['status'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'task_management');
// 更新任务状态
$stmt = $conn->prepare("UPDATE tasks SET status = ? WHERE id = ?");
$stmt->bind_param("si", $status, $id);
$stmt->execute();
echo "Task status updated successfully!";
$conn->close();
}
}
任务进度查看
php
// 任务进度查看处理
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$user_id = $_SESSION['user_id'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'task_management');
// 查询用户负责的任务
$stmt = $conn->prepare("SELECT FROM tasks WHERE assignee = ? ORDER BY start_date ASC");
$stmt->bind_param("i", $user_id);
$stmt->execute();
$result = $stmt->get_result();
// 输出任务信息
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row['id'] . "<br>";
echo "Title: " . $row['title'] . "<br>";
echo "Description: " . $row['description'] . "<br>";
echo "Status: " . $row['status'] . "<br>";
echo "Start Date: " . $row['start_date'] . "<br>";
echo "End Date: " . $row['end_date'] . "<br>";
echo "Priority: " . $row['priority'] . "<br><br>";
}
$conn->close();
}
}
权限管理
php
// 权限管理处理
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$user_id = $_POST['user_id'];
$role = $_POST['role'];
// 连接数据库
$conn = new mysqli('localhost', 'root', '', 'task_management');
// 更新用户角色
$stmt = $conn->prepare("UPDATE users SET role = ? WHERE id = ?");
$stmt->bind_param("si", $role, $user_id);
$stmt->execute();
echo "User role updated successfully!";
$conn->close();
}
}
总结
本文通过一个任务管理系统的实战项目,介绍了PHP语言在项目开发中的应用。通过数据库设计、功能模块实现等方面,展示了PHP在构建企业级应用中的优势。在实际开发过程中,可以根据项目需求进行功能扩展和优化,以提高系统的性能和易用性。希望本文对您有所帮助。
Comments NOTHING