一、起手:5万行数据引发的开发契机
高考刚结束,爸爸递给我一份Excel文件,里面存放着5万多行北京高考历年录取数据。平日里他习惯用Excel筛选查询院校、专业与录取分数线,但整套操作流程十分繁琐。
“爸,你一直用Excel查,不也能查到数据吗?”我有些疑惑。
“能用,但手机上体验很差,报志愿那几天手机随时查多方便。”他指着电脑屏幕略带激将法的说道,“每次查询都要重复点开筛选面板,院校数量多的时候,还要反复切换页面翻找数据,这些操作在手机上无法想象。你之前学过编程,能不能做一个专属查询网站?”
我简单浏览了这份数据集,内心很快有了答案。5万多行的录取数据,存入数据库仅占用数MB内存,数据结构清晰、关联简单,整体开发难度并不大。
这里我也想顺带说说自己的状态:高二下学期开始,我就再也没有写过代码,之前积累的编程知识基本都生疏了。我起初考虑过用Java开发,但对于这种轻量化的小型查询系统来说,Java有点杀鸡用牛刀了。初中搭建这个博客时,我曾经接触过 PHP+MySQL 的开发模式,时隔多年大部分细节早已遗忘,但好在当下AI编程工具愈发成熟,补足了我遗忘基础语法的短板,重新上手毫无压力。
“没问题,我给你做一套专属查询系统,查询速度、操作便捷性,全方位碾压Excel。”
于是乎就有了:https://gaokao.ryanlian.cn
二、开发策略:主次分明,借力AI高效开发
在我看来,做项目最高效的方式,就是聚焦核心功能,自主拆解需求、梳理逻辑,把繁琐重复的编码工作外包给AI工具。整套项目我在一天之内完整落地,分为四大开发步骤:
第一步:搭建基础版本,实现功能落地
核心目标:完成最简可用的MVP版本,实现基础的数据查询能力,优先保证项目能正常运行。
前端:直接套用成熟的Bootstrap模板,不用从零编写冗余CSS样式,节约开发时间;
后端:采用PHP+MySQL技术架构,搭建基础接口,实现数据库读写、数据查询核心能力;
基础功能:支持用户自主录入筛选条件,系统匹配数据库内容,以表格形式返回对应的录取数据。
本次开发我全程采用“人脑定思路,AI写代码”的模式:遇到体量较大、逻辑固定的函数模块,我只梳理完整实现思路,明确输入输出与功能细节,直接交给CodeGeeX编写,授权工具直接修改项目文件,生成的代码大概80%都可以直接投入使用;遇到需要反复推敲、权衡方案的核心逻辑,我便通过与DeepSeek对话,和AI多角度探讨最优实现
方式。
同时我借助AI快速生成表单、数据库连接等基础代码模板,前后仅耗时三小时,初代版本正式上线。虽然功能单一,但所有基础查询功能均可正常使用,彻底解决Excel操作繁琐的核心痛点。一天的功夫这个查询功能就搞定了。



