法学专业词汇检索系统项目报告
法学专业词汇检索系统项目报告
1. 需求分析
1.1 解决的问题
法学专业学生在学习和研究过程中面临以下问题:
- 术语分散:法律术语分散在不同法律领域,缺乏统一的检索平台
- 定义不明确:同一术语在不同法律领域可能有不同解释
- 学习效率低:传统纸质词典检索效率低下,无法快速关联相关概念
- 个性化需求:不同用户(学生、教师、研究者)对词汇的需求不同
1.2 核心功能规划
围绕用户核心痛点,系统设计分层级功能体系,覆盖检索、管理、分析全场景:
- 多维度词汇检索:支持关键词精准 / 模糊搜索、按法律领域筛选、按难度级别(1-5 级)筛选,兼顾快速检索与精准定位;
- 用户权限管理:实现用户注册、登录、角色区分(普通用户 / 管理员),不同角色匹配差异化功能权限;
- 个性化学习体系:提供词汇收藏、搜索历史记录、个人学习数据统计,适配学生个性化学习需求;
- 数据可视化分析:支持系统使用数据、词汇难度分布、热门搜索词等多维度可视化展示,辅助学习决策;
- 管理员专属功能:涵盖词汇增删改查、用户管理、系统参数配置、数据备份 / 恢复,保障系统运维效率。
2. 数据库设计
2.1 E-R图(实体关系图)
2.2 关系模式(8个数据表)
1. 用户表 (users)
user_id(主键): 用户IDusername: 用户名(唯一)password_hash: 密码哈希值(SHA256加密)user_role: 用户角色(普通用户/管理员)email: 邮箱created_date: 创建日期last_login_date: 最后登录日期
2. 法律领域表 (legal_fields)
field_id(主键): 领域IDfield_name: 领域名称(唯一)field_description: 领域描述created_date: 创建日期is_active: 是否启用
3. 法律词汇表 (legal_terms)
term_id(主键): 词汇IDterm_name: 词汇名称(唯一)term_definition: 词汇定义term_example: 使用示例created_date: 创建日期updated_date: 更新日期difficulty_level: 难度级别(1-5)image_path: 图片路径source_reference: 法律依据is_active: 是否启用
4. 词汇-领域关联表 (term_field_relations) - 多对多关系
relation_id(主键): 关联IDterm_id: 词汇ID(外键)field_id: 领域ID(外键)- 唯一约束: (term_id, field_id)
5. 收藏记录表 (favorites)
favorite_id(主键): 收藏IDuser_id: 用户ID(外键)term_id: 词汇ID(外键)favorite_date: 收藏日期notes: 备注- 唯一约束: (user_id, term_id)
6. 搜索历史表 (search_history)
history_id(主键): 历史IDuser_id: 用户ID(外键)search_keyword: 搜索关键词search_date: 搜索时间search_type: 搜索类型results_count: 结果数量
7. 系统设置表 (system_settings)
setting_id(主键): 设置IDsetting_key: 设置键(唯一)setting_value: 设置值setting_description: 设置描述updated_date: 更新日期
8. 操作日志表 (operation_logs)
log_id(主键): 日志IDuser_id: 用户ID(外键)username: 用户名operation_type: 操作类型operation_details: 操作详情ip_address: IP地址operation_time: 操作时间
2.3 规范化说明
数据库设计满足第三范式(3NF):
- 第一范式(1NF):所有属性都是原子值,没有重复列
- 第二范式(2NF):所有非主属性完全依赖于主键
- 第三范式(3NF):消除传递依赖,所有非主属性不依赖于其他非主属性
具体规范化措施:
- 使用
term_field_relations表解决法律词汇与法律领域之间的多对多关系 - 将用户信息、词汇信息、领域信息分离到不同表中
- 使用外键约束确保数据完整性
- 创建索引优化查询性能
3. 系统架构
3.1 模块划分图

