
这段时间正赶上毕业设计开题季后台收到好几条留言都在问“大学生心理测评与分析系统”这类题目怎么做。也有不少读者直接下载了我分享过的SpringBoot课设源码跑起来之后又问里面的测评结果是怎么算出来的、数据库表为什么这么设计。我觉得干脆把这个项目从头到尾拆一遍从需求分析到数据库设计从核心代码到部署运行把该说的说透该避免的坑也列出来方便你拿来当课设或者毕设参考。先给没接触过的朋友说清楚这个项目是什么基于SpringBoot的大学生心理测评与分析系统本质上就是一个在线量表测评平台解决的是高校心理中心每年开学季、毕业季集中做心理普查时纸质问卷收集慢、人工统计误差大、异常结果跟不上干预的问题。系统把SCL-90、SDS、SAS这些常用量表搬到线上学生登录后直接答题提交后系统按标准计分规则算出总分和各因子得分自动划分正常、轻中重度等级还能按学院、专业、年级汇总统计给辅导员和心理中心老师提供数据支撑。这个系统适合谁来参考如果你是计算机相关专业的学生正在做SpringBoot课程设计或毕业设计那这份拆解基本能覆盖你从选题到答辩的整个流程。如果你刚学完SpringBoot基础想做点综合性项目练手拿这个项目来串一遍Spring MVC、MyBatis、MySQL、Thymeleaf这些知识点也是非常合适的路径。1. 内容整体设计与需求拆解1.1 心理测评系统到底要解决什么问题我在最早构思这个项目的时候不是一上来就建工程写代码而是先把自己代入到“高校心理中心老师”这个角色里去想问题。老师每年最头疼的事情不是没量表而是量表发下去之后怎么收、收了之后怎么算、算完之后怎么处理那批分数异常的学生。传统方式的问题很明显纸质问卷要一张一张录入Excel90道题的SCL-90录完一个人就得花几分钟几百上千个学生录下来光录入就得一两个星期。录入完了还有计分问题总分怎么加、阳性项目数怎么数、每个因子分怎么除全靠人工公式拉拉错一个单元格整批数据就废了。就算分算对了怎么从几百份问卷里筛出需要重点关注的名单又得靠眼睛一项项扫。所以这个系统最核心的价值不是把问卷“搬到网上”这么简单而是把“发卷-答题-计分-分级-预警-汇总”这条完整链路自动化。学生在宿舍用手机就能答完一套量表系统实时出结果分数偏高的自动进入预警名单心理中心老师登录后台一眼就能看到全院、全系、全班的整体情况重点学生自动标红。这省下来的时间能让老师把精力花在真正需要关注的学生身上。1.2 角色划分与核心业务流程任何管理系统第一步都是先理清角色角色定下来功能边界也就清楚了。这个系统我按照实际使用场景划分成三种角色学生个人信息维护、参与心理测评、查看自己的测评报告和解读建议。心理中心老师/管理员维护量表题库、创建测评任务、查看测评结果、管理预警名单、导出统计报表。院系辅导员查看本院系学生的测评完成情况和预警名单只能看自己院系的。三种角色的差别不只是页面不同更是权限边界的问题。比如辅导员能看本院系预警学生但不能修改量表题库管理员能管理一切但不需要参与答题学生只能看自己的报告看不到任何别人的数据。这个权限设计在课设答辩时经常被问建议你准备一下。核心业务流程我拆成了四条主线代码和表结构都围绕这几条线展开量表管理流管理员创建量表、录入维度、录入题目、设置计分规则。测评任务流管理员发布测评批次比如“2024秋季入学普查”指定适用院系和量表学生在规定时间内作答。结果计算流学生提交问卷后系统按量表规则自动计算总分、均分、阳性项目数、因子分并给出等级。预警处置流分数超过阈值的记录自动进入预警列表老师进行标记和处理形成事件闭环。1.3 为什么选SpringBoot这个技术栈这个题目点名了用SpringBoot我看到不少人有疑问都用SpringBoot了是不是就不能体现技术含量了恰恰相反SpringBoot已经是当前Java后端开发的绝对主流企业里新项目基本全是这套。它把Spring生态里各种繁琐的XML配置砍掉了内嵌了Tomcat一个java -jar就能把服务跑起来这种“约定优于配置”的设计理念本身就是现代后端开发的正确打开方式。更重要的是SpringBoot对新手非常友好。你不需要去理解复杂的Bean装配过程也不需要配一堆XML文件只需要按分层结构写Controller、Service、Mapper就能把一个完整项目跑通。配合Spring Data JPA或者MyBatis操作数据库再加上Thymeleaf做服务端渲染一套下来既好理解又容易扩展。做课设的时候用这个技术栈你能把更多精力花在业务逻辑上而不是花在环境搭不上、配置改不对这种破事上。2. 核心功能模块深度解析2.1 量表管理模块题目和维度不是写死的很多人拿到“心理测评系统”这个题目第一反应是直接把SCL-90的90道题硬编码进数据库或者页面里每个题一个字段比如question1、question2……question90。我见过不少课设就是这么干的但是这么做的后果很严重量表一旦要换一套比如换成SDS抑郁自评量表20题你就得改表结构、改代码、改页面牵一发动全身。正确的做法是把量表做成数据驱动的。在表设计上分成量表表、维度表、题目表三层题目和维度都通过外键挂在量表下面。管理员在后台维护题目内容、选项计分值、所属维度系统自动读取这些配置生成测评问卷。这样换一套新量表就只是往数据库里加数据完全不用动代码。SCL-90这种量表有它固定的结构90个题目10个因子躯体化、强迫症状、人际关系敏感、抑郁、焦虑、敌对、恐怖、偏执、精神病性、其他每道题从“没有”到“严重”计1到5分。在系统里这些因子就是维度题目挂在对应维度下面答题时每道题选择的选项对应一个数值提交后按维度聚合计算。2.2 测评流程设计一次完整测评是怎么走通的学生端一次测评的完整流程是这样的学生登录系统首页展示当前可参与的测评任务列表。点击某个测评任务系统加载对应的量表按维度顺序渲染所有题目。每道题必须作答后才能提交前端做必答校验防止漏题。提交后后端对每一道题的选项值进行累计按维度分组求均分计算总分、总均分、阳性项目数、阳性症状均分再和阈值表比对得出等级。提交后学生不会立刻看到所有数据而是看到一个分维度的雷达图和文字报告。这里面有很多可做的细节比如进度条显示完成百分比答题过程中自动保存防止不小心关掉页面导致数据丢失。这些细节在答辩时都是加分项我在实际项目里都做了代码量不大但体验提升明显。2.3 预警识别与心理档案管理测评结果出来了光显示一堆分数没有意义重点是“怎么发现问题学生”。这就是预警模块要解决的。系统设定一套分级规则比如总分超过160分、或者阳性项目数超过43项、或者任意因子分超过2分就触发预警自动把这条记录放进预警名单并按严重程度标注颜色。除了预警名单系统还应该为学生建立持续的心理档案。大一进来测一次大二测一次每次测评结果都存档形成纵向对比。比如一个学生第一次测焦虑因子1.8分第二次2.5分虽然单次来看没到严重程度但趋势明显加深这种学生同样需要关注。档案模块让测评数据从“一次性筛查”升级为“过程性跟踪”这是答辩时能体现你思考深度的点。3. 技术选型与架构实现3.1 项目分层架构整个项目采用经典的四层结构这也是SpringBoot项目最标准的写法Controller层接收请求、参数校验、调用Service、返回视图或JSON。Service层业务逻辑处理比如计分逻辑、预警判定、事务控制。Mapper/Repository层数据库操作我习惯用MyBatis-Plus来写简单查询不用手写SQL。entity/dto/vo层实体类、传输对象、视图对象分层管理避免直接用数据库实体往页面上怼。我给的源码里包结构是com.student.psychology下面按controller、service、mapper、entity、config、common这样组织的。分包规则清晰找文件方便导师检查项目结构的时候也会觉得舒服。3.2 后端核心代码实现Service层里最核心的就是计分逻辑。我以总分的计算为例写一段伪代码级的SpringBoot Service实现public MapString, Object calculateScore(AnswerDTO answerDTO) { ListQuestion questions questionMapper.selectByScaleId( answerDTO.getScaleId()); MapLong, Integer dimensionScores new HashMap(); MapLong, Integer dimensionCounts new HashMap(); int totalScore 0; int positiveCount 0; for (AnswerItem item : answerDTO.getAnswers()) { Question q questionMapper.selectById(item.getQuestionId()); // 每道题对应的选项值SCL-90里选项从1到5 int score item.getOptionValue(); totalScore score; if (score 2) { positiveCount; } dimensionScores.merge(q.getDimensionId(), score, Integer::sum); dimensionCounts.merge(q.getDimensionId(), 1, Integer::sum); } // 按维度算均分 MapString, Double dimensionAvg new HashMap(); for (Long dimId : dimensionScores.keySet()) { double avg (double) dimensionScores.get(dimId) / dimensionCounts.get(dimId); dimensionAvg.put(String.valueOf(dimId), Double.parseDouble(String.format(%.2f, avg))); } MapString, Object result new HashMap(); result.put(totalScore, totalScore); result.put(positiveCount, positiveCount); result.put(dimensionAvg, dimensionAvg); return result; }这段代码的核心逻辑就是遍历答案列表对每道题的选项分值做累加同时按维度做分组计数最后除以各维度的题目数量得到因子分。这是在所有心理测评系统里通用的计算模型不只是SCL-90SDS、SAS这类量表同样适用区别只在于计分规则不同。3.3 登录态与权限控制系统有三种角色权限控制必然不能漏。这个项目不需要上Spring Security那么重的框架用拦截器加自定义注解就够了。登录成功后把用户对象放进Session或者用JWT生成Token拦截器里判断每个请求的路径前缀/student/ 开头的接口要求登录状态且角色为student/teacher/ 开头的接口要求角色为teacher/admin/ 开头的接口要求角色为admin每次访问需要权限的接口时拦截器从Session里拿到当前用户检查角色不符合就重定向到对应登录页或返回403。这个方法比Spring Security简单直观自己控制起来也灵活非常适合做课设。把这段在答辩时说清楚评委不会觉得你技术薄弱反而会觉得你基础扎实、方案选得合适。4. 数据库设计核心表结构与设计思路4.1 数据库整体设计数据库我选择MySQL主流、免费、资料多课设和毕设完全够用。核心表一共设计十张左右我列一个结构清单表名作用关键字段sys_user系统用户表id, username, password, real_name, role, college_idpsy_scale量表表id, name, description, total_questions, statuspsy_dimension维度表id, scale_id, name, sort_orderpsy_question题目表id, scale_id, dimension_id, content, sort_orderpsy_answer_option选项表id, question_id, option_text, option_valuepsy_test_task测评任务表id, task_name, scale_id, start_time, end_time, statuspsy_test_record测评记录表id, task_id, user_id, total_score, positive_count, result_level, submit_timepsy_answer_detail答题明细表id, record_id, question_id, option_valuepsy_warning预警表id, record_id, user_id, level, status, handle_timesys_college院系列表id, college_name这套表结构的设计核心是“量表配置化”即量表、维度、题目、选项四张表通过外键关联。新增一套量表就是在这四张表里插入数据后端代码一行都不用改。测评任务、测评记录、答题明细三张表则负责业务流程预警表和院系表负责结果处理和权限分类。4.2 核心表结构SQL参考我直接给出测评相关几张核心表的建表SQL你可以直接参照这个来建CREATE TABLE psy_scale ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL COMMENT 量表名称, description VARCHAR(500) COMMENT 量表描述, total_questions INT DEFAULT 0 COMMENT 题目总数, status TINYINT DEFAULT 1 COMMENT 1启用 0停用, create_time DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE psy_dimension ( id BIGINT PRIMARY KEY AUTO_INCREMENT, scale_id BIGINT NOT NULL COMMENT 所属量表ID, name VARCHAR(50) NOT NULL COMMENT 维度名称如躯体化、强迫症状, sort_order INT DEFAULT 0 COMMENT 维度排序, FOREIGN KEY (scale_id) REFERENCES psy_scale(id) ); CREATE TABLE psy_question ( id BIGINT PRIMARY KEY AUTO_INCREMENT, scale_id BIGINT NOT NULL, dimension_id BIGINT NOT NULL, content VARCHAR(500) NOT NULL COMMENT 题目内容, sort_order INT DEFAULT 0 COMMENT 题目序号, FOREIGN KEY (scale_id) REFERENCES psy_scale(id), FOREIGN KEY (dimension_id) REFERENCES psy_dimension(id) ); CREATE TABLE psy_answer_option ( id BIGINT PRIMARY KEY AUTO_INCREMENT, question_id BIGINT NOT NULL, option_text VARCHAR(50) NOT NULL COMMENT 选项文字如没有、很轻、中等, option_value INT NOT NULL COMMENT 选项计分值如1、2、3、4、5, FOREIGN KEY (question_id) REFERENCES psy_question(id) ); CREATE TABLE psy_test_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, task_id BIGINT NOT NULL COMMENT 测评任务ID, user_id BIGINT NOT NULL COMMENT 学生ID, total_score INT NOT NULL COMMENT 总分, positive_count INT DEFAULT 0 COMMENT 阳性项目数, result_level TINYINT NOT NULL COMMENT 1正常 2轻度 3中度 4重度, submit_time DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (task_id) REFERENCES psy_test_task(id), FOREIGN KEY (user_id) REFERENCES sys_user(id) );4.3 数据库设计的几个重要考量第一为什么答题明细要单独一张表而不是用JSON字段一把梭我确实见过有人把90道题的答案拼成一个JSON字符串塞进一个字段里省事是省事但你想做任何统计都极其痛苦。如果你想统计“第35题有多少人选了4分”用明细表一条SQL就出结果用JSON字段就得把每条记录拿回Java里解析再聚合性能差到没法看。明细表稍微多一点数据没关系加对索引就够快。第二结果表为什么要冗余总分、阳性项目数这些字段因为这些值在提交答卷时就算好了存起来之后列表页无论怎么分页、筛选、排序都不需要再重新计算。这就是典型的“空间换时间”思路在统计报表这种高频读场景里非常实用。第三外键到底建不建建外键能保证数据完整性但在课设场景下我建议谨慎一点。MyBatis-Plus操作多表联查时外键约束有时候反而成为麻烦。我自己习惯的逻辑是数据表设计时在ER图上标清楚逻辑关联但在物理建表时不去强制建外键而是在Service层通过事务控制来保证一致性。这样既不影响数据正确性也不影响开发效率。5. 关键算法与测评结果分析逻辑5.1 评分规则与等级判定标准很多初次接触心理测评系统的同学会问总分算出来了怎么判断这个学生“有没有问题”这个不是我们自己拍的而是有标准可循的。以SCL-90为例常用的判定规则如下总分90道题得分相加范围90到450分。总分超过160分提示阳性。总均分总分除以90反映整体心理健康水平通常以1.5分和2分作为分级线。阳性项目数得分≥2的项目个数超过43项提示阳性。阳性症状均分阳性项目的得分均值反映症状的严重程度。因子分每个维度下题目得分之和除以该维度题数超过2分提示该因子阳性。参考广泛使用的分级标准我建议按下面这个规则表落在代码里等级总分区间阳性项目数处理建议正常≤ 160≤ 43无特殊处理轻度160 ~ 20043 ~ 50关注安排辅导员谈心中度200 ~ 250大于50建议心理咨询中心介入重度 250-重点关注联系专业医生评估这里要特别说明一下不同学术资料上阈值不完全一致这是一个常见的参考划分。做课设时在代码里写清依据在论文里注明参考来源答辩时就不会被质疑。5.2 因子分析不止是总分如果系统只算总分那顶多算一个“计算器”谈不上“分析”。这个系统之所以叫“测评与分析系统”重点在因子分析这一层。SCL-90的10个因子每个因子包含的题数不一样。比如“躯体化”因子包含12题“抑郁”因子包含13题“其他”因子包含7题。因子分的算法是因子分 该因子下所有题目得分之和 ÷ 该因子下题目数量。这个值比总分更能说明问题总分160以下的同学也可能出现某个因子得分特别高的情况这种“局部预警”如果不看因子分就会漏掉。基于因子分系统页面上给每个学生渲染一张雷达图10个维度各占一个轴哪个维度凸出来、哪个维度凹进去一眼就能看出来。这个雷达图用ECharts实现后端把dimensionAvg这个Map返回给前端前端塞进ECharts的series里就行大概二三十行代码效果却非常直观。5.3 统计报表从个体到群体个体结果搞定了群体统计也不能少。心理中心老师最想看的是这次测评有多少人参与了、异常比例多高、哪个院系情况比较突出、男生和女生有没有差异。这些就是统计报表模块的活。统计报表实现的核心就是一条条聚合SQL。比如要统计各院系的人数分布和异常率可以这么查SELECT c.college_name, COUNT(r.id) AS total_count, SUM(CASE WHEN r.result_level 2 THEN 1 ELSE 0 END) AS abnormal_count FROM psy_test_record r LEFT JOIN sys_user u ON r.user_id u.id LEFT JOIN sys_college c ON u.college_id c.id WHERE r.task_id #{taskId} GROUP BY c.college_name查出结果后前端用柱状图展示各院系人数和异常人数对比用饼图展示正常、轻度、中度、重度的占比。这些报表除了让数据“好看”更重要的价值是帮老师快速定位到异常率偏高的院系再往下钻取到具体班级、具体学生。从群体到个体层层下钻这就是一套完整的分析逻辑。6. 实操全流程从源码到运行6.1 运行环境准备先把环境列出来照着准备就不会卡壳JDK1.8或以上版本推荐1.8兼容性最好配SpringBoot 2.x完全够用。Maven3.6以上用来管理依赖、打包项目。MySQL5.7或8.0推荐5.7和多数教程资料匹配坑少。IDEIntelliJ IDEA社区版就够用。数据库客户端Navicat或DBeaver用来导入SQL和查数据。浏览器Chrome或Edge用于访问系统页面。SpringBoot版本建议选2.7.x这个版本非常稳定网上的资料最多遇到问题最容易搜到答案。没必要追新用3.xSpringBoot 3要求JDK17对新手来说徒增环境配置成本。6.2 导入项目和数据库拿到源码压缩包后解压出来你通常会看到几个部分后端代码文件夹、数据库SQL脚本、项目文档。我按正常步骤带你走一遍。第一步用Navicat新建一个数据库名字建议叫psychology_system字符集选utf8mb4排序规则选utf8mb4_general_ci。然后右键运行SQL文件选择源码包里提供的.sql脚本执行完毕就能看到sys_user、psy_scale、psy_question这些表。第二步用IDEA打开后端代码文件夹等Maven自动下载完依赖。下载慢的话在Maven的settings.xml里配置阿里云镜像这个不配置的话第一次拉依赖可能要等十几分钟。第三步修改配置文件application.yml里边的数据库连接信息server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/psychology_system?useUnicodetruecharacterEncodingutf8useSSLfalseserverTimezoneAsia/Shanghai username: root password: 你自己的密码 driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: none show-sql: true这里有两个容易踩的坑。第一serverTimezone必须设置成Asia/Shanghai不然数据库连接会报时区错误。第二密码如果有人改了也要同步改到这里。6.3 启动与初始化数据配置好之后找到启动类就是类名上标着SpringBootApplication的那个右键运行。看到控制台输出Tomcat started on port(s): 8080就说明启动成功了。打开浏览器输入http://localhost:8080就能看到系统登录页。源码里通常会内置测试账号比如admin/123456、student/123456具体以项目文档里写的为准。登录进去后建议先干这几件事一是进入量表管理页面确认SCL-90量表的90道题都加载出来了二是发布一个测试测评任务设置好起止时间三是用学生账号登录把这个测试任务完整答一遍确认能看到计分结果和报告最后再用管理员账号登录确认预警名单里出现了应该出现的记录。这几步走通说明整个项目已经闭环了。如果想要快速看一遍功能效果可以先用管理员账号导入一批虚拟学生数据再模拟提交几份答卷这样报表页面不至于空的。源码里如果带了测试数据生成脚本是最好的没有的话自己往psy_test_record表里插几行也很快。7. 常见问题与排查技巧实录7.1 高频问题速查表我在帮读者排查这个项目问题时遇到频率最高的问题基本集中在下面几个方向整理成一张表方便你自查现象大概率原因解决方法启动报 Failed to configure a DataSource数据库没建或连接配置不对检查MySQL服务是否启动检查application.yml的url、用户名、密码页面中文乱码数据库或连接字符集不对建库时选utf8mb4url里加characterEncodingutf8启动报时区错误连接串没有serverTimezoneurl末尾加serverTimezoneAsia/Shanghai8080端口被占用本地其他程序占了端口改SpringBoot端口或杀掉占用进程访问页面404项目没启动成功或路径敲错看控制台日志是否Tomcat started核对访问路径登录后没权限Session失效或角色判断出错重新登录检查拦截器放行路径配置100道题提交后分数不对计分规则实现有误用一条已知答案的问卷手算逐步调试比对7.2 我踩过的几个坑第一个坑是IDEA导入Maven项目后依赖一直报红。后来发现是Maven没有配置阿里云镜像所有依赖都挤到中央仓库去下载慢不说还经常超时失败。解决办法是在Maven的conf/settings.xml里加mirror配置之后刷新项目依赖基本就顺畅了。第二个坑是MySQL 8.0和SpringBoot 2.x的驱动兼容问题。如果用MySQL 8.0驱动类要写com.mysql.cj.jdbc.Driver如果用5.7写com.mysql.jdbc.Driver也行但会有过时警告。我后来统一用8.0加cj驱动的组合没有再出过问题。第三个坑是Thymeleaf模板页面改了不生效。IDEA里默认有缓存每次改完页面都要重启服务特别烦。在application.yml里加上spring.thymeleaf.cachefalse开发阶段就舒服多了。记得上线前把这个改回true不然每次都重新解析模板性能会受影响。第四个坑是权限拦截器把静态资源也拦截了。Thymeleaf页面引用的css、js、图片如果也被拦了页面会变得一团糟但服务端又不报错。解决方法是拦截器的排除路径里把/static/、/css/、/js/**、/images/**全部放行这个排查起来确实有点隐蔽我第一次遇到时愣是找了好久才反应过来。7.3 答辩前的自查清单如果你拿这个项目去答辩我建议你在答辩前花半天时间把下面几件事挨个过一遍关闭项目重新启动一遍确认从零可以正常跑起来。用一条手算过的答案验证计分逻辑确保分数完全正确。把三种角色的登录账号都测一遍确认各自的功能权限正确。准备几个“属性”问题的答案为什么选SpringBoot、为什么用MySQL、量表分数怎么算的、预警怎么触发的。如果时间充裕把系统里的类名、方法名尽量改成规范风格导师打开源码看第一眼的印象会好很多。8. 项目后续可以怎么扩展课设交上去不是终点这个系统如果你愿意继续折腾扩展空间其实很大。我根据自己的经验给你指几个方向。第一个方向是引入更多量表。SCL-90只是其中一个SDS抑郁自评量表、SAS焦虑自评量表、EPQ艾森克人格问卷、UPI大学生人格问卷都是高校常用的。既然量表表、维度表、题目表已经做到了配置化扩展量表本质上就是往数据库里插入新数据再在任务发布时多一步选择。第二个方向是分析维度的加深。现在系统做的是单次测评的截面分析可以加入纵向追踪把同一个学生多次测评的因子分连成变化曲线。比如全校学生在校四年的心理健康走势年级升上去之后焦虑因子是升还是降这种趋势分析在真实业务场景里价值很高。第三个方向是消息通知。测评任务发布后主动通过短信或站内信通知学生去测评预警触发后自动给辅导员发通知这些都比人工去催效果更好。实现难度也不大SpringBoot里集成一个邮件或短信接口就能搞定。第四个方向是前后端分离改造。当前项目用的是Thymeleaf服务端渲染如果想把前端独立出去保留后端的接口不变前端用Vue或React重写就可以作为面试时展示的项目亮点。这也是从“课设水平”迈向“企业开发水平”的一条路。我个人做了这么多个类似项目之后的体会是心理测评系统这种题目看起来是管理系统其实核心不在增删改查而在“测评算法”的高效落地和“数据分析”的业务价值。你只要把量表规则搞清楚把数据库表设计得灵活一点把计分逻辑写严谨这个项目就已经远超大多数课设的水平了。最后再分享一个小技巧做任何管理系统先花半天把核心业务流程画出来把关键表设计出来再动手写代码后面基本不会走大的弯路。千万别一上来就建工程写页面那真是一步错步步错。