ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于SpringBoot+Vue的在线问卷调查系统从开发到论文全流程解析

基于SpringBoot+Vue的在线问卷调查系统从开发到论文全流程解析 简介这是一套完整的基于SpringBoot与Vue的在线问卷调查系统毕业设计资源面向计算机专业本科生及Java全栈初学者解决课程设计、毕设选题与前后端协同开发实践需求。资源包含755个文件涵盖101个Java后端逻辑文件、50个Vue前端组件、160个JS交互脚本、53个CSS样式文件、79个GIF动效资源及1个SQL数据库脚本完整支撑系统部署与二次开发压缩包大小23.59MB结构清晰含build/run/install三类批处理脚本便于快速启动。已有86人学习下载资源附带可直接运行的源码、MySQL建库建表脚本、管理员与用户双角色功能模块含问卷管理、题目统计、新闻资讯、轮播图等后台功能以及配套毕业论文框架开箱即用显著降低毕设开发门槛与调试成本。基于SpringBootVue的在线问卷调查系统从选题到跑通再到写论文的全过程记录最近帮一个学弟把关他的毕业设计题目就是在线问卷调查系统技术栈是SpringBootMySQLMavenVue附带源码、数据库脚本和毕业论文。这个组合在计算机毕业设计里可以说非常经典了但正因为经典很多人只是在Gitee上找个项目下载下来跑起来就以为完事了——结果答辩的时候连自己项目里的表结构都说不清楚更别提被老师问几句就卡壳。这篇文章我打算从实际做项目的角度把这个问卷系统从选题逻辑、技术选型、数据库设计、前后端核心流程到毕业论文写作、常见坑排查完整地过一遍。如果你正好也在做类似题目或者手头已经有了这份源码但还没完全吃透这篇文章应该能帮你省下不少时间。1. 这个选题为什么值得做问卷系统背后的业务逻辑远比你想的复杂很多同学选毕业设计题目时有两个极端要么选一个网上教程满天飞的图书管理系统做出来千篇一律答辩时老师看一眼就pass要么选一个偏算法或底层框架的方向结果半年都没能落地。问卷调查系统属于典型的看起来简单、做起来有内容的题目。表面上看问卷系统无非就是管理员创建问卷、用户填写问卷、查看统计结果这三件事。但如果你真正去梳理需求会发现这里面藏着好几层业务逻辑。第一层是问卷本身的生命周期。一份问卷从创建到真正投放要经历草稿态、发布态、关闭态。草稿态的问卷可以随意编辑一旦发布就不能再改题目了否则之前填过的数据就对不上。这个状态流转的设计是最容易体现一个开发者对业务理解深度的地方。第二层是题型维度的差异。常见题型有单选题、多选题、填空题、下拉选择题、评分题有些系统还需要矩阵题即一组题目共用一组选项。不同题型的数据存储方式不一样单选题存一个选项ID就行多选题可能要存逗号分隔的多个选项ID填空题就是纯文本。如果一开始表结构设计得不够灵活后面兼容新题型会非常痛苦。第三层是数据统计的需求。用户填完问卷只是第一步管理员真正关心的是每个选项被选了多少次参与总人数是多少各题目的回收率如何这些统计结果需要从答卷表里实时聚合出来。如果只是用group by硬查数据量一上来就会出现明显的性能瓶颈这时候就需要考虑缓存或者预聚合。第四层是权限控制。普通用户和管理员看到的东西完全不一样用户能看到已发布的问卷、填写问卷、查看自己的填写记录管理员能管理所有问卷、查看详情、导出数据。没有SSO和RBAC那一套复杂体系但至少要保证基本的越权防护不能让普通用户通过改URL参数就删掉别人的问卷。所以你看这个题目虽然入门容易但要做到能答辩、能讲清楚、能扛住追问其实需要你把CRUD背后的业务规则理解透彻。这也正是老师希望通过这个题目考察你的东西能不能把一个真实场景的问题抽象成合理的数据模型和代码结构。2. 技术栈选型为什么偏偏是SpringBootMySQLMavenVue而不是别的组合选技术栈这件事很多同学的思路是学长用啥我用啥或者推荐系统里有啥我用啥。但实际上这个组合能成为毕业设计的主流选择是有它内在逻辑的。SpringBoot解决的是后端开发效率问题。如果你的项目用的是SSHSpringMVCSpringHibernate那套老古董光是各种XML配置就能写掉你一个月的时间而且你写的大部分配置跟你做的业务没有任何关系。SpringBoot通过自动配置和起步依赖把搭建一个能跑起来的Web项目这件事压缩到了几分钟。对于毕设来讲你省下的时间可以用来打磨业务代码和写论文而不是跟配置死磕。MySQL的选择几乎没有悬念。因为无论你以后进哪家公司关系型数据库的基本功都是必须要过的关卡。MySQL的JDBC驱动、连接池比如Druid或HikariCP、ORM框架MyBatis或JPA这些在SpringBoot生态里都有非常成熟的整合方案你只要学会基本的SQL写法就能完成绝大多数功能。相比之下如果一上来就用MongoDB或者Elasticsearch这种偏门数据库不仅学习成本高答辩时老师也会质疑你为什么要在这个场景下引入非关系型数据库。Maven解决的是依赖管理和构建问题。这个可能被很多同学忽视但它实际帮你省了大事。SpringBoot官方推荐使用Maven或Gradle来管理项目因为你的项目要依赖Controller、Service、Mapper、JWT、Lombok等十几个甚至几十个Jar包如果用最原始的方式手动把Jar包往lib目录里拷版本冲突能把人逼疯。Maven有了中央仓库的机制后你在pom.xml里声明坐标它自动把依赖和传递依赖都拉到本地做毕业设计完全够用。而且最终打包成Jar包交给老师跑比打WAR包部署到Tomcat省心得多。Vue解决的是前后端分离的问题。当然你也可以用Thymeleaf做服务端渲染纯后端也能把问卷系统做完。但既然题目明确说了基于Vue那就意味着你要做的是前后端分离架构——前端通过AJAX调用后端提供的RESTful API拿到JSON数据之后渲染页面。这个架构的好处是前端开发和后端开发可以并行你不需要改一处前端代码就重启一次Java进程部署的时候前端打包后的静态文件扔到Nginx或放到后端static目录里都行。对于毕设来说前后端分离有一个很现实的好处就是你的论文里可以多写一章系统架构设计把前后端数据交互时序图画出来这也是老师比较喜欢看到的。这个组合没有任何一个环节是为了炫技全部是冲着稳定、可控、能讲清楚去的。你自己去看真实的公司项目很多中小型项目就是这套组合的变体所以做这个题目对找实习和工作也有一定帮助。3. 拿到一份完整的问卷系统源码后先花30分钟摸清这套代码的数据结构不管是你自己从零写的还是从网上拿到的配套源码第一步都不建议急着跑起来而是先建库、看表、摸清数据流转。我见过太多人栽在项目跑不起来上结果发现不是代码的问题而是表结构和他本地数据库版本不兼容或者初始化数据没导入全。以这份基于SpringBootMySQL的在线问卷调查系统为例它的数据库设计可以分成三块核心区域。第一块是用户与权限相关表。典型的设计是sys_user表存放用户ID、用户名、加密后的密码通常是MD5加盐或者BCrypt、用户类型管理员还是普通用户、创建时间等。有些项目会把角色单独拆一张role表再用user_role关联表做多对多但问卷调查系统通常只有管理员和普通用户两种角色很多项目直接用role字段区分这也是可以接受的。第二块是问卷本身的结构化数据。这里通常是三张表搭配使用问卷表questionnaire存储问卷标题、描述、状态草稿/发布/关闭、创建人、创建时间、开始时间、结束时间。题目表question属于某份问卷存储题目内容、题型radio/checkbox/text/score、是否必填、排序号。选项表option属于某道题存储选项内容、排序号。这三张表通过外键层层关联形成一个问卷的完整结构。做设计的时候有个细节要注意尽量不要用物理外键。很多商业项目规范里明确要求禁用物理外键因为在高并发插入时外键约束会带来额外的锁开销而且一旦分表分库外键就完全失效。毕设项目里如果老师不强制要求建议在代码层面维护逻辑外键关系即在Java代码里自己控制关联逻辑建表语句里不写FOREIGN KEY。如果你能在论文或答辩里说出为什么不用物理外键这个点绝对是个加分项。第三块是答卷数据。这块是整个系统设计的关键也是区分会设计和不会设计的分水岭。常见的做法有两种。第一种是宽表设计一份答卷就一行记录每个题目对应一个字段比如questionnaire_id、q1_answer、q2_answer...。这种设计写起来爽但问题是题目一旦变化比如删了一道题、加了一道题表结构就得跟着改而且空值也会比较多。第二种是行表设计也叫EAV模式核心是下面两张表答卷主表answer_record记录某用户对某份问卷的一次填写记录字段包括ID、问卷ID、用户ID或匿名标识、填写时间。答卷明细表answer_detail每次填写记录对应多行每行存储一道题的答案字段包括ID、答卷ID、题目ID、选项ID如果是选择类题目、文本内容如果是填空或主观题。这种设计牺牲了一点查询效率但换来了极大的灵活性新增一种题型你不需要改表结构只要在代码里做对应的数据解析就行。对毕设来讲这套设计能撑住单选题、多选题、填空题三种基本题型的存储需求答辩时也更好讲清楚。我建议拿到源码后先把这三块的表关系画出来确认每个字段的含义再去看代码。因为表结构就是后端代码的地形图你只要把表和代码里的实体类对应上就离理解整个系统八九不离十了。4. 环境搭建JDK版本、MySQL8、Maven配置里最容易坑你的三个地方这个部分我直接用一个清单式的完整过程来演示每一步都是踩过坑之后换来的经验。4.1 JDK环境如果你用的是SpringBoot 2.7.xJDK 8或者JDK 11都行如果是SpringBoot 3.x那必须JDK 17以上。切记JDK版本和SpringBoot版本要配套否则项目启动时会出现UnsupportedClassVersionError或者各种奇怪的Bean创建异常。检查完JDK版本后命令行里输入java -version确认下很多同学环境变量配置了但没刷新终端或者当前终端的PATH里还有旧版本的JDK路径就会导致明明安装的是17却显示1.8。建议装完JDK之后打开一个新的终端窗口再验证别在配置之前的窗口里折腾。4.2 MySQL8的初始化注意事项现在大部分配套资料里的SQL脚本都是基于MySQL 5.7或8.0写的如果你装的是MySQL 8.0需要注意utf8mb4字符集的问题。建库时建议直接执行CREATE DATABASE IF NOT EXISTS survey DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE survey; source /your/path/survey.sql;使用source命令导入SQL脚本时脚本路径不要带中文和空格否则容易报错。导入之后用show tables;确认表都建出来了再执行一条select * from sys_user;看看数据是不是正常。还有一个特别容易踩的坑MySQL 8.0默认使用caching_sha2_password认证插件而某些老版本的JDBC驱动比如mysql-connector-java 5.x不支持这个插件连接时会报Public Key Retrieval is not allowed。解决方案有两个一是把JDBC驱动换成mysql-connector-j8.0.x版本二是在数据库连接URL上加参数allowPublicKeyRetrievaltrue。你如果用SpringBoot 2.7.x自带的MySQL驱动就是8.0.x版本但建议还是在application.yml的连接URL里加上这个参数有备无患。4.3 Maven的镜像仓库配置Maven是个好东西但如果你直接用自己的中央仓库地址在国内网络环境下下载依赖会慢到怀疑人生。Maven仓库网页版入口这个热搜词能进实时趋势说明被Maven配置折磨过的人不止一个。解决方式是修改Maven的settings.xml文件把镜像地址换成国内仓库。在mirrors节点下加上mirror idaliyunmaven/id mirrorOfcentral/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirror这样配置之后拉依赖的速度会快很多。需要提醒的是改完settings.xml之后在IDEA里要注意Maven的配置指向File-Settings-Build, Execution, Deployment-Build Tools-Maven确认User settings file指向你修改过的那个settings.xml并且勾选Override。很多同学改了自己的settings.xml但IDEA没生效就是因为这里没选对路径。4.4 把SpringBoot后端跑起来在确保MySQL创建好库、导入好数据后打开SpringBoot项目在src/main/resources/application.yml里检查以下几个配置server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/survey?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrueuseSSLfalse username: root password: 你自己的密码 driver-class-name: com.mysql.cj.jdbc.Driver然后启动项目。看到类似下面的日志输出就说明后端已经起来了Tomcat started on port(s): 8080 (http) with context path / Started SurveyApplication in 5.32 seconds第一次跑通这个流程我建议你一定要手动用Postman或者浏览器访问一下后端接口。如果接口能返回JSON数据再往下走前端这样能避免前后端一起出问题时不知道该排查谁。4.5 前端Vue项目的启动Vue项目通常是用Vue CLIvue/cli开发构建的拿到项目后检查有没有node_modules目录如果没有在项目根目录执行npm install。这一步在国内也可能慢可以把npm镜像切换成淘宝镜像npm config set registry https://registry.npmmirror.com确认vue.config.js如果有里的代理配置把前端开发服务器的/api开头的请求代理到后端的http://localhost:8080。执行npm run serve默认会在localhost:8081或其他端口上启动开发服务器。浏览器访问后能看到登录页面就算基本跑通了。5. 核心业务的前后端协作流程从创建问卷到查看统计代码到底经历了什么跑通项目之后不要急着改代码。你要做的是跟着一条完整的业务链路把前后端代码过一遍。我就以管理员创建问卷、用户填写、管理员查看统计这条主线把核心逻辑拆给你看。5.1 管理员创建问卷的Data Flow管理员在Vue前端填写问卷标题、添加题目题目类型选单选题、录入选项A/B/C/D、点击保存。Vue页面拿到表单数据后向后端发送请求this.$axios.post(/api/questionnaire/save, this.createForm)后端对应的Controller接收到请求把JSON转换成QuestionnaireCreateDTO。随后Service层做三件事向questionnaire表插入一条问卷记录状态为draft。遍历DTO里的题目列表逐题插入question表拿到每个题目的自增ID。遍历每道题的选项列表插入option表并记录所属的题目ID。这里有个事务的细节整个创建过程必须在同一个Transactional事务里完成。因为一旦中间某一步出错比如第3题的选项没插进去你不能让问卷记录已经落库了否则就会出现有问卷但没题目的脏数据。类上要加Transactional(rollbackFor Exception.class)注意不是只写Transactional因为Spring默认只是在抛出RuntimeException时才回滚如果你代码里把异常catch住并转成普通异常抛出事务就不会回滚那就会出大问题。5.2 用户填写问卷的原子性保证用户打开一份已发布的问卷逐题填写并提交。这步操作的代码逻辑是public boolean submitAnswer(AnswerSubmitDTO dto) { // 1. 校验问卷状态是否已发布 // 2. 校验必填题是否都写了 // 3. 插入answer_record表 // 4. 批量插入answer_detail表 // 5. 更新问卷的已填写数量字段 }有两个容易在答辩时被问到的问题问题一如何防止用户重复提交最简单的方案是在表单提交时加一个幂等标识比如前端生成一个UUID作为submissionToken每次进入问卷时向后端申请一个token提交时后端校验这个token是否已经被使用过。如果只用数据库判断该用户是否已填过这份问卷一旦同一用户开两个页面会有并发问题。如果你的项目里没有做幂等可以在答辩时坦诚说明这个不足并给出优化思路这也是一种加分项。问题二多选和单选答案是怎么存储的单选答案在answer_detail表的option_id字段里直接存选项ID。 多选答案option_id字段没法存多个值有两种处理方式。一种是在代码里把多个选项ID用英文逗号拼接成字符串放进一个字段另一种是每选一个选项就插一条answer_detail记录。第一种方案查询简单但不符合第一范式第二种方案更归范化但代码略复杂。不同的项目实现会有差异你看源码的时候留意一下它用的是哪种方式。5.3 统计报表的SQL实现用户填完问卷后管理员端需要实时看到统计结果。以单选题你最喜欢的编程语言A. Java B. Python C. Go为例统计每个选项被选了多少次用SQL大致是SELECT opt.id AS option_id, opt.content AS option_content, COUNT(detail.id) AS answer_count FROM questionnaire q INNER JOIN question qs ON qs.questionnaire_id q.id INNER JOIN option opt ON opt.question_id qs.id LEFT JOIN answer_detail detail ON detail.option_id opt.id WHERE q.id 1 AND qs.id 1 GROUP BY opt.id, opt.content ORDER BY opt.sort_order;注意这里用的是LEFT JOIN而不是INNER JOIN因为一道题里可能存在某个选项从未被选过的极端情况INNER JOIN会把选项记录直接过滤掉从0变成查不到这在统计页面上就是选项列表凭空少了一项很不友好。5.4 前端的数据可视化统计结果如果只是表格效果一般。稍微做得好看一点前端会引入ECharts来画饼图或柱状图import * as echarts from echarts; const chart echarts.init(document.getElementById(main)); chart.setOption({ tooltip: { trigger: item }, series: [ { name: 投票数, type: pie, radius: 60%, data: this.statisticsList.map(item ({ name: item.optionContent, value: item.answerCount })) } ] });大部分基于Vue的问卷系统都自带了这个功能你可以在前端源码里搜echarts看看是否已经引入了相关依赖。如果还没有可以让论文里多一个可视化统计分析模块的功能点工作量和难度都不大但内容的完整度会明显提升。6. 毕业论文怎么写才算有料一个好的体系胜过空话毕设项目的源码可以跑通但论文写不出来或者写得很水同样没办法顺利通过。问卷调查系统这个题目的论文我建议你按照下面的主体结构来组织每个章节的写作逻辑都不一样。6.1 第一章 引言重点在为什么做、背景是什么这一章不要空谈互联网时代信息爆炸这类废话而是要聚焦到问卷调研本身的痛点传统纸质问卷成本高、数据回收慢、统计容易出错通用的问卷平台比如某些在线SaaS虽然功能全面但数据存储在第三方平台上存在数据安全风险且定制化能力受限。因此从零开发一套可私有化部署的问卷系统对中小企业或高校内部调研具有一定现实意义。6.2 第二章 相关技术介绍每个技术都交代清楚在这套系统里承担什么角色写技术章节时别把每个技术都抄一遍百度百科。重点写清楚它们在你的系统里干了什么SpringBoot提供了自动配置和快速构建RESTful API的能力在本系统中用于实现用户管理、问卷管理、答卷管理等核心业务接口。MySQL保存问卷、题目、选项、答卷和用户数据利用InnoDB引擎的事务机制保证创建问卷和提交答卷的原子性。Vue实现数据驱动的SPA单页面应用配合Element UI组件库完成登录、问卷编辑器和统计展示页面。Maven管理项目依赖统一构建流程配合spring-boot-maven-plugin将后端项目打包为可执行Jar。6.3 第三章 系统需求分析用例图配合文字描述需求分析最忌讳的是只列功能列表一定要有角色场景的维度。问卷系统至少有管理员和普通用户两个角色你要描述清楚每个角色有哪些用例。这一章建议画两到三个UML用例图把登录注册问卷管理填写问卷查看统计结果等核心用例全部覆盖到。6.4 第四章 系统设计架构图、功能模块图、数据库ER图三件套这一章是最重要的也是老师最爱挑刺的地方。你要用架构图把前后端分离的结构画清楚Vue前端通过Axios调用后端接口后端Controller层接收请求、Service层处理业务逻辑、Mapper层操作MySQL数据库。数据库设计部分必须给出ER图并把我在第3节提到的每张表的核心字段列出来并说明含义。6.5 第五章 系统实现代码截图配合关键逻辑描述展示关键功能的时候不要大段贴代码要配合截图和文字说明。比如实现问卷编辑器时选Element UI的el-form和el-radio-group就描述清楚前端根据题型的枚举值动态渲染对应的输入组件提交时将题目列表序列化后传给后端即可。如果你在某个地方处理了一个异常或一个边界条件一定要写出来这是论文的加分项。6.6 第六章 系统测试用黑盒和接口测试双管齐下这一章至少要覆盖操作正确性测试数据库连接是否正常、页面能否正常加载、CRUD功能是否符合预期。核心功能测试用例表写清测试数据、测试步骤、预期结果和实际结果。接口测试用Postman对后端RESTful API做验证测试正常参数、异常参数缺失字段、超长字符串返回的状态码和响应体。7. 排查链路实录项目跑不起来时按这个顺序定位问题能省一半时间最后分享一下我在帮学弟调试过程中积累的一个排查链路。你如果照着这个顺序一步步走完90%的启动问题都能定位。7.1 第一步核对MySQL的库和表是否真的初始化成功项目起不来的原因里数据库异常占了大头。先在命令行登录MySQL执行SHOW DATABASES; USE survey; SHOW TABLES;看看survey库里有没有表。常见问题有三类建库了但没导入SQL脚本表是空的。SQL脚本导入时报错比如编码问题导致部分表缺失。项目application.yml里的spring.datasource.url指向了错误的库名。如果数据库正常但项目还是报Access denied for user rootlocalhost那基本是密码错了或者权限没给够。如果是密码错误就修改配置如果使用云服务器MySQL记得确认bind-address允许你的IP访问。7.2 第二步确认Maven依赖下载完整SpringBoot项目启动时报ClassNotFoundException或NoClassDefFoundError通常是某些Jar包没被Maven正确拉取。解决方式是先执行mvn clean再执行mvn install -DskipTests把项目重新编译一遍。如果还有缺失切到Maven仓库本地目录默认在~/.m2/repository看看对应坐标的目录里是不是只有.lastUpdated文件如果是说明下载失败了把该目录删掉重新mvn install。7.3 第三步看完整的后端启动日志页面访问不了时你需要看后端接口返回了什么。打开浏览器开发者工具F12 - Network看一下失败的请求返回的状态码。具体表现对应的常见原因如下现象大概率原因检查方向请求返回404后端没这个路径或Controller的RequestMapping和接口Url不一致检查Controller类上的RequestMapping和Vue里实际请求的路径请求返回403跨域或认证权限问题检查CORS配置、拦截器是否对OPTIONS请求放行请求返回500后端代码异常最常见是SQL或空指针看后端控制台堆栈日志请求一直Pending前后端端口不通或代理配置错误检查vue.config.js的proxy配置单独用Postman确认接口能通重启后端口被占用上一次进程没关掉Windows用netstat -ano | findstr 8080找到PID并结束进程7.4 第四步前端资源加载不出来怎么办前端能打开登录页面但页面样式是乱的或者某个图标加载不出来多半是静态资源路径问题。Vue项目用public目录存放静态资源在引用路径上建议使用绝对路径如/img/logo.png而不是相对路径./img/logo.png否则部署到子路径环境下会出问题。如果Vue页面打开后一片空白控制台报各种关于module的错通常是依赖装得不完整直接删除node_modules目录重新npm install。7.5 第五步遇到这类问题先停一下自己思考很多同学遇到报错的第一反应是直接把报错信息复制到搜索引擎或者截图扔进群里。这没错但更高效的方式是先看报错信息里的前五行——尤其是Exception类型和描述性文字。比如你看到java.sql.SQLSyntaxErrorException那十有八九是SQL写错了看到NullPointerException那就去检查某个对象是不是没有被赋值。看懂报错信息的能力是编程基本功里很关键的一项答辩时如果被问到你是怎么排查这个问题的你能把这个过程讲出来会非常加分。8. 一些可以继续深化的小方向如果你做完了基础功能还有时间可以考虑在两三个方向上做一点小优化它们不只是加分项也能让你在答辩时更有谈资。防重复提交的幂等设计。正如前面提到的加一个submissionToken让每份问卷在用户手里只能提交一次。这个优化实现简单但能体现你对并发和数据一致性的理解。问卷的回收率统计。问卷系统不只是谁填了、填了什么管理员也很关心多少人看到了问卷但没填。你可以加一个统计字段记录问卷页面的访问次数和实际提交次数算出转化率。这个功能需要的不过是给访问接口加一条埋点日志但业务价值很明显。数据导出功能。把答卷明细导出成Excel文件使用EasyExcel或者Apache POI。管理员填完问卷后能一键导出数据做进一步分析是非常实用的功能。这个功能也很适合写在论文的功能模块里。基于角色的访问控制优化。现在的系统可能只是简单区分管理员和普通用户。如果能把权限做到更细粒度比如问卷管理员只能管理自己的问卷不能查看别人的问卷那就是一个合格的RBAC基于角色的访问控制模型了讲起来也能展示你对权限设计的思考深度。每个方向的工作量都不大两三天之内就能完成但对系统的完整度和论文的丰满度帮助很大。9. 我个人在实际操作中的几点体会做到这里整个项目已经从能跑到了能讲的阶段。我带的学弟最后答辩前我让他干了一件事自己对着项目把每个接口对应的表、每个表对应的字段、每个字段对应的含义口头讲一遍。讲不清楚的地方再回去看代码。这个过程相当枯燥但非常有价值。因为答辩时老师不一定看你的系统用得顺不顺畅更多的是看你对自己的代码、自己的设计熟不熟悉。另外如果你的源码是从网上拿来的建议不要原封不动地提交。至少做一点自己的改动和重构比如把一个工具类提取出来、优化一个查询SQL、加一个自定义异常处理类。这些改动在论文里都有地方写也在一定程度上避免雷同带来的被动。这个题目的上限不算高但下限也低不到哪去关键看你怎么理解和组织。把表结构讲透了把前后端数据流梳理清了把答辩可能问的问题提前想好答案这个项目就能稳稳地拿下一个不错的成绩。如果你在实操中碰到了具体的报错欢迎带着具体的日志信息来聊根据具体的报错去定位往往比通篇来看要快得多。本文还有配套的精品资源点击获取
返回列表