Files
java/Project/assetmanager/docs/architecture-design.md
2026-05-26 20:47:59 +08:00

16 KiB
Raw Permalink Blame History

资产管理系统 — 软件架构设计文档


封面

项目 内容
姓名 (请填写)
学号 (请填写)
课程名称 Java程序设计与AI辅助编程
作业名称 Java全栈自主开发实践项目
项目名称 资产管理系统Asset Management System
日期 2026年5月

一、项目概述

1.1 项目背景

资产管理系统旨在为企业或机构提供一套完整的固定资产信息化管理解决方案,覆盖资产从入库、分类、借用、归还到报废的全生命周期管理。系统采用 Java + Swing + MySQL 技术栈实现,功能规模达到课堂车辆管理(租车)系统的 2-3 倍。

1.2 项目目标

  • 实现资产全生命周期的信息化管理
  • 提供直观的数据可视化统计功能
  • 建立完善的表单校验与业务规则约束
  • 支持多用户角色与权限管理
  • 满足课程对功能完整性、代码质量、文档配套的要求

1.3 功能量级对比

对比维度 车辆管理系统 资产管理系统(本项目)
实体表数量 3-4张 5张用户、资产、分类、借用、报废
核心功能模块 4-5个 8个详见下方
业务流程 租车/还车 借用/归还/报废/统计
数据可视化 基础 多维度统计图表
权限控制 基础登录 角色分级(管理员/普通用户)
表单校验 基础 全面校验+即时反馈

二、技术架构

2.1 技术栈

层次 技术选型 说明
表示层 Java Swing 桌面GUIJFrame/JDialog/JTable等组件
业务逻辑层 Java SE Service层封装业务规则与校验逻辑
数据访问层 JDBC 原生JDBC连接MySQLPreparedStatement防注入
数据存储层 MySQL 8.x 关系型数据库,存储所有业务数据
构建工具 Maven 依赖管理与项目构建
可视化组件 JFreeChart 资产统计饼图/柱状图
日期处理 java.time Java 8日期API
日志 java.util.logging JDK内置日志框架

2.2 架构模式

采用经典三层架构MVC变体

┌─────────────────────────────────────────────────┐
│                  表示层View                    │
│  Swing界面登录/主界面/资产管理/借用管理/统计等    │
├─────────────────────────────────────────────────┤
│               业务逻辑层Service                │
│  UserService / AssetService / BorrowService /    │
│  CategoryService / DisposalService / StatService │
├─────────────────────────────────────────────────┤
│              数据访问层DAO                     │
│  UserDAO / AssetDAO / BorrowDAO / CategoryDAO /  │
│  DisposalDAOJDBC操作MySQL                     │
├─────────────────────────────────────────────────┤
│              数据存储层MySQL                    │
│  asset_db: user / asset / category / borrow /   │
│  disposal                                        │
└─────────────────────────────────────────────────┘

2.3 架构设计原则

  1. 单一职责原则:每个类只负责一个功能模块
  2. 分层解耦表示层不直接操作数据库通过Service→DAO逐层调用
  3. 接口隔离DAO层面向接口编程便于扩展和测试
  4. 统一异常处理:自定义业务异常,全局异常处理机制
  5. 连接池管理DBUtil统一管理数据库连接的获取与释放

三、功能模块划分

3.1 功能模块总览

资产管理系统
├── 模块1用户管理
│   ├── 用户登录
│   ├── 用户注册
│   ├── 修改密码
│   └── 角色权限(管理员/普通用户)
├── 模块2资产分类管理
│   ├── 分类新增
│   ├── 分类修改
│   ├── 分类删除(含引用检查)
│   └── 分类树形展示
├── 模块3资产管理核心
│   ├── 资产录入
│   ├── 资产修改
│   ├── 资产删除
│   ├── 资产查询(多条件组合)
│   └── 资产详情查看
├── 模块4资产借用管理
│   ├── 借用申请
│   ├── 借用审批(管理员)
│   ├── 归还登记
│   └── 借用记录查询
├── 模块5资产报废管理
│   ├── 报废申请
│   ├── 报废审批(管理员)
│   ├── 报废记录查询
│   └── 报废资产统计
├── 模块6数据统计与可视化
│   ├── 资产分类统计(饼图)
│   ├── 资产状态统计(柱状图)
│   ├── 借用频率统计
│   └── 资产价值统计
├── 模块7表单校验
│   ├── 必填项校验
│   ├── 格式校验(金额、日期、编号)
│   ├── 唯一性校验(用户名、资产编号)
│   └── 即时反馈提示
└── 模块8系统管理
    ├── 用户列表管理
    ├── 操作日志记录
    └── 系统参数配置

