- Java 100%
|
|
||
|---|---|---|
| .idea | ||
| app | ||
| gradle | ||
| .gitignore | ||
| build.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle | ||
TodoList 项目概览
项目简介
这是一个轻量级的 TodoList 项目(Android Studio),用于本地管理待办事项。数据存储使用 SQLite,界面与交互以简洁、易用为主。
主要功能
- 创建、编辑、删除任务
- 标记任务完成/未完成
- 支持任务依赖关系(任务之间的先后约束)
优点
- 轻量、启动快,适合单机离线使用
- 使用 SQLite 本地存储,易于备份与迁移
- 代码结构通常较简单,便于学习与扩展
缺点
- 无云同步或多设备协同功能
- 缺少用户/权限管理,安全与隐私需额外考虑
- 对大量数据或复杂查询扩展性有限(需要额外优化或迁移到服务器端 DB)
SQLite 数据表(说明)
-
todos:存储任务的主表。
- 常见字段:id(主键)、title(标题)、description(描述)、status(状态,如 pending/in_progress/done/blocked)、created_at、updated_at
- 作用:保存每条任务的基本信息和状态,作为主要查询与显示的数据源。
-
todo_deps:存储任务依赖关系。
- 常见字段:todo_id、depends_on(都指向 todos.id)
- 作用:表示 "todo_id" 任务在执行上依赖于 "depends_on" 任务完成;用于在 UI 中提示、或在执行任务前校验依赖约束。
使用建议
- 在对依赖或状态变更时使用事务(transaction),保证数据一致性
- 为常用查询字段(如 status、created_at)建立索引以提高查询性能
- 若需要多设备同步,考虑后端服务或第三方同步方案
项目文件结构说明
- SplashActivity.java:启动页,APP 打开后展示过渡页面,自动跳转到登录或主界面;
- MainActivity.java:主界面,展示任务列表(RecyclerView),负责跳转到任务详情/编辑页;
- EditTaskActivity.java:新建/编辑任务页面,包含标题、描述、截止日期、优先级、依赖设置等;
- LoginActivity.java:登录页面,处理用户认证流程;
- RegisterActivity.java:注册页面,创建新用户账号;
- UserManagementActivity.java:用户管理(查看/删除用户等);
- SettingsActivity.java:应用设置页面(例如备份/恢复、提醒设置等);
- DatabaseHelper.java:SQLiteOpenHelper 的实现,创建/升级数据库,管理表(todos、todo_deps、inbox_entries 等);
- TaskAdapter.java:任务列表的 RecyclerView 适配器,负责任务项绑定与点击事件;
- UserAdapter.java:用户列表的适配器(在用户管理页面使用);
系统核心功能
- 任务管理(创建、查看、编辑、删除)
- 任务状态(待办/进行中/完成/阻塞)与任务依赖关系(todo_deps)
- 用户认证与管理(登录/注册/用户列表)
- 本地持久化(SQLite)与数据库升级策略(由 DatabaseHelper 管理)
- 基本设置与备份/恢复(通过设置页触发)
数据库表结构细节
1. users 表
字段名 数据类型 约束条件 字段说明 user_id INTEGER 主键、自增、非空 用户唯一编号 username TEXT UNIQUE 登录名(唯一) password TEXT MD5 哈希后的密码 is_admin INTEGER 默认 0 是否为管理员(0 否,1 是) nickname TEXT 可空 用户昵称(在升级到 v5 时新增)
2. tasks 表
字段名 数据类型 约束条件 字段说明 id INTEGER 主键、自增、非空 任务唯一编号 title TEXT 任务标题(schema 中未显式声明 NOT NULL,应用层应确保非空) completed INTEGER 默认 0 任务完成状态,0 未完成,1 已完成 task_date TEXT 任务日期/截止时间(以文本存储) priority INTEGER 默认 0 优先级,数值越大优先级越高 user_id_fk INTEGER 外键 -> users.user_id 任务所属用户(可为 NULL,如果未分配)
说明:
- tasks 表在建表语句中包含 FOREIGN KEY(user_id_fk) REFERENCES users(user_id)。
- 部分字段(如 title)在数据库层未强制为非空,但应用逻辑通常要求提供标题。
- 密码以 MD5 存储(见 DatabaseHelper.md5),这不安全于生产环境,建议改用更安全的散列(例如 bcrypt)并添加盐值。
- 在进行用户删除或批量更新时,请使用事务以保证数据一致性;在频繁查询状态或时间范围时,为相应字段建立索引以提升性能。
四、系统页面功能展示 本系统包含 N 个核心 Activity 页面,各页面功能与截图预留位置如下:
N 为本项目的实际页面数量(可替换为具体数值,例如 6)。
4.1 Splash 启动页面
功能:应用启动时展示过渡动画/Logo,检查登录状态并自动跳转到登录页或主界面。
截图:
4.2 Main 主界面(MainActivity)
功能:显示任务列表(按优先级/时间排序)、搜索、筛选、切换用户(管理员可见全部任务),可进入任务详情或创建新任务。
截图:
4.3 编辑/新建任务(EditTaskActivity)
功能:创建或编辑任务,设置标题、详情、截止日期、优先级及依赖任务;保存后刷新列表。
截图:
4.4 登录页面(LoginActivity)
功能:用户输入用户名/密码进行登录,支持跳转到注册页;登录失败显示错误提示。
截图:
4.5 用户管理(UserManagementActivity)
功能:管理员查看/删除用户、查看用户任务统计、为用户分配任务或重置密码。
截图:
4.6 设置页(SettingsActivity)
功能:备份/恢复数据库、导出/导入任务、应用配置(提醒、主题等)。
截图:
每个 Activity 职责与主要方法(简要)
-
SplashActivity.java
- 职责:展示启动过渡页/Logo,检查登录状态并导航到 Login 或 Main。
- 主要方法:onCreate(初始化视图、启动动画)、checkLoginStatus(决定跳转)。
-
MainActivity.java
- 职责:主界面,显示任务列表,支持搜索、筛选、排序、进入任务详情或新建任务。
- 主要方法:onCreate(初始化 RecyclerView 与适配器)、loadTasks(从 DB 加载任务)、onActivityResult(处理新增/编辑返回)、setupListeners(处理点击与筛选)。
-
EditTaskActivity.java
- 职责:新建或编辑任务,填写标题、详情、截止日期、优先级与依赖任务。
- 主要方法:onCreate(加载现有任务或准备新任务表单)、saveTask(验证表单并写入数据库)、pickDependency(选择依赖任务)。
-
LoginActivity.java
- 职责:处理用户登录流程,校验凭证并启动会话(或提示错误);支持跳转到注册页。
- 主要方法:onCreate(表单初始化)、attemptLogin(校验用户名/密码,调用 DatabaseHelper.login)、onLoginSuccess/onLoginFail。
-
RegisterActivity.java
- 职责:新用户注册表单,创建用户账号并可跳转登录。
- 主要方法:onCreate(表单初始化)、registerUser(表单验证并调用 DatabaseHelper.registerUser)、showResult(注册结果提示)。
-
UserManagementActivity.java
- 职责:供管理员管理用户(查看、删除、重置密码、查看任务统计)。
- 主要方法:onCreate(加载用户列表)、deleteUser(删除用户及其任务)、showUserDetails(查看/编辑用户信息)。
-
SettingsActivity.java
- 职责:应用设置入口,提供备份/恢复、导入/导出、通知与主题等设置项。
- 主要方法:onCreate(加载设置项)、backupDatabase/restoreDatabase、exportTasks/importTasks、applyPreferences。
说明:每个 Activity 通常在 onCreate 中完成视图绑定与事件注册;涉及数据库的操作通过 DatabaseHelper 封装,长耗时操作应在后台线程处理(例如使用 AsyncTask、Thread 或现代的 WorkManager/Coroutine)。