# 资产管理系统 — 项目文件目录结构 ``` assetmanager/ │ ├── pom.xml # Maven项目配置文件,管理依赖(mysql-connector、jfreechart等) │ ├── docs/ # 项目文档目录 │ ├── architecture-design.md # 软件架构设计文档 │ ├── directory-structure.md # 本文件:目录结构说明 │ └── sql/ # SQL脚本目录 │ └── init.sql # 数据库初始化脚本(建库、建表、初始数据) │ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── asset/ │ │ │ │ │ │ │ ├── App.java # 应用程序入口类,含main方法,启动登录界面 │ │ │ │ │ │ │ ├── entity/ # 实体层:与数据库表对应的JavaBean │ │ │ │ ├── User.java # 用户实体,对应t_user表 │ │ │ │ ├── Asset.java # 资产实体,对应t_asset表 │ │ │ │ ├── Category.java # 分类实体,对应t_category表 │ │ │ │ ├── Borrow.java # 借用实体,对应t_borrow表 │ │ │ │ └── Disposal.java # 报废实体,对应t_disposal表 │ │ │ │ │ │ │ ├── dao/ # 数据访问层:直接操作数据库 │ │ │ │ ├── BaseDAO.java # DAO基类,封装通用CRUD操作(增删改查模板) │ │ │ │ ├── UserDAO.java # 用户数据访问,登录验证、注册、查询 │ │ │ │ ├── AssetDAO.java # 资产数据访问,资产CRUD、多条件查询 │ │ │ │ ├── CategoryDAO.java # 分类数据访问,分类CRUD、引用检查 │ │ │ │ ├── BorrowDAO.java # 借用数据访问,借用CRUD、状态更新 │ │ │ │ └── DisposalDAO.java # 报废数据访问,报废CRUD、状态更新 │ │ │ │ │ │ │ ├── service/ # 业务逻辑层:封装业务规则与校验 │ │ │ │ ├── UserService.java # 用户业务逻辑,登录、注册、权限校验 │ │ │ │ ├── AssetService.java # 资产业务逻辑,资产CRUD、状态流转 │ │ │ │ ├── CategoryService.java # 分类业务逻辑,分类CRUD、删除引用检查 │ │ │ │ ├── BorrowService.java # 借用业务逻辑,借用/归还/审批流程 │ │ │ │ ├── DisposalService.java # 报废业务逻辑,报废申请/审批流程 │ │ │ │ └── StatService.java # 统计业务逻辑,各维度数据聚合查询 │ │ │ │ │ │ │ ├── util/ # 工具类目录 │ │ │ │ ├── DBUtil.java # 数据库工具类,连接获取/释放、资源关闭 │ │ │ │ ├── MD5Util.java # MD5加密工具,密码加密 │ │ │ │ ├── ValidatorUtil.java # 表单校验工具,通用校验方法集合 │ │ │ │ └── DateUtil.java # 日期工具类,日期格式转换 │ │ │ │ │ │ │ ├── exception/ # 自定义异常目录 │ │ │ │ ├── BusinessException.java # 业务异常,封装业务逻辑错误信息 │ │ │ │ └── DBException.java # 数据库异常,封装数据库操作错误信息 │ │ │ │ │ │ │ └── view/ # 表示层:Swing界面 │ │ │ ├── LoginFrame.java # 登录窗口,用户名/密码输入与验证 │ │ │ ├── RegisterDialog.java # 注册对话框,新用户注册表单 │ │ │ ├── MainFrame.java # 主窗口,菜单导航+功能面板容器 │ │ │ ├── panel/ # 功能面板目录 │ │ │ │ ├── AssetPanel.java # 资产管理面板,资产列表+增删改查操作 │ │ │ │ ├── CategoryPanel.java # 分类管理面板,分类列表+增删改操作 │ │ │ │ ├── BorrowPanel.java # 借用管理面板,借用申请/审批/归还 │ │ │ │ ├── DisposalPanel.java # 报废管理面板,报废申请/审批 │ │ │ │ ├── StatPanel.java # 统计面板,图表展示各类统计数据 │ │ │ │ └── UserPanel.java # 用户管理面板,用户列表+角色管理(管理员) │ │ │ ├── dialog/ # 弹窗对话框目录 │ │ │ │ ├── AssetDialog.java # 资产新增/编辑对话框,含表单校验 │ │ │ │ ├── CategoryDialog.java # 分类新增/编辑对话框 │ │ │ │ ├── BorrowDialog.java # 借用申请对话框,选择资产+填写原因 │ │ │ │ ├── DisposalDialog.java # 报废申请对话框,选择资产+填写原因 │ │ │ │ ├── ApproveDialog.java # 审批对话框,同意/拒绝+备注 │ │ │ │ └── ChangePasswordDialog.java # 修改密码对话框 │ │ │ └── model/ # 表格数据模型目录 │ │ │ ├── AssetTableModel.java # 资产表格模型,JTable数据适配 │ │ │ ├── BorrowTableModel.java # 借用表格模型 │ │ │ ├── DisposalTableModel.java # 报废表格模型 │ │ │ └── UserTableModel.java # 用户表格模型 │ │ │ │ │ └── resources/ │ │ ├── db.properties # 数据库连接配置(URL/用户名/密码) │ │ └── log.properties # 日志配置文件 │ │ │ └── test/ │ └── java/ │ └── com/ │ └── asset/ │ ├── dao/ # DAO层单元测试 │ │ └── UserDAOTest.java │ ├── service/ # Service层单元测试 │ │ └── UserServiceTest.java │ └── util/ # 工具类单元测试 │ └── ValidatorUtilTest.java │ └── lib/ # 第三方JAR包目录(Maven未管理时备用) └── (mysql-connector-java-x.x.x.jar) ``` --- ## 目录功能注释汇总 | 目录/文件 | 层次 | 职责说明 | |-----------|------|---------| | `pom.xml` | 构建 | Maven项目对象模型,声明依赖(mysql-connector、jfreechart)、编译配置 | | `docs/` | 文档 | 存放项目文档,含架构设计、目录说明、SQL脚本 | | `docs/sql/init.sql` | 数据库 | MySQL初始化脚本,建库建表、外键约束、初始管理员数据 | | `App.java` | 入口 | 程序main方法入口,初始化Look&Feel,启动LoginFrame | | `entity/` | 实体层 | 与数据库表一一对应的JavaBean,含属性+getter/setter | | `dao/` | 数据访问层 | 封装JDBC操作,BaseDAO提供通用CRUD模板,子类实现特定查询 | | `dao/BaseDAO.java` | 数据访问层 | 通用CRUD模板方法,减少子类重复代码 | | `service/` | 业务逻辑层 | 封装业务规则、数据校验、事务控制,调用DAO完成数据操作 | | `util/` | 工具层 | 通用工具类,DBUtil管理连接、MD5Util加密、ValidatorUtil校验、DateUtil日期转换 | | `exception/` | 异常层 | 自定义异常类,BusinessException处理业务错误,DBException处理数据库错误 | | `view/` | 表示层 | Swing界面类,LoginFrame/MainFrame为顶层窗口 | | `view/panel/` | 表示层 | 功能面板,嵌入MainFrame的内容区域,各模块独立面板 | | `view/dialog/` | 表示层 | 弹窗对话框,用于新增/编辑/审批等操作,含表单校验逻辑 | | `view/model/` | 表示层 | JTable表格模型,继承AbstractTableModel,适配数据到表格显示 | | `resources/` | 配置 | 数据库连接配置、日志配置等properties文件 | | `test/` | 测试 | 单元测试目录,结构镜像main/java | --- ## 分层调用关系 ``` App.java (启动) │ ▼ view/ (LoginFrame → MainFrame → panel/dialog) │ 用户操作触发事件 ▼ service/ (业务校验 + 业务逻辑) │ 调用DAO操作数据 ▼ dao/ (JDBC → MySQL) │ 获取连接 ▼ util/DBUtil (连接管理) │ ▼ MySQL (asset_db) ``` **关键调用规则:** - view → service → dao,**严禁跨层调用**(view不可直接调dao) - entity被所有层共享,仅作为数据载体 - util被service/dao/view按需调用 - exception由service/dao抛出,view层捕获展示