3.2 必备功能模块详细说明

模块1用户管理

功能 描述 优先级
用户登录 用户名+密码登录,校验角色权限 P0
用户注册 填写用户名、密码、真实姓名,默认普通用户角色 P0
修改密码 旧密码验证后修改新密码 P1
角色权限 管理员可审批借用/报废、管理用户;普通用户可借用资产 P0

模块2资产分类管理

功能 描述 优先级
分类新增 输入分类名称、描述,系统生成分类编号 P0
分类修改 修改分类名称、描述 P0
分类删除 检查该分类下是否有资产,有则禁止删除 P0
分类树形展示 以树形结构展示分类层级 P1

模块3资产管理

功能 描述 优先级
资产录入 录入名称、分类、价值、购入日期、存放位置等 P0
资产修改 修改资产各项属性 P0
资产删除 仅可删除未被借用的资产 P0
资产查询 支持按名称/分类/状态/位置组合查询 P0
资产详情 查看资产完整信息及借用历史 P1

模块4资产借用管理

功能 描述 优先级
借用申请 选择可用资产,填写借用原因、预计归还日期 P0
借用审批 管理员审批/拒绝借用申请 P0
归还登记 登记实际归还日期,更新资产状态 P0
借用记录 查询个人借用记录、全部借用记录 P0

模块5资产报废管理

功能 描述 优先级
报废申请 选择资产,填写报废原因 P0
报废审批 管理员审批/拒绝报废申请 P0
报废记录 查询报废历史记录 P1

模块6数据统计与可视化

功能 描述 优先级
分类统计饼图 按资产分类统计数量占比 P0
状态统计柱状图 按资产状态统计数量 P0
借用频率统计 统计资产借用次数排名 P1
价值统计 各分类资产价值汇总 P1

模块7表单校验

校验类型 描述 应用场景
必填校验 关键字段不能为空 所有表单
格式校验 金额为正数、日期格式正确、编号格式 资产录入/借用/报废
唯一性校验 用户名唯一、资产编号唯一 注册/资产录入
即时反馈 输入时实时校验提示 所有表单

模块8系统管理

功能 描述 优先级
用户列表 管理员查看所有用户、修改角色、禁用账户 P1
操作日志 记录关键操作(登录、增删改) P2

四、数据库表设计

4.1 数据库概述

  • 数据库名:asset_db
  • 字符集:utf8mb4
  • 排序规则:utf8mb4_general_ci
  • 引擎InnoDB支持事务

4.2 E-R关系概览

user(1) ──────< borrow(N) >────── asset(1)
                                        |
category(1) ──────< asset(N)            |
                                        |
user(1) ──────< disposal(N) >────── asset(1)

4.3 用户表t_user

字段名 类型 约束 说明
id INT PK, AUTO_INCREMENT 主键
username VARCHAR(50) UNIQUE, NOT NULL 用户名
password VARCHAR(100) NOT NULL 密码MD5加密存储
real_name VARCHAR(50) NOT NULL 真实姓名
role VARCHAR(20) NOT NULL, DEFAULT 'user' 角色admin/user
status TINYINT NOT NULL, DEFAULT 1 状态1启用/0禁用
create_time DATETIME NOT NULL 创建时间
update_time DATETIME 更新时间

索引idx_username (username)

4.4 资产分类表t_category

字段名 类型 约束 说明
id INT PK, AUTO_INCREMENT 主键
category_code VARCHAR(20) UNIQUE, NOT NULL 分类编号
category_name VARCHAR(50) NOT NULL 分类名称
description VARCHAR(200) 分类描述
create_time DATETIME NOT NULL 创建时间
update_time DATETIME 更新时间

索引idx_category_code (category_code)

4.5 资产表t_asset

字段名 类型 约束 说明
id INT PK, AUTO_INCREMENT 主键
asset_code VARCHAR(30) UNIQUE, NOT NULL 资产编号
asset_name VARCHAR(100) NOT NULL 资产名称
category_id INT FK, NOT NULL 分类ID关联t_category
status VARCHAR(20) NOT NULL, DEFAULT 'available' 状态available/borrowed/disposed
value DECIMAL(12,2) NOT NULL 资产价值(元)
purchase_date DATE NOT NULL 购入日期
location VARCHAR(100) 存放位置
description VARCHAR(500) 资产描述
create_time DATETIME NOT NULL 创建时间
update_time DATETIME 更新时间

索引idx_asset_code (asset_code), idx_category_id (category_id), idx_status (status)

4.6 借用表t_borrow

