简介面向JavaSQL技术栈的企业固定资产管理系统该资料包完整覆盖从论文撰写、系统开发到毕业答辩的各个阶段适合高校计算机专业学生、毕业设计者及初级Java开发人员参考。压缩包约1.68MB主要包含系统源码、毕业论文、开题报告、任务书、中期考核报告、评语表及答辩PPT等文件类型可支撑项目申报、过程管理、成果汇报与答辩展示等全部环节。已有68人学习浏览其内容涉及B/S架构、Servlet/JSP/JDBC、SQL Server或MySQL数据库、MVC设计模式等关键技术并详述资产录入、资产管理、报表统计、权限控制和系统设置等功能模块帮助读者理解系统从设计到落地的完整逻辑。借助该资料读者既能快速掌握固定资产管理系统的业务实现思路也能获取从开题到答辩各阶段文档的写作范式为独立完成同类管理系统项目提供可复用的模板与参考。1. 先看清这个 zip 里装的是整条毕设流水线不是只有源码你从网盘或学长手里拉下来的这个「javasql 企业固定资产管理系统论文系统开题报告任务书中期考核报告任务书评语表答辩 PPT.zip」包装很唬人里面其实是一整套毕业设计的交付模板代码给你演示用论文给你过审用任务书和中期考核给你补过程用答辩 PPT 给你最后站在台上撑场面用。对于正在赶毕设的计算机专业学生这套包最大的价值不是省掉几行代码而是把「从开题到答辩」这一整条流水线的架子都搭好了。真正的系统不在 zip 里在你把它解压、跑通、改过之后。这篇只干一件事把流水线拆开讲清楚代码怎么跑、文档怎么改、哪些地方会让你答辩当场翻车。2. 企业固定资产管理系统核心业务拆解与权限边界2.1 固定资产管理的六个必做模块和一个影子模块企业固定资产管理系统这个名字听起来大落地的业务范围其实很固定。绝大多数本科毕设版本的固定资产系统围绕的都是同样的业务闭环资产采购入库、分类建档、领用出库、归还入库、维修记录、报废处置。你打开这套包的源码第一件事不是看代码而是对照这个列表确认它覆盖了哪些模块后面写论文、改功能、做答辩 PPT 都以这份清单为骨架。六个必做模块的具体分工是资产信息管理负责资产的新增、编辑、删除和查询显示对应数据库的增删改查这是整个系统的门面资产分类管理做树状或层级分类用来把电脑、打印机、办公桌椅归到不同类别统计报表全靠这个维度领用/归还记录资产从哪个部门、哪个人手里进出的过程这是资产追踪的核心数据维修管理处理资产损坏后的报修流程报废管理记录资产达到使用年限或损坏后的处置统计报表按分类、部门、状态汇总数量和金额论文里的用例图和统计图基本都从这来。除了这六个还有一个影子模块是新手最容易忽略的——登录和权限。评审老师可能不会仔细看资产新增页面但一定会点登录页试错。常见做法是一个简单的用户表配合 role 字段区分管理员和普通员工管理员能看全部菜单普通员工只能做领用申请。如果你准备在答辩时演示权限不要只演示「能进系统」要演示「不同账号进去看到的菜单不同」这个细节的答辩效果比功能本身高一个档次。2.2 数据库表怎么建资产表、领用记录与状态流转固定资产系统的数据库设计重点不在表多而在状态清晰。核心是一张资产主表加若干张流水表。资产主表记录每件资产从入账开始的静态信息流水表记录它在生命周期里的每一次变动。我一般会按下面这种结构建表。-- 资产分类表树形结构parent_id 为 0 表示顶级分类 CREATE TABLE tb_category ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL COMMENT 分类名称如台式机、笔记本, parent_id INT DEFAULT 0 COMMENT 父分类ID0为顶级, create_time DATETIME DEFAULT CURRENT_TIMESTAMP );这张表的设计要点是 parent_id 自关联。初学阶段可以不做递归查询直接把分类做成两级大类和小类展示时用父分类名称拼接子分类名称简单且不容易出错。字段注释建议保留后面写论文数据库设计章节时可以直接把这段 SQL 转成表结构说明放进附录。-- 资产主表固定资产的核心档案 CREATE TABLE tb_asset ( id INT AUTO_INCREMENT PRIMARY KEY, asset_no VARCHAR(50) NOT NULL UNIQUE COMMENT 资产编号同企业内唯一如ZC-2024-0001, name VARCHAR(100) NOT NULL COMMENT 资产名称, category_id INT COMMENT 关联 tb_category.id, dept_name VARCHAR(50) COMMENT 使用部门简单实现可只存字符串, user_name VARCHAR(50) COMMENT 使用人, price DECIMAL(12,2) COMMENT 资产原值, buy_date DATE COMMENT 购入日期, status TINYINT DEFAULT 1 COMMENT 1在库 2领用 3维修 4报废, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); -- 资产编号唯一约束固定资产管理的基本规则杜绝重复入账资产编号唯一这条约束是整个系统的业务底线。论文答辩时评委经常会问「同一台电脑被登记了两次怎么办」答案就是 asset_no 上的 UNIQUE 约束和新增前的查重校验。status 字段的四个状态对应你在界面上看到的标签状态机流转是固定资产系统的灵魂在库才能被领用领用后不能直接报废维修中的资产不能转交他人。-- 领用归还记录表每一次资产的移动都留痕 CREATE TABLE tb_borrow ( id INT AUTO_INCREMENT PRIMARY KEY, asset_id INT NOT NULL COMMENT 关联 tb_asset.id, user_name VARCHAR(50) COMMENT 领用人, dept_name VARCHAR(50) COMMENT 领用部门, borrow_time DATETIME COMMENT 领用时间, return_time DATETIME DEFAULT NULL COMMENT 归还时间NULL表示未归还, remark VARCHAR(200) COMMENT 备注 );设计时留意 return_time 允许为 NULL 这件事。很多新手会把「未归还」做成默认的「1970-01-01」或者「9999-12-31」结果写报表统计时边界条件一堆。NULL 语义清晰Java 代码里直接用rs.getTimestamp(return_time) null判断未归还一眼能看懂论文里也好解释。统计查询是这套系统的加分项。单表查总数、按分类分组、按部门汇总金额这几条 SQL 在论文的测试分析和答辩 PPT 里作用不小。下面这条按状态分组的统计就是去重和分组统计的典型场景。SELECT CASE status WHEN 1 THEN 在库 WHEN 2 THEN 领用 WHEN 3 THEN 维修 WHEN 4 THEN 报废 END AS status_name, COUNT(*) AS cnt, SUM(price) AS total_price FROM tb_asset GROUP BY status;2.3 技术选型为什么是 java sql 而不是 Spring Cloud 全家桶这套包命名为 javasql它的技术栈大概率不是现在互联网公司里流行的微服务架构而是本科毕设最常见的组合Java Servlet JSP MySQL或者 Java Swing MySQL稍微新一点的是 Spring Boot MyBatis。选这套组合不是因为导师守旧而是毕业设计要的是「你能讲清楚每一行代码在干什么」三层架构的职责划分比 Spring Cloud 那套经过大量封装的黑匣子好讲得多。同样是 Java 技术栈Spring Boot MyBatis 在论文里好写在答辩时也好演示因为它开发效率高、依赖管理简单。如果你手里的包是纯 Servlet 版本写数据库连接时通常是在 JDBCUtil 里硬编码驱动和 URL代码可读性差一些但更接近教材如果是 MyBatis 版本SQL 写在 Mapper.xml 里查询语句更集中便于你演示慢 SQL 优化这类实操话题。与之配套的数据库MySQL 占了这套包里的绝大多数。少数学校实验环境用 SQL Server 或者 Oracle原理一样差异点主要是驱动类名和连接 URL 前缀。你拿到包后看一眼里面的 sql 脚本有没有反引号反引号是 MySQL 的标识符引用写法如果脚本里全是反引号且数据库是 SQL Server导入时报错就别怀疑是文件损坏换成 MySQL 重新建库即可。3. 把系统跑起来JDK8、MySQL、Tomcat 一条链配齐3.1 解压与导入目录结构里的东西别乱动打开 zip 后你会看到一个看起来有点乱的多层目录最外层是整个课题的全名往里一层会看到 doc 或 paper 文件夹装论文和各类报告、sql 或 db 文件夹装建库脚本、src 或 code 文件夹装 Java 工程文件。第一步不是双击某个目录开始看代码而是先把工程文件单独复制出来和文档分开放置避免后面改论文时误改代码结构。如果是 Eclipse 工程一般直接能看到 .classpath 和 .project 文件如果是 Maven 工程根目录有 pom.xml。打开方式有区别前者用 Eclipse 的导入 Existing Projects into Workspace后者用 IDEA 的 Open 直接选 pom.xml 作为项目加载。导入前确认一件事本机 JDK 和工程编译版本是否一致。这套包大多是按 JDK 8 编译的你电脑上如果是 JDK 17 或 21通常会报 UnsupportedClassVersionError解决办法不是改代码而是把 IDE 里的 Project Structure 和项目编译级别都调到 JDK 8。3.2 初始化数据库执行 sql 脚本的两种方式和常见报错数据库初始化是跑通这套系统最关键的一步80% 的翻车都发生在这里。常见做法是先建库再导脚本避免脚本里写死了库名导致权限报错。命令行操作如下。mysql -uroot -p -e CREATE DATABASE asset_db DEFAULT CHARACTER SET utf8mb4; mysql -uroot -p asset_db db/asset.sql第一句创建数据库并指定 utf8mb4 字符集第二句把脚本导入到 asset_db 中。第一条命令执行后输入密码如果你本机的 MySQL 装在 Windows 上且没把这些命令加入 PATH需要先切到 MySQL 安装目录的 bin 文件夹下执行。导入结束后用SHOW TABLES;验证表数量再用SELECT COUNT(*) FROM tb_asset;确认初始数据落进去了。如果你不会用命令行用 Navicat 或 MySQL Workbench 导入也完全可以。在 Navicat 里右键目标数据库选择「运行 SQL 文件」选择脚本后确认编码为 UTF-8 再执行。这里有个高频报错脚本里包含了CREATE DATABASE语句在 Navicat 里执行时会因为当前已连接数据库而产生权限或提示信息但这不影响最终结果。导入时报错还有一个常见来源是脚本语法不完全兼容。MySQL 5.7 和 MySQL 8.0 对某些语法的宽容度不同例如VALUES后面是否接括号内多行数据没太大差异但DEFAULT CURRENT_TIMESTAMP在老版本上写法有细微差别。如果脚本报某个字段不存在或关键语法错误先看脚本头部注释里写的 MySQL 版本再对照本机版本决定是否要切换数据库版本。3.3 改数据库连接参数统一改一处还是改三处工程导入 IDE 并确认 JDK 无误后下一步是修改数据库连接。这套包里的连接配置通常集中在一个 properties 文件里命名为 db.properties、jdbc.properties 或 database.properties偶尔也有直接写在 JDBCUtil.java 里的。打开后你会看到类似下面的内容。# 数据库连接配置 jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/asset_db?useUnicodetruecharacterEncodingutf8useSSLfalse jdbc.usernameroot jdbc.password你的数据库密码driver 用com.mysql.cj.jdbc.Driver是 MySQL 8.0 以上版本的写法com.mysql.jdbc.Driver是 MySQL 5.x 时代的写法新驱动向下兼容。URL 里3306是 MySQL 默认端口如果本机用过 Docker 映射或其他端口这里要跟着改。useSSLfalse是本地开发防止 MySQL 8.0 打印 TLS 警告characterEncodingutf8决定后面中文乱码是否出现不要删。有些包不是 properties 文件集中管理而是把连接代码直接写在 DAO 层父类里。这种设计的共同点是你需要全局搜jdbc:mysql这个字符串把所有出现的位置统一替换。搜出来的结果里如果既有一个 db.properties又有一个 JDBCUtil 里硬编码的写死连接说明作者留了 debug 入口你改 properties 不生效必须把硬编码的那份也改掉。改完别急着启动先在 IDE 里用个小测试类跑一次SELECT 1验证连接能通过再进下一步。这里有另一个值得留意的点登录功能正常情况下应对密码做散列存储而不是明文比对。如果包里的登录 SQL 是直接拼接用户名密码字符串比如WHERE usernameadmin AND password123456至少要知道这是典型的 SQL 注入测试点。答辩老师可能不会当场攻击你但论文安全性章节里写上一句「登录模块使用 PreparedStatement 参数绑定避免 SQL 注入」属于低成本高回报的补丁式修改。3.4 启动顺序与验证点别一启动就点登录工程结构不同启动方式也不同。这里列三种最常见的情况。如果是 Tomcat Servlet 工程右键项目选择 Run On Server在启动前确认 Server 中使用的是 JDK 8 兼容的运行时。如果是 Spring Boot 工程直接在 IDEA 里运行 Application.java 主类控制台出现Tomcat started on port 8080就算启动成功。如果是 Swing 桌面版直接运行带 main 方法的入口类弹出登录窗口即表示代码层面没问题。启动成功后不要立刻点登录然后以为万事大吉。按这个顺序确认系统真的健康第一步在浏览器或客户端里看登录页是否正常显示图片和版式第二步输入初始账号密码进入主页面确认左侧菜单渲染完整第三步打开资产列表页对比页面数据与数据库里tb_asset表数据是否一致第四步执行一次新增资产操作并在数据库里做查询验证。四步都通过这套系统才真正属于你。4. 论文、开题报告、任务书、中期考核报告、评语表、答辩PPT怎么改4.1 七份文档的定位与先后顺序zip 里除了代码还塞了一套完整的文档链论文、开题报告、任务书、中期考核报告、任务书、评语表、答辩 PPT。其中任务书出现两次并不罕见这类打包材料经常有不同版本或重复命名使用前先打开对比留下日期新、内容完整的那份另一份视为旧底稿。七份文档对应的用途和修改优先级如下表。先改哪份不是随意的要按「先定范围再写过程最后做包装」的顺序来。文档用途修改优先级必改内容开题报告确定课题范围和目标1研究背景、课题目标、技术路线、进度安排任务书规定毕设任务与要求2任务列表、预期成果、时间节点论文提交给评审的核心材料3需求分析、设计、实现、测试中期考核报告记录已完成进度4现阶段完成情况、遇到的问题评语表导师和评委填写意见5学生姓名学号、课题名称答辩 PPT现场讲解用6删冗余突出重点4.2 论文改框架开题报告改范围中期考核改进度论文是这个 zip 里最厚的部分但它不需要你通读三遍。第一遍只读目录把每一章的标题和论文结构记录下来第二遍对照代码里的数据库表一张表一张表去论文的数据库设计章节核对字段第三遍只改跟你实际运行的系统不一致的地方。论文的章节结构在计算机类毕设里高度雷同第一章绪论写背景、意义、国内外现状第二章相关技术写 Java、MySQL、Web 开发技术第三章需求分析画用例图和数据流图第四章系统设计写总体架构、功能模块设计、数据库设计第五章系统实现贴关键功能截图和核心代码第六章系统测试罗列测试用例。这套包提供的论文初稿最大的价值是整体框架和图表素材最需要你警惕的是它和你手里真正跑起来的系统可能不一致不一致章节必须优先改。开题报告与论文的分工经常被混淆。开题报告的重点是把「做什么、为什么做、打算怎么做」讲清楚不需要写完整个系统的实现细节而论文要呈现的是「我做出了什么、怎么做的」。简单粗暴的做法是把论文的目录复制到开题报告里作为技术路线参考把论文的需求分析压缩成开题报告的研究目标。反过来中期考核报告写的是过程重点是展示你确实在做这个课题抄论文摘要没用要把「已完成」写成带日期和内容的清单。修改过程中的一段常见对话可能是这样的导师问开题报告里的进度安排为什么和模块清单对不上原因是开题报告是最早写的当时你以为自己能做十个模块后来实际做了六个。这种情况正面回应就好把开题报告的进度表改成和论文一致这是正常迭代不是学术问题。4.3 答辩PPT的页数和每页放什么答辩 PPT 的常见错误是做成论文的「压缩版」从头到尾念目录。评审老师通常只有 5 到 10 分钟听你讲PPT 页数控制在 12 到 16 页以内。我从两年前带过的十几份答辩 PPT 里总结出的黄金结构如下封面上写清楚课题名称、学生、导师、专业一页项目背景说明固定资产管理对企业的重要性一页技术架构展示 Java SQL 的选型理由两页系统功能结构图把六大模块画出来三到四页核心功能截图分别选资产新增、资产领用、统计报表一页数据库设计放核心表 ER 图或表结构一页系统测试结果截图最后一页放不足与展望。这个页码分配适合大多数毕设核心逻辑是让老师在最短时间内看到你在「业务理解、技术实现、工程文档」三条线上都有产出。功能截图不要贴一堆一样样式的列表页挑最有交互感的页面比如带日期选择器的资产新增页、带统计图的报表页这类页面看图就能理解不需要你多解释。4.4 文档与代码版本对齐防止一问就露馅毕设答辩翻车案例里「论文写的和系统跑的不一致」排在前三名。典型场面是你在台上演示一个资产盘点功能翻到论文里对应章节却发现功能描述是固定资产折旧计算整个逻辑对不上。评审老师当场翻论文找对应功能的经历多了这已经是他们的标准动作。对齐防守要做到三个「统一」功能模块名称统一代码里叫 assetManage论文里叫资产管理可以接受但演示时你要自动切换到论文用语界面名称统一网页上的按钮文字「新增」与论文里的「添加」必须二选一建议改成和系统页面一致数据字段统一论文数据库设计表里写了buy_date代码里却查purchase_time这会被认作低级错误。做完这三件事再花十分钟在演示前把论文里的功能列表逐条和系统菜单过一遍凡是论文没写但系统里有的功能要么在论文测试章节补一条测试用例要么答辩时主动介绍为「扩展功能」凡是论文写了但系统里找不到的功能如果你没有把握快速补上就在论文里删掉或改写。宁可少功能不要假功能。5. 常见翻车点与排查清单从炸库到答辩现场5.1 现象一导入sql脚本报语法错看编码还是看版本学员把包里的 sql 脚本放进 Navicat 执行弹出一大片红色语法错误第一反应通常是脚本文件损坏。第二次执行时还会遇到Unknown database或表已存在的提示。问题根源多半在 MySQL 版本与脚本作者开发环境的差异旧脚本常见TYPEInnoDB语法新版 MySQL 已经不再采脚本头部也常有SET NAMES gbk而你的数据库建的是 utf8mb4中文字段注释在导入时直接乱码。解决办法分两步。先确认当前 MySQL 版本执行SELECT VERSION();然后打开脚本第一行看注释里有没有写明适用版本。再把SET NAMES改成SET NAMES utf8mb4重试如果脚本里同时包含建库语句和建表语句先在命令行单独建好库再去 Navicat 里执行剩下的部分。报错信息里如果指向某一行的某个字段名不要慌乱单独把那一条 SQL 复制出来挑错通常只是少了逗号或引号不匹配。5.2 现象二启动后页面报 ClassNotFoundException 或 404Tomcat 启动成功但访问项目地址时直接 404或者后台报ClassNotFoundException: com.mysql.jdbc.Driver第一反应往往是代码问题其实多数是部署路径和依赖包问题。404 要先检查项目有没有正确发布到 Tomcat 的 webapps 下Eclipse 里看 Servers 视图中的项目状态是否是「Synchronized」IDEA 里看 Artifact 的 Output Layout 是否包含 lib 下的 jar 包。Driver 类找不到是更常见的坑MySQL 驱动 jar 放在了工程的普通文件夹里没有进入到 WEB-INF/lib。解决办法是把 mysql-connector-java 的 jar 文件复制到 WEB-INF/lib 下再刷新项目重启。如果是 Maven 工程在 pom.xml 里确认 mysql 依赖的 scope 不是 provided否则打包时驱动不会被包含。5.3 现象三页面中文全部变成问号或乱码系统跑起来了数据库里读出来的中文却是一排问号这是字符集配置不统一造成的属于那种「改一处不够、全链路都得看」的问题。排查顺序按数据流向走数据库连接 URL 有没有characterEncodingutf8MySQL 数据库本身的默认字符集是不是 utf8mb4创建数据库时没有指定的话可能继承 latin1页面 JSP 或 Servlet 里 Response 的编码是否设置了 UTF-8Tomcat 的 server.xml 里 URIEncoding 是否为 UTF-8。常见做法是先在数据库连接 URL 上补齐useUnicodetruecharacterEncodingutf8再查表数据本身是否已经乱码。如果查询出来的值原本就是问号说明脏数据在导入时就已经产生需要重新建库并指定 charset 后再次导入。JSP 页面顶部加一行% page pageEncodingUTF-8 contentTypetext/html;charsetUTF-8 %也能排除响应编码问题。5.4 现象四资产列表几百条数据就卡慢SQL和索引问题资产数量一旦上千列表页可能每次查询都要好几秒。你的第一直觉可能是代码写得低效实际上这类小系统性能瓶颈几乎全在 SQL 层。常见场景是在列表页循环里调用查询方法一次页面加载执行了 N 次数据库往返或者在状态条件、分类条件字段上缺少索引全表扫描。定位问题的最快路径是把控制台打印的 SQL 语句复制出来在 MySQL 命令行前面加EXPLAIN执行看是否走了索引、扫描了多少行。如果跟在 type 后面的是 ALL说明全表扫描发生了。补上必要的索引即可-- 给资产表的外键和状态字段加索引优化列表查询和统计 ALTER TABLE tb_asset ADD INDEX idx_category_id (category_id); ALTER TABLE tb_asset ADD INDEX idx_status (status);category_id 和 status 是资产列表页 where 条件里最常见的两个字段分别建立索引能有效改善查询计划。加了索引之后重新执行EXPLAINtype 从 ALL 变成 ref 或 rangerows 明显变小就说明索引生效。这条可以写进论文测试章节作为系统优化亮点答辩时讲起来比「我调了代码」更有说服力。另一个隐藏性能问题是统计报表模块用程序内存做聚合把整表数据查出来再分组求和。改进方式是改成 GROUP BY 下推到数据库执行不但在论文里多一个技术点演示时数据量大一点也不会卡顿。5.5 现象五答辩演示时代码、数据库、论文三者对不上这类问题没有代码报错提示而是现场演示时才暴露。最常见的是你演示资产报废流程系统里点了报废按钮页面报「该资产状态不允许此操作」因为这条资产已经在维修状态或者你演示新增资产填入的表单字段数量和论文里的功能设计表格对不上。解决办法就是前面 4.4 写的对齐工作外加一条现场容错策略演示前先在数据库里清空脏数据恢复成初始演示数据准备一条固定的资产演示数据比如「ZC-2024-0001 联想笔记本电脑」所有功能演示都围绕这一条数据走通从新增、领用、归还到查询路径清晰且不容易被状态流转卡住。千万别现场随机新建资产每新建一条都会让状态机状态变多后面如果要再演示领用可能选到一条已经领用过的资产当场翻车。6. 答辩前夜把演示脚本变成评审老师的提问清单答辩前一天晚上别背论文别练普通话打开系统把下面这条「演示动线」走三遍登录 → 资产列表 → 新增一条资产 → 领用该资产 → 在领用记录里查到这条记录 → 打开统计报表确认数量加一。这条动线覆盖资产全生命周期任何一步卡住优先修复而不是绕开。准备一个数据库重置脚本答辩前现场执行一次把系统恢复到干净状态再开始演示。这个动作的仪式感很像给评审老师吃定心丸因为大多数老师都经历过「学生演示到一半数据乱了」的尴尬。# 答辩前重置演示数据避免脏数据干扰演示流程 mysql -uroot -p asset_db db/asset.sql执行完成后顺手写一条待命命令用于快速启动项目Windows 上是startup.bat配合双击 TomcatmacOS 或 Linux 上是./startup.sh。提前确认端口没被占用访问地址写在小纸条上放电脑旁边防止上台紧张把 localhost 输错。最后把三个问题的回答在脑子里过一遍为什么用 Java 不用 C/Python注意答「生态成熟、适合企业级管理系统的三层架构」而不是黑 Python表设计时为什么用 status 整型字段而不用多个布尔字段答「一个状态字段配合代码里枚举映射查询统计更简单」这套系统最大的不足是什么答「没有实现资产折旧自动计算后续可以用年限平均法扩展」。这三个问题覆盖了选型、设计和改进方向是我这边大量答辩问答中重复率最高的组合。我自己的教训是第一次带毕设时只改代码不改论文答辩现场被评委翻到论文测试章节发现测试数据里的资产编号和演示系统完全对不上场面安静了好几秒。那次之后就养成一个习惯每改一次代码就在论文对应的截图和测试数据里同步更新一次。这个习惯没有玄学只有一份对应关系表希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?