功能描述:
本系统实现了一个在线任务管理系统,用户可以创建、分配、更新、查看和删除任务。每个任务有不同的状态(如未开始、进行中、已完成),并且可以设置任务的截止日期。系统支持用户角色管理(管理员与普通用户)和任务分配给特定的用户。所有任务和用户信息都存储在数据库中。管理员可以管理所有任务,而普通用户只能查看和更新自己分配的任务。
主要特点:
- 用户管理: 支持管理员添加用户、删除用户、修改用户角色。
- 任务管理: 用户可以查看、创建、更新和删除任务。
- 任务状态: 任务可以设置不同的状态(未开始、进行中、已完成)。
- 任务分配: 管理员可以将任务分配给特定用户。
- 任务搜索和筛选: 支持按任务状态、截止日期等条件进行筛选。
- 权限管理: 管理员可以查看所有任务和用户,普通用户只能查看和更新自己负责的任务。
技术栈:
- 后端: Spring Boot, Spring Data JPA, Spring Security
- 前端: Thymeleaf(用于构建Web界面)
- 数据库: MySQL(存储任务和用户数据)
- 依赖管理: Maven
数据库设计:
-
users 表:存储用户信息。
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, password VARCHAR(100) NOT NULL, role VARCHAR(20) NOT NULL ); -
tasks 表:存储任务信息。
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100) NOT NULL, description TEXT, status VARCHAR(20) NOT NULL, due_date DATETIME, assigned_to INT, FOREIGN KEY (assigned_to) REFERENCES users(id) );
Spring Boot代码实现:
1. User实体类(User.java)
import javax.persistence.*;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
private String role;
// Getters and setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
}
2. Task实体类(Task.java)
import javax.persistence.*;
import java.util.Date;
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String description;
private String status;
private Date dueDate;
@ManyToOne
@JoinColumn(name = "assigned_to")
private User assignedTo;
// Getters and setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Date getDueDate() {
return dueDate;
}
public void setDueDate(Date dueDate) {
this.dueDate = dueDate;
}
public User getAssignedTo() {
return assignedTo;
}
public void setAssignedTo(User assignedTo) {
this.assignedTo = assignedTo;
}
}
3. TaskRepository接口(TaskRepository.java)
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface TaskRepository extends JpaRepository<Task, Long> {
List<Task> findByAssignedTo(User user);
List<Task> findByStatus(String status);
List<Task> findByDueDateBefore(Date date);
}
4. UserRepository接口(UserRepository.java)
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
5. TaskController类(TaskController.java)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
@RequestMapping("/tasks")
public class TaskController {
@Autowired
private TaskRepository taskRepository;
@Autowired
private UserRepository userRepository;
// 显示所有任务
@GetMapping
public String viewTasks(Model model) {
List<Task> tasks = taskRepository.findAll();
model.addAttribute("tasks", tasks);
return "tasks/list";
}
// 创建任务
@GetMapping("/create")
public String createTaskForm(Model model) {
model.addAttribute("task", new Task());
model.addAttribute("users", userRepository.findAll());
return "tasks/create";
}
@PostMapping("/create")
public String createTask(@ModelAttribute Task task) {
taskRepository.save(task);
return "redirect:/tasks";
}
// 编辑任务
@GetMapping("/edit/{id}")
public String editTaskForm(@PathVariable Long id, Model model) {
Task task = taskRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid task ID"));
model.addAttribute("task", task);
model.addAttribute("users", userRepository.findAll());
return "tasks/edit";
}
@PostMapping("/edit/{id}")
public String editTask(@PathVariable Long id, @ModelAttribute Task task) {
task.setId(id);
taskRepository.save(task);
return "redirect:/tasks";
}
// 删除任务
@GetMapping("/delete/{id}")
public String deleteTask(@PathVariable Long id) {
taskRepository.deleteById(id);
return "redirect:/tasks";
}
}
6. 安全配置(WebSecurityConfig.java)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/tasks/create", "/tasks/edit/**", "/tasks/delete/**").hasRole("ADMIN")
.antMatchers("/tasks").hasAnyRole("ADMIN", "USER")
.anyRequest().authenticated()
.and()
.formLogin()
.permitAll()
.and()
.logout()
.permitAll();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
使用说明:
功能简介:
这个在线任务管理系统允许用户创建、管理和分配任务,系统会根据用户的角色提供不同的权限。管理员可以查看、创建、编辑和删除所有任务,而普通用户只能查看和更新自己分配的任务。任务的状态可以通过系统进行更新,确保任务的进度得到跟踪。
使用步骤:
-
配置数据库:
- 创建名为
task_management的数据库。 - 创建表
users和tasks。
- 创建名为
-
运行Spring Boot应用:
- 使用Maven命令
mvn spring-boot:run启动应用。 - 访问
http://localhost:8080打开任务管理系统。
- 使用Maven命令
-
用户注册与登录:
- 管理员登录后,可以创建用户并分配角色。
- 普通用户可以登录并查看自己分配的任务。
-
任务管理:
- 管理员可以创建、编辑和删除任务,并分配任务给指定用户。
- 普通用户只能更新和查看自己负责的任务。
-
任务状态管理:
- 用户可以更新任务的状态为“未开始”、“进行中”或“已完成”。
-
任务筛选与搜索:
- 可以根据任务状态、截止日期等条件筛选任务。
示例输出:
Task Management System
1. View all tasks
2. Create a task (Admin Only)
3. Edit task (Admin Only)
4. Delete task (Admin Only)
5. Logout
应用场景:
- 项目管理: 用于团队管理和任务分配。
- 企业任务分配: 管理员可以分配任务给员工,确保工作进度。
- 团队协作: 支持多人协作,任务分配清晰明了。
该项目展示了如何使用Spring Boot实现一个在线任务管理系统,支持用户角色管理、任务分配、任务状态更新等功能。

被折叠的 条评论
为什么被折叠?