字段名 类型 约束 说明
id INT PK, AUTO_INCREMENT 主键
asset_id INT FK, NOT NULL 资产ID关联t_asset
user_id INT FK, NOT NULL 借用人ID关联t_user
borrow_date DATETIME NOT NULL 借用时间
expected_return_date DATE NOT NULL 预计归还日期
actual_return_date DATETIME 实际归还日期
reason VARCHAR(200) NOT NULL 借用原因
status VARCHAR(20) NOT NULL, DEFAULT 'pending' 状态pending/approved/rejected/returned/overdue
approver_id INT FK 审批人ID关联t_user
approve_time DATETIME 审批时间
approve_remark VARCHAR(200) 审批备注
create_time DATETIME NOT NULL 创建时间
update_time DATETIME 更新时间

索引idx_asset_id (asset_id), idx_user_id (user_id), idx_status (status)

4.7 报废表t_disposal

字段名 类型 约束 说明
id INT PK, AUTO_INCREMENT 主键
asset_id INT FK, NOT NULL 资产ID关联t_asset
user_id INT FK, NOT NULL 申请人ID关联t_user
reason VARCHAR(200) NOT NULL 报废原因
status VARCHAR(20) NOT NULL, DEFAULT 'pending' 状态pending/approved/rejected
approver_id INT FK 审批人ID关联t_user
approve_time DATETIME 审批时间
approve_remark VARCHAR(200) 审批备注
disposal_date DATETIME 报废执行日期
create_time DATETIME NOT NULL 创建时间
update_time DATETIME 更新时间

索引idx_asset_id (asset_id), idx_user_id (user_id), idx_status (status)

4.8 外键约束

外键名 子表 子表字段 父表 父表字段
fk_asset_category t_asset category_id t_category id
fk_borrow_asset t_borrow asset_id t_asset id
fk_borrow_user t_borrow user_id t_user id
fk_borrow_approver t_borrow approver_id t_user id
fk_disposal_asset t_disposal asset_id t_asset id
fk_disposal_user t_disposal user_id t_user id
fk_disposal_approver t_disposal approver_id t_user id

五、AI辅助开发规范

5.1 AI辅助使用原则

  1. AI为辅人为主AI生成代码仅作为参考和初稿必须经过人工深度审查、优化和重构
  2. 理解优先使用AI生成的代码前必须完全理解其逻辑与实现方式
  3. 质量把控AI生成代码需检查命名规范、异常处理、SQL注入防护、业务逻辑正确性
  4. 逐步验证:每完成一个模块,立即编译运行验证,不堆积问题

5.2 AI辅助开发流程

需求分析 → AI生成代码初稿 → 人工审查与优化 → 单元测试 → 集成验证

5.3 人工校验清单

校验项 校验内容
命名规范 类名大驼峰、方法名小驼峰、常量全大写下划线
注释完整 类注释、方法注释、关键逻辑行内注释
异常处理 try-catch合理、异常信息明确、资源正确释放
SQL安全 使用PreparedStatement、参数化查询
业务逻辑 边界条件、状态流转、并发场景
代码风格 缩进统一、行宽控制、无冗余代码

5.4 禁止事项

  • 禁止直接复制AI代码不做审查就提交
  • 禁止使用AI生成未经理解的黑盒代码
  • 禁止忽略AI代码中的安全隐患
  • 禁止使用AI绕过课程要求的自主理解与实践

六、课程及实践感悟

此处预留约500字的课程及实践感悟待项目完成后填写

感悟撰写方向建议:

  1. Java全栈开发过程中对面向对象思想的理解与深化
  2. Swing桌面应用开发的经验与体会
  3. JDBC直接操作数据库与ORM框架的对比思考
  4. 三层架构设计对代码可维护性的实际影响
  5. AI辅助编程的实际体验效率提升与质量把控的平衡
  6. 从需求分析到完整系统实现的全流程实践心得
  7. 表单校验、异常处理等细节功能对系统健壮性的重要意义
  8. 项目开发中遇到的典型问题及解决方案

七、附录

7.1 术语表

术语 说明
CRUD Create, Read, Update, Delete — 增删改查
DAO Data Access Object — 数据访问对象
JDBC Java Database Connectivity — Java数据库连接
MVC Model-View-Controller — 模型-视图-控制器
MD5 Message-Digest Algorithm 5 — 消息摘要算法

7.2 参考规范

  • 《阿里巴巴Java开发手册》
  • MySQL 8.0官方文档
  • Java Swing官方教程
  • JFreeChart开发指南

7.3 版本记录

版本 日期 修改内容 修改人
V1.0 2026-05-14 初始版本 (请填写)