ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

课程设计/毕业设计通关指南:源码、数据库与万字文档一次讲透

课程设计/毕业设计通关指南:源码、数据库与万字文档一次讲透 每到学期末总会有学弟学妹拿着项目标题来找我说老师给了个题目要求附源码、附数据库、再写万字文档看着就头大。这类标题自己写完一遍之后再看其实模板味道很重无非是“课程设计/毕业设计 附源码 附数据库 万字文档”这几个定语堆在一起但真正卡住人的从来不是标题本身而是标题背后那一整套不知道从哪下手的交付流程。我接过不少这类项目的辅导和评审也自己完整写过好几个可以作为参考的课程设计项目包括用 Java 写的音乐管理系统、学生信息管理系统、图书借阅系统等等。今天这篇就把这套东西拆开了讲清楚源码怎么写才能拿高分、数据库怎么设计才经得起答辩追问、万字文档怎么凑得又快又像样。我用一个实际项目作为贯穿案例就是“跨平台音乐管理系统 v2.0”这个选题很典型难度适中、功能边界清晰非常适合当作课程设计或毕业设计的参考样板。如果你正对着“附源码、数据库、万字文档”这种要求发愁那这篇文章基本能帮你在脑子里把整条路搭起来。1. 先搞懂课程设计/毕业设计到底在考什么1.1 为什么同样是“系统”有人高分有人被要求重做很多学生拿到这种题目第一反应是“我要写一个能跑的代码”然后一头扎进 IDE 里猛敲键盘。这个思路从一开始就偏了。课程设计或者毕业设计本质上不是代码竞赛而是一次对你“完整走完一个项目流程”的能力检验。老师要看的不是你的代码量有多大、用了多新的框架而是你清不清楚一个项目从头到尾要经历哪些阶段能不能把需求分析、系统设计、编码实现、测试验收这几个环节说清楚。我遇到过太多例子代码确实能跑增删改查都有但一问“你这个表为什么这么设计”“登录密码怎么存安全”“多个人同时操作会有什么问题”直接就沉默了。这样的项目哪怕运行效果再花哨分数也上不去。反过来有些项目代码量不大功能也算不上酷炫但设计文档逻辑清晰数据库关系合理关键技术点答得上来反而能拿到不错的评价。所以拿到“附源码、数据库、万字文档”这个要求时你首先得意识到源码、数据库、文档是三件相互印证的东西而不是三个独立的任务。源码要能体现你懂设计数据库要能体现你懂数据关系文档要能体现你懂项目流程。三者的逻辑必须自洽老师一问就能串起来。1.2 交付物只有三样但每样的配比有讲究我帮人看项目的时候发现一个普遍问题时间分配严重失衡。80%的时间花在写代码上剩下20%里又分出大部分去调 bug最后真正留给数据库设计和文档的时间可能连5%都不到。这个比例放到评分体系里看是极其不划算的。按我个人的经验一门课程设计的评分权重大概是这样的系统实现的功能完整度占40%数据库设计占20%文档质量占20%答辩表现占20%。具体比例每个学校、每个老师不一样但大差不差。你花了80%时间做的那部分只占40%的权重而数据库和文档合起来轻易就是40%以上这还不算答辩中“文档和数据库被提问”的比例。所以正确的配比应该是编码占50%~60%数据库设计占20%~25%文档占20%~30%。如果时间实在来不及我宁可你把代码功能稍微砍一点也要保住数据库和文档的完成度。一个功能少但完整、有文档支撑的项目远比一个功能多但讲不清楚来龙去脉的项目更安全。2. 选题定方向如何挑一个“撑得起篇幅又做得完”的题目2.1 公认的稳妥选题长什么样我见过太多人在选题上翻车要么选了一个过大过难的题目做到一半发现根本做不完要么选了一个过于简单的题目文档写到第三章就没东西可写了硬凑字数凑得自己都看不下去。所以选题这事本质上是在“撑得起篇幅”和“做得完”之间找一个平衡点。拿“跨平台音乐管理系统 v2.0”来说它就是一个非常典型的“课程设计黄金选题”。为什么这么说第一需求边界清楚音乐管理系统就是管歌曲、专辑、歌手、歌单、用户功能无非是浏览、搜索、收藏、播放、评论这些谁都听得懂不需要你做市场调研也不需要跟真实用户确认需求。第二技术覆盖面够广又不至于失控有用户登录注册就要设计用户表和权限控制有歌曲和歌单就要设计多对多关系有播放统计或收藏排行就要写统计查询这些知识点刚好覆盖了数据库课程和Java课程的绝大部分考点。第三演示效果好音乐系统天然带界面交互答辩的时候演示起来非常直观比演示一个纯后端命令行工具要有说服力得多。类似的稳妥选题还有学生信息管理系统、图书借阅管理系统、宿舍管理系统、在线考试系统、二手交易平台。这类系统的共同点是领域不需要很深的前置知识功能结构是标准的增删改查加若干统计报表数据库关系复杂度适中文档可以按照软件工程的标准章节逐段展开。说白了它们是“标准动作”的集合刚好用来训练完整流程。2.2 技术栈选择不要为了炫技而选重型框架技术栈怎么选直接决定你后面编码和写文档的难度。很多学生喜欢一上来就上 Spring Boot Vue 前后端分离理由是“企业里都在用”。这话没错但企业项目有团队、有测试环境、有持续集成你一个人做课程设计只有一台电脑和一周到一个月的deadline情况是完全不一样的。课程设计的技术栈选择核心原则是你熟悉什么就用什么而不是什么流行就用什么。如果你整个学期都在学 Java 基础那 Java Swing JDBC MySQL 就是一个很稳的组合。它虽然是桌面应用但该有的分层思想、数据库访问逻辑、异常处理、事件驱动全都有足够你在文档里写出漂亮的架构图。如果题目明确要求 Web 方向那用 JSP Servlet MySQL 也比硬上前后端分离要安全你不需要处理跨域、不需要写前端工程化配置、不需要考虑接口鉴权中间件这些额外复杂度对课程设计来说纯属负担。选 Spring Boot 也不是不行但你得想清楚两个问题第一答辩现场或演示环境能不能顺利跑起来Maven 依赖下载会不会卡半天Java 版本不匹配怎么办第二文档里能不能把框架自动帮你完成的事讲清楚比如 Spring Boot 内置 Tomcat 帮你处理了HTTP请求老师一问你“请求是怎么进来的”你能不能解释明白。如果这两个问题你都有把握那用框架没问题。但如果你只是想“显得高级”我劝你算了。我见过太多人选了框架之后被老师一句“那你说说 IoC 和 AOP 的具体场景”直接问住的场景非常尴尬。3. 源码设计把“能跑”变成“加分”3.1 分层设计——让老师一眼看出你会写代码源码写得好不好外行看功能内行看结构。老师打开你项目的包结构如果看到的是一堆乱七八糟的类名堆在同一个包下面哪怕功能是完整的心里也会打个折扣。反过来一个清晰的分层结构能在一瞬间传递出“这人接受过良好训练”的信号。我建议的标准分包方式是这样com.music.player ├── view // 界面层存放窗体类 ├── controller // 控制层处理界面事件 ├── service // 业务层编写核心业务逻辑 ├── dao // 数据访问层封装数据库操作 ├── entity // 实体层对应数据表结构 └── util // 工具类如DBHelper、StringUtils这六个包就是很经典的MVC变体。view 只管画界面、接收用户点击事件然后把事件交给 controllercontroller 不直接写 SQL而是把请求转发给 serviceservice 做业务判断比如“用户名是否重复”“库存是否足够”service 调 dao 接口dao 管真正的增删改查entity 里的每个类对应数据库里的一张表。每一层只干自己该干的事。为什么课程设计要求分层因为分层意味着可维护性和可测试性。文档里你能写“本系统采用分层架构各层之间通过接口交互降低了耦合度”然后画出调用关系图这在高分文档里是实打实的亮点。更重要的是分层能帮你避免一个致命缺陷一旦数据库表结构变动你只需要改 dao 层和 entity 层不会牵连到界面代码。而很多不写分层的学生改一个字段要全局搜索替换改完还容易漏。以音乐管理系统为例查询一首歌的完整调用链是用户点击歌曲列表 → view 层触发鼠标事件 → controller 收到请求 → service 调用 getSongListByKeyword(keyword) → dao 层执行 SELECT 语句并返回 List → service 把处理结果传回 controller → controller 刷新 view 层的表格。这个链路在你脑子里越清晰你的代码就越整洁文档里这段也可以原样写成时序图或者文字描述。3.2 核心功能的实现思路课程设计的功能不需要多但每个功能都得“撑得住追问”。我整理一下音乐管理系统里最常被老师拿出来问的几个功能点你也可以把这套思路迁移到自己的选题上。第一个是登录注册。很多人实现登录就是查一下用户名和密码是否匹配然后跳转界面太单薄了。稍微多想想密码要不要加密存储纯文本直接放数据库里是非常不专业的做法拿 MD5 或者 BCrypt 加密一次再入库成本极低但写进文档就是亮点。登录状态怎么保持是直接用全局变量存一个当前用户对象还是用 Session用 Session 的话超时时间设多少这些都能体现细节。还有登录失败的原因要区分“用户不存在”和“密码错误”避免把不必要的信息泄露给用户同时提升用户体验。第二个是核心的增删改查。不要只写一个通用的 CRUD 完事要把每个模块的实际业务规则加进去。比如歌曲模块新增歌曲时要判断歌手是否已经存在不存在就自动创建歌手修改歌曲时要考虑歌曲所属专辑是否发生变化删除歌曲时最怕的是外键约束直接抛异常所以要么先删关联的歌单歌曲关系要么用级联删除。这些细节是你文档中“业务规则设计”那一章的血肉。第三个是统计功能。音乐管理系统里可以做按歌手统计歌曲数量、按类型统计播放量、用户收藏排行等。统计功能的价值在于它一定会用到 GROUP BY、JOIN 这类稍微进阶的 SQL而老师非常喜欢问这些 SQL 的写法。你只要能在文档里配一个统计功能的实现说明比如“使用SUM和GROUP BY按月统计系统播放量”答辩的含金量立刻就上去了。第四个是事务处理。比如用户批量导入歌曲的时候中间有一条数据格式不对是全部回滚还是跳过这一条继续导入再比如播放一首歌要同时更新歌曲播放次数和用户播放记录表如果第二次更新失败怎么办这些就是事务的经典场景。你用 Java 的 Connection.setAutoCommit(false) 把多条更新包在一起成功了 commit失败了 rollback代码量不大但能写出的技术要点非常丰富。3.3 代码质量的四个细节第一命名要规范。类名大驼峰方法名小驼峰变量名要能看懂含义不要写 int a、String s 这种。类名比如 SongDao、UserService、MainFrame变量名比如 userName、playCount、createTime。老师尤其是老教师对命名规范很看重有些老师甚至看命名就能大致判断你的项目是不是自己写的。第二注释要有策略。不要每行代码都写注释那样看着特别新手。要在关键业务逻辑处加注释比如“这里做事务回滚因为需要同时更新主表和流水表”“这段查询用到了联合索引避免全表扫描”。这种注释能让老师快速定位到你的设计亮点答辩时你也知道该讲哪里。第三异常处理要有层次。不要在 DAO 层把异常 printStackTrace 一下就抛给用户要尽量在 service 层把底层异常捕获后转换成业务语义明确的提示比如“操作失败可能因为该专辑下仍存在歌曲请先删除歌曲”。这种细节能体现你真的考虑过运行时问题。第四要有日志或输出信息。哪怕是 Swing 桌面程序也建议在关键操作里用 Logger 输出日志。日志的价值主要体现在答辩排错时还有当你系统运行时偶尔崩了你能快速定位到是数据库连接失败还是空指针问题。4. 数据库设计这是容易被扣分也容易被发现亮点的地方4.1 从ER图到建表语句数据库设计这部分我建议投入的精力甚至比写代码还要多一点。原因很简单代码老师可能没有时间一行行看但 ER 图和数据表字段老师是一定会认真看的因为数据库是课程设计文档里最硬核、最没法编造的部分。还是拿音乐管理系统来说核心表至少要包含这些用户表 user、歌手表 singer、专辑表 album、歌曲表 song、歌单表 playlist、歌单歌曲关联表 playlist_song、用户收藏表 favorite、播放历史表 play_history。光看这些表名数据库设计的好坏就出来一半了。每张表的字段设计要注意几点。主键上用自增的 AUTO_INCREMENT不需要额外的业务含义。外键要明确建立索引不然联表查询性能差写进文档里的“性能优化”部分也有内容。时间字段统一用 DATETIME 或 TIMESTAMP并设置默认值 CURRENT_TIMESTAMP减少程序侧的赋值操作。文本字段要预估长度不要一张嘴就 TEXT比如用户名 VARCHAR(50) 就够了歌名 VARCHAR(100)简介可以上 TEXT。我给出两张核心表的简单建表语句示例方便你感受一下什么叫“看起来专业”的建表脚本。CREATE TABLE user ( id INT NOT NULL AUTO_INCREMENT COMMENT 用户ID, username VARCHAR(50) NOT NULL COMMENT 用户名, password VARCHAR(64) NOT NULL COMMENT 密码MD5加密存储, nickname VARCHAR(50) DEFAULT NULL COMMENT 昵称, role TINYINT NOT NULL DEFAULT 0 COMMENT 角色0普通用户 1管理员, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), UNIQUE KEY uk_username (username) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户表; CREATE TABLE song ( id INT NOT NULL AUTO_INCREMENT COMMENT 歌曲ID, song_name VARCHAR(100) NOT NULL COMMENT 歌曲名称, singer_id INT NOT NULL COMMENT 所属歌手ID, album_id INT DEFAULT NULL COMMENT 所属专辑ID, duration INT DEFAULT NULL COMMENT 时长秒, play_count INT NOT NULL DEFAULT 0 COMMENT 播放次数, create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, PRIMARY KEY (id), KEY idx_singer_id (singer_id), KEY idx_album_id (album_id), CONSTRAINT fk_song_singer FOREIGN KEY (singer_id) REFERENCES singer (id), CONSTRAINT fk_song_album FOREIGN KEY (album_id) REFERENCES album (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT歌曲表;注意这里的几个细节表名和字段名都加了反引号字段后都写了 COMMENT字符集统一 utf8mb4存储引擎用 InnoDB外键约束命名规范。这些细节放到文档里哪怕老师只是扫一眼建表语句也会觉得这个学生是认真做过功课的而不是随便拿网上的脚本糊弄。4.2 连接池与JDBC的取舍数据库访问这一块很多学生的代码里最常用的是 DriverManager.getConnection()每次操作数据库都现建立连接、用完关闭。这个写法在课程设计里不算错但完全经不起老师追问。我问你如果500个人同时访问这个系统你每秒钟要建多少个数据库连接MySQL 默认最大连接数是100多你建超过这个数试试看系统直接崩给你看。我建议在项目里引入一个简单的数据库连接池比如 HikariCP 或 DBCP哪怕只是用最基本的配置也行。理由很简单连接池的核心作用就是复用数据库连接避免频繁创建和销毁连接的开销。你可以在代码启动时初始化一个连接池然后每次需要操作数据库时从池子里借一个连接用完还回去。这个思想放在课程设计文档里就是一篇像模像样的“系统性能优化设计”。如果你们项目不允许引入第三方库那退一步你也可以自己写一个简单的 DatabaseHelper 工具类用静态代码块注册驱动提供一个通用方法 getConnection()核心是保证项目中所有数据库连接统一从这一个入口获取。这样写也能在文档里讲“统一管理数据库连接资源”至少比散落得到处都是 DriverManager 强。话题再说回 JDBC 本身。课程设计里用的 SQL 要避免拼接字符串最典型的错误是这种String sql SELECT * FROM user WHERE username name AND password pwd ;这种写法的风险用四个字就可以概括SQL 注入。虽然课程设计多半没有黑客来攻击你的系统但哪一天老师是“你这句是什么如果用户名里有个单引号会怎么样”你当场就卡住了。正确做法是用 PreparedStatement 预编译参数用占位符传递。这一改文档里你就多了一条“有效防止 SQL 注入攻击”的亮点。我见过不少课程设计项目代码写得粗糙但漏洞贼多最后分数被压低就是因为这种不经意的致命伤。4.3 数据初始化和备份我经常看到有人交上去的课程设计数据库里是空的老师打开系统歌单、歌手、用户什么都没有只能现场录入几条数据再演示。这给老师的体验感非常差也直接拉低了“系统完成度”的印象分。正确做法是准备一份数据库初始化脚本里面包含所有表的建表语句以及可以直接用于演示的初始数据。注意初始数据要精心设计比如系统里预先放二十首以上的歌曲涵盖不同类型、不同歌手预置一个管理员账号和一个普通用户账号并写明账号密码放在文档里预置的歌单要能体现多对多关系比如“摇滚精选”这个歌单下面至少关联十首歌。这样你答辩演示的时候随便点几下都有内容可以展示不用现场敲一堆测试数据。备份方面最简单有效的就是用 mysqldump 导出 SQL 文件。交付时你提交三个东西init.sql建库建表初始化数据、库结构说明文档、程序源码。老师只要在你的文档里看到“请先执行 init.sql 初始化数据库”然后跟着操作一次跑通整个流程的专业度立马就上来了。5. 万字文档最讨厌的环节也是最容易拿分的地方5.1 文档结构照什么来写文档的核心心态要摆正它不是让你把代码抄一遍而是让你用文字证明你做过真正的分析和设计。所以文档的章节结构一般不要自己瞎发明直接照软件工程教材的标准章节来老师看着熟悉你写着也有框架可依。一个标准的万字课程设计文档结构大致是这样绪论项目背景、意义、开发工具简介需求分析功能需求、非功能需求、可行性分析总体设计系统架构图、功能模块划分、ER图详细设计每个模块的流程图、类图、关键代码说明数据库设计表结构、字段说明、关联关系系统实现界面截图、功能演示说明测试测试计划、测试用例、测试结果总结与展望每一章的字数可以合理分配绪论和可行性分析相对容易凑800~1000字需求分析要写详细的功能列表、用例描述1500~2000字总体设计和详细设计是核心2500~3000字数据库设计1500~2000字系统实现配合截图1500~2000字测试加总结还可以来1000~1500字。这样一轮下来万字文档是很轻松的事而且内容还是扎实的不是拿无意义的废话硬凑。5.2 图表比代码更重要的是思路呈现钉死一条文档里不要贴大段源码但一定要有足够的图。ER图、用例图、时序图、系统架构图、功能模块图、核心业务流程图这六种是课程设计文档的基本配置。绘图工具我推荐用 Visio、ProcessOn 或者 draw.io画完导出成图片插到文档里。如果你不会画太复杂的图那至少也要画清楚的 ER 图和一张总体功能模块图这两张是老师通常看得最多的。图表的价值在于它能让老师快速抓住你的设计思路不用去读你几千字的长篇大论。我写文档的经验是每一章开头先用一张图概括本章核心内容然后围绕图来展开文字描述。你写“系统分为登录模块、歌曲管理模块、歌单管理模块、收藏模块、统计模块”不如直接放一张功能模块树形图一眼就能看明白老师也不用费力从字里行间找出你的模块划分。写模块描述的时候还有一个技巧每个功能模块下面先写“功能描述”一句话说清楚这个模块干什么再写“流程描述”用有序列表或流程步骤写出操作过程最后写“关键代码和说明”。三个层次下来一个模块就能写600~800字而且逻辑清晰、不重复。5.3 避免查重和“一眼假”你从网上下载一份现成的文档再改改这种事老师一眼就能看出来。为什么因为网上的模板很多年前就在流传用词风格、系统名称、图片水印、甚至某些字段命名到处都残留别人的痕迹。一旦老师去查重这种文档基本很难过关。更麻烦的是整份文档和你自己写的代码之间可能会存在逻辑矛盾。比如文档里写的表名和代码里的实体类对不上老师一翻源码就发现了。正确做法是把文档内容建立在你自己项目的基础上用自己的语言来描述。比如“登录功能”你不需要写什么高深的概念就写自己实现的具体逻辑“用户输入用户名和密码后系统先校验是否为空再调用 UserDao.findByUsername() 查询用户若不存在返回‘用户不存在’若密码不匹配返回‘密码错误’否则将用户对象存入全局会话变量并跳转到主界面。”这种话没有任何模板的感觉因为它是你的代码的真实映射虽然朴素但专业、可信。关于查重还想多说一句不要依赖查重网站的各种“降重技巧”比如颠倒词序、用同义词替换等方法改出来的文字痕迹很重。最好的降重方式就是基于自己的项目重新组织语言只保留必要的专业术语其余全部用自己的话描述。你自己的项目总归有足够的细节可以写根本不需要别人的话。6. 常见问题与踩坑实录6.1 环境类问题速查表我整理了课程设计从开发到交付过程中最容易遇到的几个环境问题这些坑几乎每个做这类项目的人都会踩到至少一两个。问题现象常见原因解决办法程序连不上数据库报Access denied用户名密码错误或权限不足检查MySQL用户和授权用GRANT ALL ON db.* TO userlocalhost中文乱码字符集不一致数据库连接URL加characterEncodingutf8建表统一utf8mb4ClassNotFoundException: com.mysql.jdbc.Driver没引入JDBC驱动JAR包把mysql-connector-java.jar加到构建路径或lib目录界面卡死无响应数据库查询耗时太长不要在事件派发线程里做耗时查询改用新线程或SwingWorker重新运行程序数据还在数据库持久化生效但代码没刷新界面从数据库重新加载数据到界面模型导出的SQL文件重新导入报错表顺序导致外键依赖冲突建表前先SET FOREIGN_KEY_CHECKS0或手动调整表的创建顺序部署到别的电脑上跑不起来JDK版本、MySQL版本不一致在文档里写清楚环境版本并附带MySQL初始化脚本6.2 一个经典的综合故障排查案例有一次我帮一个学生分析一个新闻发布系统的课程设计他遇到的坑非常典型在自己电脑上一切都正常把源码和数据库脚本打包发给老师后老师在另一台电脑上导入数据库时直接报错“Unknown column article_type in field list”。一开始他以为是自己建表脚本的问题反复检查 MySQL 版本、脚本语法都没找到原因。后来我让他打开老师的电脑看了一下我才明白原来他用的是比较新的 MySQL 8.0导出时用了 CHECK 约束和窗口函数等新特性而老师的电脑装的是 MySQL 5.7部分语法不支持导入就报了错。解决办法很简单导出SQL脚步时在 mysqldump 命令里加上 --compatiblemysql57 或者注释掉不兼容的特性尽量用最通用的语法重新生成初始化脚本。这个案例给我的启发是交付项目不仅仅是“我这边能跑”而是“在任何符合环境要求的机器上都能跑”。所以 final 阶段我建议你在安装有干净环境的虚拟机、或者另一台电脑上按照你文档里写从零开始的操作步骤从数据库初始化到程序运行完整走一遍。这招能发现大量你自己电脑上看不出来的问题比如忘了把某个配置文件一起打包、初始SQL路径写死、依赖库漏拷贝等等。6.3 答辩前一周的检查清单答辩的前一周其实已经没有大的功能改动了就不要折腾新功能了。这时候重点做下面几件事第一把系统从零完整跑通一遍从初始化数据库到登录到每一个功能点把过程中出现的任何报错记下来并修复。第二准备一套专门的演示数据每个功能模块要有能体现“效果”的数据。比如音乐管理系统里收藏数量最多的用户、播放次数最高的歌曲这些数据刚好可以在演示统计功能时用上。第三把文档里的截图全部替换成自己系统的真实截图。这一步很多人忽略但老师如果发现文档截图和系统实际的界面不一样印象分会大打折扣。第四自己对着文档口述一遍每个模块的设计思路和关键代码流程。不用背但要能做到“看到这个界面能说出它调用了哪个类、查了哪张表、SQL大概长什么样”这个程度。这是对你文档和代码一致性的训练也是答辩最实用的一步。第五想一下老师可能问什么刁钻问题并提前准备答案比如“并发的时候怎么处理”“密码怎么存的”“这个表为什么要冗余这个字段”“如果数据量大了怎么优化”。这些问题本身不难难的是你从没想过当场很难组织语言。最后再分享一个小技巧答辩展示时不要急着狂点功能先大概介绍一下系统定位和模块划分再按业务场景去演示。比如说“我们现在模拟用户登录登录后可以看到歌单列表点进去是歌单详情歌曲可以收藏也可以播放右下角有统计面板”。这样演示下来逻辑连贯老师跟着你的思路走提问也会更友好。我在实际带项目过程中发现最后拿高分的往往不是最聪明的学生而是那个把每一步都走完整、每个交付物都经得起追问的人。源码、数据库、文档这三样东西本质上是一套互相印证的证据链。代码里写的功能数据库里有对应的表支撑文档里画的图代码里能找到对应的实现老师无论从哪一端切入提问你都能顺着链条说到另一端去。这才是“附源码、数据库、万字文档”真正想考察的东西。
返回列表