3.2 技术架构
- 数据库: SQLite 3(轻量级,无需单独安装)
- 后端语言: Python 3.6+
- GUI框架: Tkinter(Python标准库)
- 数据可视化: Matplotlib
- 数据处理: Pandas
- 加密算法: SHA256(密码加密)
- 项目打包:Pyinstaller
pyi-makespec --onefile --noconsole --name="LawResearchSystem" main.py
pyinstaller LawResearchSystem.spec4. 核心代码说明
4.1 DatabaseManager (database_manager.py)
功能: 数据库操作的核心类,封装所有数据库操作
关键方法:
connect(): 建立数据库连接,设置行工厂返回字典格式execute_query(): 执行查询语句,返回结果列表execute_update(): 执行更新语句,返回影响行数verify_user(): 用户登录验证,使用SHA256加密验证search_legal_terms(): 多条件词汇检索,支持关键词、领域、难度筛选4.2 initialize_database (init_database.py)
功能: 数据库初始化,创建表结构和插入初始数据
关键步骤:
- 创建8个核心数据表
- 插入50+条法律词汇数据
- 建立词汇与领域的多对多关联
- 创建索引优化查询性能
- 插入系统默认设置
4.3 LawVocabularyGUI类 (main.py)
功能: 图形用户界面的主控制器
关键方法:
show_login_screen(): 显示登录界面show_user_main_screen(): 显示用户主界面show_admin_main_screen(): 显示管理员界面search_terms(): 处理词汇搜索请求show_statistics(): 显示统计分析图表4.4 词汇检索算法 (database_manager.py中的search_legal_terms方法)
功能: 实现多条件联合查询
算法流程:
- 构建动态SQL查询语句
- 根据用户输入条件添加WHERE子句
- 使用参数化查询防止SQL注入
- 执行查询并返回格式化结果
- 支持分页和排序
优化措施:
安装步骤
|
依赖包说明
matplotlib: 数据可视化图表pandas: 数据处理和分析openpyxl: Excel文件支持(用于数据导入导出)
5.2 操作指南
5.2.1 登录账户
- 管理员账户:
admin/admin123 - 普通用户账户:
user1/user123
5.2.2 主要功能操作
1.登录界面
2. 用户模式(登录后)
- 收藏管理:
- 在词汇详情页点击”收藏”按钮
- 在个人中心查看和管理收藏的词汇
- 可以为收藏的词汇添加备注
- 搜索历史:
- 系统自动记录用户的搜索历史
- 在个人中心查看历史记录
- 可以快速重新执行历史搜索
- 个人统计:
- 查看个人学习进度
- 分析收藏词汇的难度分布
- 查看搜索习惯分析
3. 管理员模式
- 数据管理:
- 添加/编辑/删除法律词汇
- 管理法律领域分类
- 批量导入导出数据
- 用户管理:
- 查看所有用户列表
- 修改用户角色(普通用户/管理员)
- 重置用户密码
- 系统分析:
- 查看系统使用统计
- 分析热门搜索词汇
- 生成数据可视化报表
- 系统设置:
- 修改系统名称、版本
- 配置用户权限策略
- 管理操作日志
4. 词汇检索和高级搜索
5. 收藏
6. 统计分析
7. 数据管理
8. 用户管理
6. 总结反思
6.1 遇到的问题及解决方案
问题1: 数据库设计复杂度
问题描述: 法律词汇与法律领域存在多对多关系,需要设计合理的关联表
解决方案:
- 创建
term_field_relations表作为中间表 - 使用外键约束确保数据完整性
- 建立复合索引优化关联查询性能
问题2: 用户权限管理
问题描述: 需要区分普通用户和管理员的不同权限
解决方案:
- 在
users表中添加user_role字段 - 在业务逻辑层进行权限验证
- 在界面层根据角色显示不同功能
问题3: 搜索性能优化
问题描述: 大量数据时关键词搜索性能下降
解决方案:
- 为
legal_terms表的term_name和term_definition字段创建索引 - 实现分页查询,避免一次性加载过多数据
- 使用预编译语句提高查询效率
问题4: 密码安全存储
问题描述: 明文存储密码存在安全风险
解决方案:
- 使用SHA256哈希算法加密密码
- 在
users表中存储密码哈希值而非明文 - 在登录验证时比较哈希值
6.2 改进方向
- 数据导入导出功能
- 支持Excel/CSV格式导入词汇数据
- 支持批量导出用户数据和学习报告
- 实现数据备份和恢复功能
- 搜索功能增强
- 实现模糊搜索和同义词搜索
- 添加搜索建议(自动补全)
- 支持高级搜索语法(AND/OR/NOT)
- 网络功能
- 实现在线词汇库同步
- 支持多用户协作编辑
- 添加词汇讨论和评论功能