第二步:优化查询逻辑,新增志愿推荐功能
核心目标:丰富功能模块,提升查实用性。
在已经完成按学校查询的基础上,我结合高考志愿填报的实际需求,新增冲稳保志愿智能推荐功能。该功能以考生高考排名为唯一核心依据,系统自动匹配历年院校专业录取位次,划分冲刺、稳妥、保底三个梯度,为用户推送适配的填报方案。
志愿填报本身是一项复杂的综合性决策,如何优化算法、整合多维度数据、打造真正智能化的志愿推荐系统,是我现阶段尚未攻克的难题。这也是我未来进入大学后,想要深耕学习的方向,希望后续能凭借更专业的知识,完善这项功能。
第三步:借力AI美化页面,完善使用体验
核心目标:优化页面UI、适配移动端设备,解决初代版本颜值低、移动端无法使用的问题。
第四步:拓展衍生项目,打造大学AI百事通
完成志愿查询网站后,我基于本次项目积累的经验,进行功能延伸。借助腾讯元器平台,自主DIY打造专属AI智能体。
网上有专门整理好的全方位的大学生活知识库,内容涵盖高考志愿填报科普、高校专业详解、各院校食宿环境、军训须知、选课技巧、食堂美食、宿舍情况等相关内容,把这些投喂给该智能体,再写一些回答要求的提示词(比如当被问到知识库中没有的知识时,只允许它查询教育部指定的几个官网和各大学官网,不要什么网站都去看)即可完成。然后就是写个html的壳,通过APIKEY调用我自己的智能体就好了。
最终打造出一款专属的大学百事通AI问答工具,不管是高三考生填报志愿的疑惑,还是新生入学后的各类问题,都能通过AI快速得到详细解答,实现从志愿查询到大学生活一站式服务。
三、项目核心难点与解决方案
1. “我的选科”与“选科限制”
我发给几个好友测试,因为选科限制是按字符排序的,“物/化”排在了“物+化”前面。我通过日志,发现选择“物/化”查询的人比选“物+化”的还多。要知道2023年之后“物/化”都已经改成“物+化”了,相比他们查询“2025年”+“物/化”是结果空空的。同时也有同学问我“我查询‘不限’为什么理科都没有啊,不是应该不限吗?”。
我才意识到大部分人是不太区分“志愿对选科的限制”和“我自己的选科”之间的匹配关系的。于是我马上行动,改进这一点,把我们自己的选科(6选3)所有20种排列组合与数据库中所有出现的选科限制之间做一个匹配关系表。C63的排列是20种,所有大学*所有年份的选科限制有近百种,要是以前这个对应关系就把人累死了,要不就害得为此写个程序去生成。好在现在有AI把意图告诉AI它不到1分钟就生成好了。不过这里也有雷,开始我相信的那个AI,到了第三天我才发现,它生成的数据中居然有 “物化生”<->"历史”,真是能气死谁!换了个AI重新生成,并交给第三个AI检查后我才放心。
2. “冲稳保”的边界
推荐志愿里面最关键的就是确定冲稳保的上下限。经过我和AI的讨论,最初我们的志愿推荐系统使用固定倍数:冲到0.75倍、稳到0.95倍、保底1.30倍。但实际运行中发现,顶尖学生(前500名)和低分学生(5万名后)用同一套参数效果极差。经过多轮迭代,我们最终采用6段式动态阈值配置:
-- 顶尖段(1-500名):0.65/0.90/1.20/2.50 —— 敢冲敢保
-- 高分段(501-2000名):0.68/0.90/1.18/2.20 —— 适度激进
-- 中高段(2001-10000名):0.72/0.92/1.15/2.00 —— 均衡策略
-- 中段(10001-30000名):0.75/0.93/1.12/1.80 —— 稳中求进
-- 中低段(30001-50000名):0.78/0.94/1.10/1.60 —— 谨慎保守
-- 低分段(50001名以上):0.80/0.95/1.08/1.30 —— 确保有学上
不过目前这个功能还存在明显局限性:仅能依托历史录取排名做单一维度筛选,无法综合考量院校地域、专业热度、招生计划变动、报考人数波动、个人兴趣特长等多重关键因素,智能化程度远远达不到理想状态。这里面可能蕴含着更加深层次的算法,甚至需要人工智能,我也很期待大学中能学习到这部分知识。
3. 访问性能优化
即便数据量不大,我也尽可能优化查询算法,降低服务器压力、缩短响应时间。
原始方案:每次接收用户查询请求,都执行多表联查,冗余运算较多;
优化方案:采用预加载+数据缓存策略,用户进入首页时,系统自动缓存对应省份的院校列表,缓存有效期1小时,有效减少重复数据库请求。
// 首页加载时缓存对应省份院校列表
$colleges = $cache->get('colleges_'.$province);
if (!$colleges) {
$colleges = queryFromDB();
$cache->set('colleges_'.$province, $colleges, 3600);
}4. 安全性考量
可能除了几个好朋友外没人会来访问,但是出于安全的考量,我还是在主要功能都做完之后,给系统添加了每日查询限制,避免爬虫来骚扰。
四、双向打磨:在需求反馈中优化产品
在项目迭代的过程中,爸爸站在使用者的角度,给我提供了很多高质量的优化建议。他从实际填报、日常查询的使用场景出发,指出产品现存的细节问题,帮我补齐很多我忽略的用户视角短板。
爸爸:“备注信息现在绑定在院校板块里,逻辑不对。这类备注大多是针对单个专业的,应该迁移到专业详情下方。”
我核查数据库字段属性后发现问题属实,第一时间调整数据绑定逻辑,适配真实使用场景。
爸爸:“绝大多数家长只关注普通本科批次,能不能默认选中普通批次,减少用户操作?”
我同步优化前后端配置:前端页面初始化默认选中普通批次,后端接口增设默认筛选条件。
爸爸:“手机端的数据表格宽度太大,左右内容展示不全,浏览体验很差。”
我针对性优化移动端样式,为表格添加横向滚动功能,取消多余固定列,适配手机屏幕尺寸。
整个磨合过程简单高效:使用者明确使用痛点与优化方向,我用技术手段落地对应的功能,双向互补,快速打磨出适配大众的实用工具。
五、AI赋能编程:感恩与专业选择的深度思考
这次项目从零到一的快速落地,我由衷感谢当下完善的AI编程生态。
搁置代码近一年,语法细节、各类函数写法我早已遗忘大半。换作以前,仅凭我当下的状态,三天之内完成整套网站开发几乎无法实现。但现在CodeGeeX、DeepSeek等AI工具,重构了我的开发模式:我聚焦需求拆解、架构设计、逻辑审核,AI承接枯燥的编码、样式调试、图表编写工作。分工明确、各司其职,极大降低了个人开发的门槛与成本。
也正是这次开发经历,让我沉下心认真思考一个核心问题:在AI飞速普及的当下,我大学还有必要选择计算机专业吗?
相信很多人都听过这句话:前端已死。
放在本次项目中确实如此:页面布局、美化、数据图表、基础接口编写,AI全部能一键生成,甚至比个人手写代码更规范、更美观、效率更高。单纯的代码搬运、样式复刻、基础接口开发这类底层重复工作,确实正在被AI逐步替代。
但在我看来,这并不意味着程序员会被淘汰,只是行业的能力要求变了。
AI可以写代码,但它不知道该做什么功能;AI可以绘制图表,但它无法解读日志数据背后的用户行为;AI能实现志愿推荐页面,但它无法自主设计冲稳保的分配逻辑,也无法判断功能的优劣。
代码只是实现工具,真正不可替代的,是需求分析、架构取舍、底层逻辑设计、问题排查、人机体验优化的思维。
而大学计算机专业教会我的,恰恰就是这些底层能力:数据结构、算法原理、数据库逻辑、网络架构……这些知识能让我看懂AI生成代码的优劣,能修正AI的逻辑漏洞,能指挥AI为我所用,而非被动依赖AI。
所以我的答案很明确:不仅要学,还要深入系统地学习。未来的技术赛道,淘汰的是只会复制粘贴代码的执行者,留下的是能够驾驭AI、掌控技术逻辑的设计者。
六、项目开发心得
1. 数据思维是项目基础
同样的五万条录取数据,在Excel中是操作繁琐的负担,在数据库中却是可深度挖掘的优质资源。项目开发的核心,从来不是单纯写代码,而是理清数据结构、理顺数据关联、设计合理的存储与展示方案。
2. 工具思维,拒绝重复造轮子
优质的工具与AI助手能大幅提升开发效率,合理借力工具并不是偷懒,而是高效开发的底层逻辑:
Bootstrap:套用现成UI模板,无需从零编写CSS;
EChart.js:直接调用图表组件,快速实现数据可视化统计;
AI助手:生成样板代码、优化页面样式、完成复杂函数与统计图表;
phpMyAdmin:可视化管理数据库,简化数据表运维操作。
3. 迭代思维,循序渐进落地项目
本次项目的开发逻辑,就是最典型的迭代式开发:第一步保障功能可用,第二步优化查询逻辑、新增志愿推荐,第三步美化页面适配全设备,第四步延伸功能打造AI问答工具。不追求一步到位,从小版本到大版本,持续优化、逐步完善,每一次更新都对应明确的优化目标。
4. 务实思维,聚焦实际使用价值
开发过程中,我全程摒弃华而不实的装饰性功能,所有新增模块都围绕用户真实需求设计:
功能模块 | 解决的实际问题 | 实现难度 |
|---|
三级联动查询 | 简化筛选操作,减少用户点击步骤 | 简单 |
多批次精准筛选 | 覆盖全类型录取数据,筛选结果更精准 | 中等 |
移动端适配 | 打破设备限制,手机也能轻松查数据 | 纯靠AI |
冲稳保志愿推荐 | 降低志愿填报门槛,给考生基础参考 | 复杂 |
数据可视化柱状图 | 直观展示录取分数、位次分布规律 | 复杂,交由AI辅助实现 |
大学百事通AI智能体 | 一站式解答志愿、入学、大学生活各类问题 | 简单 |
七、写给想要自主做项目的同学
如果你也想从零开发网站、小程序这类实战项目,结合本次开发经验,给大家分享几点真诚建议:
第一,优先理清数据结构。数据是所有项目的根基,开发前梳理清楚数据表字段、数据之间的关联关系,就像做题前读懂题干,根基稳固,后续开发才能事半功倍。
第二,学会借力现有工具。不要执着于从零开发所有内容,合理使用UI框架、图表组件、AI助手、低代码平台,站在前人的基础上创新,远比闭门造车效率更高。
第三,拆分步骤迭代开发。不要妄图一次性完成完整项目,拆分出基础功能、优化功能、拓展功能,分步骤落地,逐个攻克难题,有效降低开发挫败感。
第四,对接真实用户获取反馈。项目做完不是终点,收集使用者的使用痛点与优化建议,外部反馈是打磨项目最好的帮手。
第五,享受解决问题的过程。Bug、逻辑漏洞、适配问题都是开发常态,每排查修复一个问题,都是一次实打实的成长。
如今整套志愿查询系统和AI百事通智能体已经全部落地,爸爸将网站分享给身边不少高三家长,帮助大家高效筛选志愿数据,收获了很多正向反馈。
从杂乱无章的原始Excel数据,到便捷易用的志愿查询网站,再到一站式AI大学生活问答工具。一天时间,借助AI的力量,从零到一完成整套项目开发,用技术解决身边的实际问题,这大概就是编程最纯粹的意义与浪漫。