ARTICLE DETAIL

资讯详情

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

Android新闻推荐系统源码解析:从毕业设计到答辩实战指南

Android新闻推荐系统源码解析:从毕业设计到答辩实战指南 简介这是一套面向计算机、通信、人工智能等相关专业本科生的毕业设计级Android新闻推荐系统实现适用于课程设计、大作业及毕设参考尤其适合具备Java基础并希望实践移动开发与推荐算法结合的学习者。资源包含完整可运行的Android客户端源码、配套技术文档与部署说明代码经实际调试验证答辩评分高达98分具备扎实的工程规范性与教学示范价值。压缩包大小为24.57MB内含Java源文件、布局资源、配置文件及说明文档等典型Android项目结构文件涵盖用户行为采集、协同过滤推荐逻辑、新闻列表展示与个性化推送等核心模块。目前已有106人下载学习读者可直接导入Android Studio运行体验深入理解推荐系统在移动端的落地流程包括数据接口对接、本地缓存策略、UI交互优化及模块化架构设计思路为基础巩固与功能二次开发提供可靠起点。 拿到这个“毕业设计基于Android的新闻推荐系统源码文档说明.zip”我第一反应是这不是一个普通的App项目而是一整套可以拿去直接答辩的完整工程。很多同学在网上下载类似压缩包之后第一件事就是把代码往Android Studio里一拖然后等着编译通过。结果不是Gradle版本对不上就是SDK路径报错折腾两天连MainActivity都没看到。这篇东西我就站在“接手一个现成源码”的角度把新闻推荐系统这个项目怎么拆、怎么跑、怎么改、怎么讲清楚一次性说透。这个项目适合几类人第一类是毕业设计选了“Android开发”方向但自己写代码时间不够需要基于现成源码做二次开发的同学第二类是拿到源码之后不知道怎么跟老师讲清楚“推荐算法”和“系统设计”的同学第三类是单纯想学Android项目结构、想看看新闻类App如何从零搭起来的学习者。不管你是哪一类这篇文章都会按“先整体认知、再跑通工程、最后改造升级”的顺序带着你把这个压缩包里的价值全部榨出来。1. 内容整体设计与思路拆解拿到压缩包之后先别急着双击1.1 先用10分钟看目录结构判断这个项目的“含金量”不管是哪个渠道下载的源码包解压之后第一件事不是打开Android Studio而是用文件管理器把整个目录结构过一遍。一个规范的毕业设计源码包至少应该包含这几个部分工程代码目录通常是一个完整的Android项目根目录里面会有app模块、build.gradle、gradle等文件。数据库脚本或数据文件可能是.db文件也可能是news.sql之类的初始化脚本。文档说明一般有开题报告、论文正文或至少论文大纲、答辩PPT、演示视频等。额外的服务端代码可选有些项目带一个简单的Spring Boot或Servlet新闻后台有些则用Bmob、LeanCloud这种云数据库。我拿到一个包会先看有没有README或者“使用说明.txt”。凡是规范的毕业设计源码包作者都会写清楚运行环境要求、JDK版本、Android SDK版本、Gradle版本甚至列出需要手动导入的依赖库。如果你打开的包里面什么说明都没有只有一堆代码那就要有心理准备后面的环境适配可能会比较折腾。1.2 理解新闻推荐系统的技术栈组成“新闻推荐系统”这几个字看起来是一个话题实际上在Android端项目里至少包含三个层面的技术第一层是Android应用层。涉及Activity/Fragment的界面搭建、RecyclerView列表展示、异步网络请求通常用OkHttp或Volley、图片加载Glide或Picasso、本地缓存SQLite或SharedPreferences、下拉刷新和加载更多SwipeRefreshLayout RecyclerView分页。第二层是推荐逻辑层。这是整个系统的灵魂。常见的毕业设计不会用太复杂的深度学习模型绝大多数采用“基于用户的协同过滤”或“基于物品的协同过滤”再配合最简单的热度排序和分类浏览。数据来源是用户点击行为、收藏行为、浏览时长等。算法代码通常维护在utils或recommend包下独立于UI方便讲解。第三层是数据服务层。新闻数据从哪里来有的项目直接抓取公开的API比如天行数据、聚合数据的新闻接口有的项目在服务端用Java爬虫定时抓取新闻然后存库还有的是在App端内置一个JSON文件把新闻数据固化在里面。这三种方案难度差异很大也直接决定了你答辩的时候能讲多深。1.3 判断文档说明够不够支撑你毕业答辩很多人下载源码之后只看代码忽略了配套的Word文档。其实毕业设计打分论文占的比重相当高。你要做的第一件事是把论文从头到尾翻一遍重点看几个部分系统需求分析章节看作者怎么描述用户角色和功能需求这对应你后期写“自己”的开题和需求分析。系统设计章节看有没有架构图、功能模块图、数据库E-R图、时序图。这些图在答辩PPT里非常重要。算法与核心代码章节如果论文里对推荐算法有详细推导那太好了你可以直接复用其中的公式、流程图和复杂度分析把推荐逻辑讲得明明白白。测试章节有没有功能测试用例表、性能测试数据。如果在论文里已经有测试表格你演示的时候照着演示就行。一个靠谱的源码包文档必然是齐全的。如果压缩包里只有源码没有文档我的建议是把项目跑通之后按照下面的章节框架自己补一套文档——需求分析、系统设计、数据库设计、核心算法实现、系统测试、总结与展望。虽然工作量不小但比答辩时被老师问住强得多。2. 核心细节解析与实操要点推荐算法到底在推荐什么2.1 基于用户的协同过滤UserCF是怎么落地的新闻推荐系统里最高频出现的算法就是UserCF。它的核心思想特别像“人以群分”如果用户A和用户B历史点击的新闻重合度很高那么A点击过而B没看过的新闻就很可能也符合B的口味。具体实现时一般分三步。第一步构建“用户—新闻”评分矩阵。矩阵的行是用户列是新闻值是用户对新闻的交互程度。很多毕业项目把“点击”记为1分“收藏”记为2分“分享”记为3分也有项目直接用“浏览时长”做归一化作为分数。这一步的代码通常写在RecommendUtils.java里从SQLite中读取行为记录然后构建稀疏矩阵。第二步计算用户之间的相似度。毕业设计里一般用余弦相似度或皮尔逊相关系数。余弦相似度的公式是两个用户的评分向量做内积再除以两个向量模长的乘积。假设用户1的评分向量是[1,0,2,3]用户2是[1,2,0,3]那么相似度就是(1×10×22×03×3)/(√14×√14)≈0.714。代码写起来不复杂两个for循环就能搞定但要注意稀疏矩阵里大量为0的项会白白消耗性能所以很多代码会用HashMap存储非零项。第三步为当前用户生成推荐列表。找到与当前用户最相似的K个用户K通常取5到10把这些用户点击过、但当前用户没看过的新闻拿出来按“相似度乘以用户对新闻的评分”加权求和取TopN返回给界面展示。这就是“猜你喜欢”那一栏的由来。2.2 基于物品的协同过滤ItemCF如何兜底UserCF在用户量少的时候容易失效因为如果总共才几十个注册用户相似用户根本算不出来。所以很多毕业设计会再做一个ItemCF做兜底。ItemCF的思想是“物以类聚”计算新闻之间的相似度然后根据用户历史点击过的新闻推荐相似的新闻。比如用户经常看“科技”频道里关于芯片的新闻系统就会找到与这些新闻正文相似度最高的其他新闻推荐出去。相似度计算通常不是直接比文本而是看“两个新闻被同一批用户点击的共现次数”。简单说用户点击了新闻A和新闻B那A和B之间就产生了一次关联。这种方式不用处理中文分词和TF-IDF数据量小实现成本低非常适合毕业设计。更聪明的项目会在文本层做相似度。先用开源分词器比如jieba对新闻标题和正文分词然后提取关键词计算TF-IDF向量再做余弦相似度。这个方案讲解起来更有深度答辩时可以重点阐述。2.3 冷启动、热门兜底和多样性控制的坑几乎所有推荐系统都要面对“冷启动”问题。新闻推荐里最常见的表现是一个用户刚注册没有任何点击行为这时候推荐算法完全失效。毕业设计的常规做法是用“热门新闻”兜底按点击量倒序取前20条展示在首页。按频道分发用户选择“体育”“科技”“娱乐”等频道后直接按该频道的热度排序推荐。随机探索在列表末尾混入几条低热度新闻测试用户是否感兴趣为后续推荐积累数据。我见过不少项目在“多样性”上翻车推荐出来全是同一个领域的新闻用户点了几条体育新闻之后整个页面就变成体育专区了。解决办法是简单粗暴地做“类别打散”——排序后每连续4条新闻不能全部属于同一个分类否则用下一个不同分类的新闻插入。这个逻辑代码量不大但能在答辩演示时明显提升体验。3. 实操过程与核心环节实现把工程跑起来并替换成你的项目3.1 Android Studio的环境适配Gradle、SDK和JDK版本怎么调拿到别人源码最怕的就是对方用Android Studio 3.x写的你装了Android Studio Koala版本Gradle版本完全不兼容。我的建议是三步走。第一步先看gradle-wrapper.properties里的distributionUrl确认对方用的Gradle版本。如果版本特别老比如4.4而你本机的JAVA_HOME已经指向JDK 17大概率会失败。老项目要求JDK 8所以你可能需要再装一个JDK 8并在Android Studio里给项目单独指定JDK路径。第二步看app/build.gradle里的compileSdkVersion、minSdkVersion和targetSdkVersion。如果compileSdkVersion是28你在Android Studio里面至少需要下载SDK Platform 28才能编译通过。不用怕配置一下Android Studio会自动下载。第三步手动同步一次Gradle。点击File - Sync Project with Gradle Files等待下载依赖。如果网络不行建议给Gradle配置阿里云镜像在工程根的build.gradle里加上buildscript { repositories { maven { url https://maven.aliyun.com/repository/public } maven { url https://maven.aliyun.com/repository/google } google() mavenCentral() } }依赖下载虽然耗时但是一次性的。如果某个依赖特别大比如com.android.support:appcompat-v7耐心等就行别反复取消重试重复下载更浪费时间。3.2 数据库初始化新闻数据从哪来用户行为表怎么建新闻推荐系统的数据层有两种常见形态一种是SQLite另一种是服务端MySQL。如果是纯Android项目数据一般存在App私有目录下的news.db里。很多源码包会附带assets/database/news.dbApp启动时把它复制到getDatabasePath()里面这样数据库初始化就能自动化。打开数据库后你通常会看到这几张表news表存新闻ID、标题、正文、分类、来源、发布时间、封面图URL、点击量。user表存用户ID、昵称、注册时间。behavior表存用户行为记录包括用户ID、新闻ID、行为类型点击/收藏/分享、行为时间。feedback表可选存用户对推荐结果的反馈比如“不感兴趣”。理解表结构是你改项目的基础。如果你想把新闻换成自己的内容只需要把news表里的数据替换成你自己的SQL插入语句界面不需要改动。如果想把新闻数据改成从网络获取就需要在数据源层做文章把DatabaseHelper里的查询改造成Retrofit或OkHttp的API调用。3.3 核心推荐模块代码的逻辑梳理无论代码包装成什么样推荐模块的入口一般就一个RecommendService或者RecommendManager。它会读取当前登录用户的ID然后按下面这个伪代码流程执行public ListNews getRecommendNews(int userId) { ListNews result new ArrayList(); // 1. 获取用户行为记录 ListBehavior behaviors behaviorDao.getBehaviorsByUser(userId); if (behaviors.size() 5) { // 冷启动返回热门新闻 return newsDao.getHotNews(20); } // 2. 计算相似用户 ListInteger similarUserIds userCF.findSimilarUsers(userId, 5); // 3. 获取相似用户点击过的新闻 SetInteger candidateNewsIds new HashSet(); for (int uid : similarUserIds) { ListBehavior userBehaviors behaviorDao.getBehaviorsByUser(uid); for (Behavior b : userBehaviors) { if (!behaviorDao.hasUserClicked(userId, b.getNewsId())) { candidateNewsIds.add(b.getNewsId()); } } } // 4. 加权排序 result rankNews(userId, similarUserIds, candidateNewsIds); // 5. 多样性打散 result diversify(result); return result; }我自己看代码的时候习惯在关键方法上打日志用Log.d(Recommend, similar user: uid , score: score)把中间结果打出来。这样跑一次App就能看到“系统为什么推荐这条新闻”答辩演示的时候直接展示日志相当于把算法过程可视化老师会觉得你对代码的理解非常透彻。3.4 UI层怎么从“能跑”改成“能答辩”默认的新闻App界面通常基于Material Design会有底部导航栏、首页ViewPager、新闻列表RecyclerView、详情WebView。如果你想在答辩时让人眼前一亮不需要大改只需要做三处小改动。第一处是首页顶部加一个“个性化推荐”的开关或者Tab点进去展示“猜你喜欢”。这样你可以在答辩时先点开默认的“推荐页”再切到“热门”Tab对比展示清晰体现系统的推荐能力。第二处是新闻卡片加一个“不感兴趣”按钮。这在UI上实现非常简单一个ImageButton加上点击监听点击后把当前新闻ID写入feedback表并在列表中移除。这套交互能直接证明你的系统有“反馈闭环”在答辩里是非常加分的点。第三处是加一个数据统计页面。用Android自带的图表库比如MPAndroidChart画柱状图展示“用户点击量Top5新闻”“频道分布”“每日点击量趋势”。这些图表在演示时比一堆列表文字有说服力得多而且实现成本也就是一个Activity加一个Chart库的依赖。4. 常见问题与排查技巧实录那些让源码跑不起来的坑4.1 “The ‘android’ command is no longer available”这个问题特别常见尤其是老项目配老文档。旧时代的开发工具链依赖android命令行但现在的Android Studio已经移除这个命令。发现报这个错不要着急只需要把项目里的构建方式改成Gradle方式即可。基本上跑一次gradle syncAndroid Studio会自行处理构建工具的调用不再依赖android命令。如果项目里有一个command-line或ant.properties文件里面写了sdk.dir之类的配置检查一下路径是否正确。或者干脆把这些中间文件删掉重新用Android Studio导入。4.2 数据库复制失败、表结构对不上我遇到过很多次App启动后白屏或者直接闪退日志里报SQLiteException。这种情况十有八九是assets里的数据库文件没有正确复制到私有目录或者复制的是旧版本但代码里已经引用了新版表结构。排查方法很简单用adb shell进入应用的目录adb shell run-as com.example.newsapp ls databases/ sqlite3 news.db .schema看到实际表结构之后和DatabaseHelper里的CREATE TABLE语句对比不一致就是问题。修复方式是删掉App数据重新安装或者手动执行ALTER TABLE补字段。注意在真机上调试时每次修改数据库结构记得在代码里把数据库版本号加一否则onUpgrade不会触发。4.3 新闻图片不显示如果列表文字都正常但缩略图全是空白最常见的原因是图片URL用的还是http明文链接而Android 9.0及以上系统默认禁止明文流量。解决方法有两个一是把targetSdkVersion降回27不推荐治标不治本二是在AndroidManifest.xml里给application加上android:usesCleartextTraffictrue允许App访问http资源。如果加了这个属性还是加载不出来那就打开Logcat看Glide或Picasso的输出。有些图片是防盗链的需要在RequestHeaders里加上登录Cookie或者Referer。在毕业设计里最稳妥的做法是下载一批图片放到项目的drawable或assets目录新闻数据直接引用本地图片资源一来不依赖网络二来演示时绝对稳定不会出现教室网络不好导致图片刷不出来的尴尬。4.4 推荐结果永远为空或永远相同推荐结果固定不变通常是行为表里没有当前用户的数据代码走了“热门兜底”分支所以每次进来都是一样的。这种情况在答辩前一定要排查掉。给系统准备一个演示账号提前在这个账号下人工录入几十条行为记录横跨多个频道比如科技类10次点击、体育类5次、娱乐类2次。这样打开App后“猜你喜欢”才能展示出差异化结果。如果推荐结果每次都是空的则要关注日志里有没有“candidateNewsIds is empty”之类的打印。出现空集合的原因一般是相似用户计算无结果或者候选新闻和当前用户点击过的新闻完全重复。把K值调大从5改成8或者10通常能缓解。4.5 编译期报错符号找不到 / 包不存在这类问题大多是因为依赖库没下载完整或者项目引用了本地libs目录下的jar包而jar包没有随压缩包一起发布。解决方式是检查app/libs目录下有没有对应的.jar或.aar文件。如果缺失去网上找同名依赖或者用implementation方式从Maven仓库引入替代本地jar包。还有一个隐蔽问题是Java版本不匹配。如果项目代码里用了var关键字或Lambda表达式而编译的JDK版本过低会报奇怪的语法错误。在build.gradle里设置compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }大多数兼容性问题都能解决。5. 工具选型与二次开发路线让你的毕设真正“变成自己的”5.1 如果要在服务端加接口选择哪种后端方案很多同学的毕业设计题目是“基于Android的新闻推荐系统”但实际做出来只有一个纯本地App后台数据全靠SQLite。这种方案虽然能跑但答辩时容易被问“这算系统吗”所以有条件的话建议在项目里加一层服务端。服务端选型有三个主流方案Spring Boot MySQL最稳妥面试和答辩认可度最高。但学习成本高部署相对复杂。微信小程序云开发或Bmob配置简单只需导入依赖不用自己买服务器适合时间紧的同学。Python Flask SQLite代码量极小三天就能写一个基础接口部署到云服务器或者本地局域网环境即可。我的建议是如果时间还够两个月就选择Spring Boot。它不需要多复杂的代码逻辑只提供新闻列表接口、用户行为上报接口、推荐结果接口三个端点即可。Android端通过网络层调用整个系统的架构宽度一下子就打开了。论文里可以画系统架构图客户端、服务器、数据库三层展示起来非常规范。5.2 推荐算法可以升级的4个方向如果推荐算法已经实现了UserCF和ItemCF你想让算法部分更有亮点可以考虑以下升级方向按难度从低到高排列融合特征引入新闻的发布时间因子对越新的新闻加权比如评分乘以一个随时间衰减的权重exp(-age/τ)。加权混合推荐把热度分和协同过滤分做线性融合比如finalScore0.6*cfScore0.4*hotScore并在实验部分对比不同权重的效果。基于内容的推荐做新闻文本的TF-IDF向量推荐与历史阅读文本相似度高的新闻。在线学习每次用户点击后实时更新新闻的权重或用户的兴趣向量而不只是批量离线计算。答辩时最讨喜的讲法不是堆算法而是做一个“对比实验”旧方案用户点击率是多少新方案提升到多少。哪怕没有真实用户你也可以用日志回放的方式模拟在论文里给出数值对比。这个思路比单独说“我用了协同过滤”要有说服力得多。5.3 二次开发中UI改版需要注意的事项改UI是很多同学拿到源码后最爱做的事。常见的目标包括换主题色、换App图标、换新闻卡片布局、加启动页。这些操作本身不难但有几个细节需要特别注意第一App图标需要适配不同Android版本。你在mipmap-*各个目录下放的图标尺寸要齐全缺了mipmap-xxxhdpi部分高分辨率设备会显示模糊。第二换主题色时除了colors.xml里的colorPrimary、colorPrimaryDark、colorAccent还要注意状态栏颜色、底部导航栏选中颜色。有些项目用了Theme.MaterialComponents需要同步修改themes.xml。第三如果改了包名整个项目会出大问题。不要随便在Android Studio里点击“Refactor - Rename Package”你以为你改了包名但实际上Gradle配置、Manifest、类引用可能全部错乱。更安全的做法是保持原包名不动只改App名称和应用图标从外面看完全就是一个新项目。如果必须改包名建议用全局替换工具把com.example.oldname全部替换成新的com.example.newname然后逐一检查AndroidManifest.xml和build.gradle里的applicationId。6. 毕业设计文档与答辩演示的关键准备6.1 文档结构怎么整理最稳妥一份完整的毕业设计文档即使你是基于别人源码改的也必须自己重写核心章节避免查重直接爆红。建议按下面的结构组织第一章 绪论写课题背景、国内外研究现状、本课题研究内容与意义。第二章 相关技术介绍Android开发技术、推荐算法基础协同过滤、SQLite或MySQL数据库、网络通信框架。第三章 系统需求分析功能性需求注册登录、新闻浏览、推荐展示、行为反馈和非功能性需求性能、易用性。第四章 系统设计总体架构图、功能模块图、数据库表设计、推荐算法详细设计。第五章 系统实现每个模块的关键代码展示与截图重点展示推荐算法核心代码。第六章 系统测试测试环境、功能测试用例表、测试结果分析。这里面最花时间的不是写代码而是画图和表格。我建议用Visio或draw.io画架构图用ProcessOn画流程图表格一定要用三线表。论文里图的数量建议不低于15张表不少于8个这是大多数学校对毕设工作量的基本期望。6.2 演示视频和答辩PPT怎么做答辩现场你不可能花10分钟去跑Gradle。很多学校的流程是先播放或者现场演示App功能然后讲PPT再回答老师提问。如果现场演示请务必提前准备一台已配置好环境的电脑模拟器要提前打开App要提前登录演示账号新闻列表数据要提前加载出来。不要当场连网线、连数据库、等Gradle同步任何一步出错都可能影响你十分钟的展示节奏。演示流程建议固定为进入App首页展示推荐列表。点击三篇新闻形成行为记录。切到“猜你喜欢”Tab展示推荐结果的变化。点击“不感兴趣”按钮展示该条新闻从列表消失。进入个人中心展示历史点击记录和统计图表。打开后台数据库管理界面如果有展示行为表和新闻表数据变化。答辩PPT控制在15-20页重点页分别是系统架构图、数据库表设计、推荐算法流程图、核心代码截图、测试结果表。不要贴一大段代码老师没时间看。代码只展示核心方法签名和关键分析。6.3 老师最常问的12个问题提前准备好答案根据我带过的毕业设计经验新闻推荐系统方向的答辩问题高度集中在几个方向提前准备就不会慌为什么选协同过滤不选深度学习冷启动怎么解决相似度计算用的什么公式数据稀疏怎么办新闻数据来源哪里是爬虫还是接口还是内置推荐系统的评价指标是什么点击率如何统计数据库有几张表为什么这么设计如果用户量增长到10万你的系统会不会崩溃如何防止推荐的新闻同质化信息茧房你的推荐结果有没有做过人工评估相比商业推荐系统你的系统缺少哪些模块系统安全方面做了什么SQL注入、越权问题这个系统后续还可以怎么扩展6.4 论文查重和降重提醒如果你在源代码和论文中引用了大量他人内容论文查重环节很可能出问题。在提交前建议自己做一遍初检。降重的核心方法是“结构重写”把别人的一句话拆成两句话换主语换句式把“实现”改成“完成”“构建”“落地”把“系统”改成“应用”“平台”。特别需要注意算法描述部分公式不能改但对公式的解释说明一定要用自己的话写。另外不要直接在论文里放源码包里的“使用说明.txt”内容那不是学术语言。你可以把它改写成“系统运行环境”和“部署步骤”两个小节表述方式变成“本项目在Windows 10环境下使用Android Studio 4.0开发Gradle版本为6.1.1编译SDK版本为29”。7. 最终自查清单提交前的24小时我根据自己多年看毕设源码的经验整理了一份提交前的自查清单建议你逐条打勾[ ] 工程能在自己电脑上无错误编译并安装到真机/模拟器。[ ] 用“演示账号”登录后推荐列表有内容且与未登录时的热门列表有可见区别。[ ] 新闻图片、新闻详情页能正常打开不会因网络问题白屏。[ ] 数据库里的行为表已提前灌入数据推荐结果稳定可复现。[ ] 关闭网络后App的本地缓存模式能展示已有新闻防止教室断网。[ ] 论文全文在自己电脑上打开页码、目录、图注、表注正常并已生成PDF版。[ ] 答辩PPT没有直接复制论文的大段文字而是提炼了要点。[ ] 源代码里没有遗留作者的个人信息或无关文件。[ ] 演示视频已录制并把源码、文档、PPT、视频打包成最终提交目录。[ ] 已用压缩软件把全套文件压缩压缩包内文件夹命名规范、层级清晰。8. 最后再分享一个小技巧把新闻推荐系统改成你自己的毕设最高效的顺序不是“先看代码、再改代码、最后写论文”而是“先看论文目录、再跑工程、再写论文、最后反哺改代码”。你先把论文的结构定下来图片和表格清单列出来再去代码里找对应的截图和实现。你会发现论文的每一章都有代码可对应代码的每一个模块都有论文可解释。这种“文档驱动开发”的方式能让你在仅仅一个月的冲刺时间里把一个下载来的源码包变成一份能从容应对答辩的毕业设计。我自己当年接手类似项目的时候踩过最大的坑就是一上来就钻代码逻辑结果浪费了三天在无关紧要的细节里最后论文几乎没动笔。后来改成先搭文档框架再对照文档逐块看代码效率翻了不止一倍。希望这篇东西能帮你少走同样的弯路把毕业设计这件事稳妥落地。本文还有配套的精品资源点击获取
返回列表