C语言链表实现学生成绩管理系统:课设代码与报告详解
简介数据结构是计算机存储、组织数据的方式链表作为动态数据结构通过节点指针将零散内存串联插入删除无需移动元素时间复杂度更优。工程实践中链表常用于需要频繁增删的场景例如学生成绩管理系统。针对数据结构课设常见需求基于C语言链表实现了学生成绩录入、查找、删除、排序、统计及文件保存并配套课设报告和答辩要点。通过完整代码演示指针操作、内存释放和边界处理帮助初学者理解链表原理与应用。1. 用C语言链表做学生成绩管理系统到底解决了什么很多同学做数据结构课设时第一个想到的题目就是“学生成绩管理系统”但真动手写起来才发现用数组顺序表硬撑插入删除一个学生要搬动后面所有数据成绩一多就卡交上去的代码也显得没什么含金量。这份资源用C语言链表作为核心存储结构完整实现了录入、显示、查找、修改、删除、统计、排序和文件保存还会附上一份能直接用格式的课设报告。适合正在准备课设或毕业设计的A同学哪怕你只会基础C语法跟着代码走一遍也能把链表指针这块彻底搞懂。下面按从需求到验收的顺序把整套方案拆开讲。2. 需求分析与总体设计功能模块、链表节点与文件交互2.1 功能需求拆解从增删改查到统计排序成绩管理系统听起来简单但真去列需求功能一点都不少。最基本的操作是录入学生信息和展示全部记录然后是按学号或姓名查找修改某个学生的成绩删除学生统计全班的总分、平均分、及格率再按总分从高到低排序最后还要能把数据保存到文件里、下次启动自动加载回来。每一步操作都对应一个菜单选项用户输入数字回车执行对应功能。这些需求如果全部用数组做学号插入时要保证有序就得先把后面元素逐个后移删除也要把后面元素前移数据量大时效率低而且数组长度一旦定死全班人数超过上限就麻烦了。链表天然能动态增长插入删除只需要修改指针指向不需要移动数据这是选链表最重要的理由。在做报告时“为什么用链表而不用数组”正好可以作为需求分析里的一节把你的选型理由写清楚。2.2 链表结构设计数据域与指针域的取舍链表节点是整个系统的地基。节点里既要存学号、姓名、各科成绩这些业务数据又要存一个指向下一个节点的指针。学号我建议用字符数组而不是整数因为很多学校学号是十几位数字前面可能带零用整型会丢掉前导零而且后期如果学号里混入字母也能兼容。姓名同理用固定长度的字符数组虽然有点浪费空间但课设场景下简单可靠。下面给出节点的结构体定义这段代码也是报告“详细设计”部分的直接素材typedef struct student { char id[12]; // 学号用字符串存储保留前导零 char name[20]; // 姓名长度取20足够大多数场景 int math; // 数学成绩 int english; // 英语成绩 int c_program; // C语言程序设计成绩 int total; // 三门课总分更新成绩后重新计算 struct student *next; // 指向下一个节点 } StuNode;这里有个设计取舍总分total其实可以用数学、英语、C语言三门成绩临时相加但为了让排序代码更简洁也为了方便在链表里直接比较我把总分作为节点的一个字段保存下来。缺点是每次修改单科成绩后必须记得重新算总分否则排序会出错优点是在写排序函数时直接拿total字段比较就行代码看起来更清楚。对于课设规模的数据多存一个字段完全值得。链表还需要一个头节点。头节点不存放实际学生数据只用它的next指针指向第一个学生节点它的作用是把插入、删除操作统一化。因为有了头节点“插入到链表第一个位置”和“插入到中间”在代码里是同一个逻辑不需要单独写“如果p是头节点就先改头指针”这种分支能少踩很多坑。2.3 总体流程菜单循环、链表构建与文件持久化整个程序的运行流程可以分成三步启动时尝试从文件加载已有数据然后进入菜单循环等待用户操作退出前把链表数据保存回文件。加载数据用fopen读文本文件每一行保存一个学生的学号、姓名、三门成绩用空格分隔。需要特别注意的是文件可能不存在第一次运行时没有存档加载函数的返回值就应该是空链表而不是程序崩溃。下面是从文件加载链表的代码注意用fscanf的返回值判断是否读到有效数据而不是用feofStuNode* loadFromFile(const char *filename) { FILE *fp fopen(filename, r); if (fp NULL) { return createEmptyList(); // 文件不存在返回空链表 } StuNode *head createEmptyList(); StuNode *tail head; // 记录尾节点用尾插法保持文件顺序 while (1) { StuNode *node (StuNode*)malloc(sizeof(StuNode)); int cnt fscanf(fp, %s %s %d %d %d, node-id, node-name, node-math, node-english, node-c_program); if (cnt ! 5) { // 没读到完整的5个字段说明到了文件尾部 free(node); // 释放这个多余节点 break; } node-total node-math node-english node-c_program; node-next NULL; tail-next node; // 尾插法新节点接到链表末尾 tail node; } fclose(fp); return head; }很多初学者习惯用while (!feof(fp))来循环这其实是个典型的坑feof只有在尝试读过文件末尾之后才会返回真所以循环会多做一次多读出一个没数据的节点。正确的做法是直接看fscanf的返回值它返回成功读取的字段数量如果不够5个就说明文件已经读完了。这份资源里的代码就采用了这种稳妥写法你写报告时也可以把这一点写进“常见问题”里显得你是真的踩过坑。保存函数反过来做把链表从头到尾遍历用fprintf按同样的格式写回文件。这里要注意文件打开模式用w会覆盖原来文件如果有备份需求可以先备份再写。整体流程串起来后主函数就是一个循环打印菜单读取用户输入switch分支调用对应功能直到用户选择“退出”。3. 核心模块实现链表插入、删除、排序与统计的代码细节3.1 创建与插入头插法还是尾插法创建空链表很简单申请一个头节点next置为NULL返回头指针。但插入新学生时就要考虑策略了是插到末尾还是按学号有序插入我建议按学号升序插入这样每次录入新学生后链表自动有序显示和保存时不需要额外排序。如果用的尾插法新学生永远在最后想找某个学号还得从头遍历效率也一样但显示时不美观。按学号有序插入的关键是找到插入位置。因为链表没有随机访问能力只能从头往后走找到第一个大于新学号的节点然后把新节点插在它前面。下面是插入函数利用头节点统一了“插在头部”和“插在中间”的逻辑void insertSorted(StuNode *head, StuNode *newNode) { StuNode *p head; // 从头节点开始p始终是当前节点的前驱 while (p-next ! NULL strcmp(p-next-id, newNode-id) 0) { p p-next; // 当前节点的下一个学号小于新学号继续往后找 } // 此时p的下一个节点学号 新学号或者已经到了尾部 newNode-next p-next; p-next newNode; }这段代码的核心是“找前驱”因为单向链表只能从当前节点拿到下一个节点却拿不到上一个节点。所以循环条件是看p-next而不看p退出循环后p正好是待插入位置的前驱。新节点的next先指向原来的后继再把前驱的next指向新节点顺序千万不能反否则会断链。很多同学先写p-next newNode再写newNode-next p-next这时候p-next已经变成 newNode 了新节点就自己指向自己链表就断了。我一般会在注释里强调“先接后继再改前驱”。3.2 删除与修改按学号定位节点的常见坑删除学生同样要找到目标节点的前驱。假设要删除学号为“2024001”的节点代码逻辑是从头开始遍历判断当前节点的下一个节点的学号是否等于目标学号如果相等就让当前节点的next直接指向目标节点的下一个节点然后释放目标节点。释放操作很容易被漏掉一旦漏掉就是内存泄漏程序多跑几次就会越占越多内存。int deleteById(StuNode *head, const char *id) { StuNode *p head; while (p-next ! NULL strcmp(p-next-id, id) ! 0) { p p-next; // 没找到继续往后 } if (p-next NULL) { return 0; // 整条链表都没有这个学号删除失败 } StuNode *del p-next; p-next del-next; // 跳过待删除节点 free(del); // 释放内存这一步别忘 return 1; }删除操作最典型的翻车点就是直接拿p从头开始找目标找到后把p释放了。这样一来p当前节点的前驱还指向这个已被释放的节点后续遍历或再次访问就变成了野指针程序随时可能崩溃。正确做法是永远只操作“前驱”的next释放的是“后继”。写代码时要不断问自己我现在手里这个指针是它自己还是它的前驱修改功能比删除简单一些但需要注意总分同步。先按学号查到节点然后让用户重新输入三门成绩再更新total字段。如果不想把修改逻辑写得复杂可以直接引导用户删除旧记录再插入新记录但那样会导致链表重新排序还可能影响学号相同的重复数据。更稳妥的做法是先改成绩再重新计算总分保持节点位置不动。3.3 查询与统计一次遍历完成多个指标查询功能分为按学号查询和按姓名查询。按学号查询因为链表已经按学号有序可以提前停止遍历一旦发现当前节点学号已经大于目标学号就说明后面不会有了直接返回找不到。按姓名查询只能全链表扫描返回第一个匹配的节点如果要处理同名情况可以改造成返回所有匹配节点。统计功能很有意思平均分、及格率、最高最低分都能在一次遍历里算完。遍历链表时累加总成绩记录人数判断每门课是否大于等于60分来计数及格人数同时比较找出最高分。下面这段代码统计的是C语言这门课的及格率void calcStats(StuNode *head) { int total 0, pass 0, count 0; StuNode *p head-next; while (p ! NULL) { count; total p-c_program; if (p-c_program 60) { pass; } p p-next; } if (count 0) { printf(暂无学生数据\n); return; } printf(人数: %d, 平均分: %.2f, 及格率: %.2f%%\n, count, (double)total / count, (double)pass / count * 100); }注意这里p从head-next开始跳过了不存数据的头节点。统计代码里最容易犯的错是忘记判断count 0直接做除法就会浮点异常或者输出无穷大。我在给模拟项目X做代码走查时见过好几份作业都是在这里翻车明明编译通过但一运行就崩就是这个原因。统计完成后把人数、平均分、及格率输出成表格演示效果非常直观。3.4 排序不换数据而交换指针的链表排序链表排序是课设里的一个加分项也是很多人觉得难的地方。有两种思路第一种是交换节点里的数据域学号、姓名、成绩全部换一遍这种写法简单但完全没有体现链表的优势面试或答辩时容易被追问“你数组也能这么做为什么用链表”第二种是交换节点的指针让链表本身变有序这样才算是真正操作了链表。我推荐用冒泡排序思想但交换的对象是节点指针。外层循环控制比较的轮数内层循环从头开始两两比较相邻节点的总分如果前一个比后一个小则交换它们在链表中的位置。下面是交换相邻节点的核心代码void sortByTotalDesc(StuNode *head) { if (head-next NULL || head-next-next NULL) { return; // 链表为空或只有一个节点无需排序 } StuNode *end NULL; // 每轮冒泡结束后的边界节点 while (head-next ! end) { StuNode *p head; while (p-next-next ! end) { StuNode *a p-next; // 前一个节点 StuNode *b p-next-next; // 后一个节点 if (a-total b-total) { // 总分降序排列 a-next b-next; // 先让a跳过b b-next a; // b指向a p-next b; // 前驱指向b } p p-next; // 继续比较下一对 } end p-next; // 边界右移 } }这段代码理解起来稍微有点绕。可以把相邻的a和b看成一对要交换的节点交换后它们的位置对调但整条链表的顺序不能断。关键是交换前p是a的前驱交换后p的next要变为b同时a的next要指向b原来的后继b-next。如果不按这个顺序写交换到一半链表就会断。写完排序后我一般会打印一遍链表验证顺序再配合统计功能输出总分最高的学生双重确认排序没有破坏其他字段。4. 课设报告写作与常见问题排查五个最容易翻车的点4.1 课设报告结构从需求分析到测试心得这份资源除了代码还自带课设报告结构上我建议严格按“摘要、需求分析、总体设计、详细设计、测试、总结”来写。摘要写200字左右概括系统的功能和你用的技术需求分析要把功能拆成用户能看懂的点比如“支持按学号删除学生”不要写“支持指针操作”这种实现层面的东西总体设计放系统流程图和模块划分这里用文字描述清楚就行不用画得太复杂一张菜单流程图加一张数据结构说明图足够。详细设计是报告的主体每个模块对应一个函数或一组函数写出函数原型、输入参数、输出结果再贴上核心代码片段。注意不要贴全部代码只贴最关键的插入、删除、排序贴多了评委老师翻起来也累。测试部分要列出你实际跑过的用例输入什么、预期输出什么、实际输出是否一致。最后的心得别写空话就写你在做链表时踩了什么坑、怎么修好的比如内存泄漏和野指针的问题这种真实体验比“通过本次课设我收获了很多”值钱得多。4.2 常见问题排查野指针、内存泄漏与输入缓冲不管代码写得多么顺手运行出错时先别急着怀疑“玄学”几乎都是下面这几个原因造成的。我把最容易翻车的五个点列出来每一条都按“现象、原因、解决”的顺序写你在调试时可以对照排查。第一个问题是程序一运行就崩溃通常发生在插入或删除之后再遍历链表。现象是输出乱码或者直接弹出“进程已停止”。原因是野指针某个节点被free后它的前驱节点的next还指着这块已经被释放的内存下次遍历就会访问非法地址。解决办法是删除时始终操作前驱的next释放前先把前驱的next改为目标节点的后继后续任何代码都不再访问这个节点。第二个问题是链表数据莫名其妙少了或者打印时死循环。现象是显示功能只能打出部分记录或者程序卡死。原因是插入时顺序写反新节点和旧节点之间断了链。解决方法是严格按照“新节点先指向后继再让前驱指向新节点”的顺序写写完用一个小链表手工走一遍确认谁指向谁再上机验证。第三个问题是从文件加载数据时尾部重复或丢记录。现象是文件明明有5个人加载出来却多个或漏个。原因是while (!feof(fp))循环多执行了一次读到文件末尾后fscanf失败但节点已经分配了。解决方法是改用fscanf的返回值判断是否成功读取完整字段返回值不等于5就跳出循环同时释放掉那个多余节点。第四个问题是输入姓名时带空格会被截断。现象是输入“张三丰”没问题输入“Tom Smith”只能存下“Tom”。原因是scanf(%s)遇到空格就停止读取。解决方法是约定学号和姓名都用单个单词或者用fgets读取整行再手动去掉换行符。课设系统建议直接约定“姓名不要带空格”简单且不会出错。第五个问题是退出程序后内存没有完全释放。现象是连续多次启动程序后内存占用越来越大。原因是链表节点malloc之后没有free就退出主循环。解决方法是写一个destroyList函数从头到尾依次free每个节点退出前调用一次。我在给某演示项目做检查时最常发现的就是这个虽然课设运行一次看不出问题但答辩老师看到你的代码里有释放函数印象分会直接拉满。5. 验收与答辩十分钟演示、测试用例与三个高频问题5.1 演示流程从空链表到保存文件答辩或验收时切忌打开程序直接乱点一定提前设计一套演示脚本保证整个流程在十分钟内走完。我建议先演示空链表启动这时程序自动创建空链表并显示“暂无数据”然后录入三个学生特意用不按顺序的学号展示插入后自动排序接着展示统计功能看平均分和及格率是否正确再做一个按学号查询和修改改完后重新统计确认数据变化最后做一次排序显示总分从高到低排列然后退出程序重新启动验证数据确实保存到了文件里。这套流程覆盖了程序的大部分核心功能每个操作都能看到明确的输出结果。演示时注意把终端窗口放大到能完整显示列表如果表格错位或成绩显示不齐提前调整格式。你也可以准备一个异常演示比如输入不存在的学号去删除系统提示“未找到该学生”这比全部成功更能体现程序的健壮性。5.2 测试用例设计正常、边界与异常输入为了在短时间内让老师相信你的系统没问题我建议准备三组测试用例正常输入、边界输入、异常输入。正常输入就是录入一个完整的学生信息各科成绩都为0到100之间的整数边界输入包括删除链表里第一个和最后一个节点、查询不存在的学号、对空链表执行统计异常输入包括输入负数成绩、输入字母、文件不存在时启动程序。下面是简单的测试用例表测试项输入预期结果正常插入学号2024005姓名A同学成绩85/90/78插入成功链表按学号升序删除边界节点删除学号最小的节点删除后链表不断剩余节点仍有序查询不存在查询学号999999提示“未找到”异常成绩数学输入120提示成绩不合法拒绝录入空链表统计没有任何学生时执行统计提示暂无数据不崩溃这些用例在报告里可以画成一张表格每条记录对应的实际输出截图附在报告末尾。演示时不用全跑挑两个有代表性的执行就行但报告里一定要写全因为评审老师很可能翻到测试章节直接看表格。5.3 答辩高频问题为什么用链表、内存如何释放、与数组区别答辩时被问到最多的问题几乎固定。第一个是“为什么不用数组用链表”你的回答要抓住两个点数组插入删除需要移动大量元素且长度在声明时就固定不能扩展链表用多少扩多少插入删除只改指针时间复杂度从数组的O(n)变成O(1)的操作级定位仍需O(n)。第二个是“链表的内存是怎么回收的”你要能说出free逐个释放并画出释放过程强调如果不free就会内存泄漏。第三个是“链表和数组在结构上有什么区别”从物理存储上一个连续一个离散、访问方式上一个随机一个顺序、插入删除上一个需移动元素一个只改指针这三个维度展开每个维度说一句白话解释就行。最后分享一个我自己的习惯从那以后每次交课设前我都会强制自己走一遍演示脚本把异常输入过一遍再用专门的工具检查一次内存释放确认所有指针在退出前都归位。虽然过程很麻烦但绝对能帮你躲过答辩现场最尴尬的翻车。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Bootstrap nifty v2.9后台模板集成与优化实战

Bootstrap nifty v2.9后台模板集成与优化实战

简介:Bootstrap Nifty v2.9 是一套基于 Bootstrap 框架的后台管理模板,面向需要快速搭建企业级 Web 应用后台界面的开发者,无论初学者还是资深工程师都能借助其预置组件与响应式布局缩短开发周期。压缩包为 rar 格式,共 3602 个文…

2026/10/18 17:15:09 阅读更多 →
协处理器系统集成实战:从总线互联到内存一致性的完整指南

协处理器系统集成实战:从总线互联到内存一致性的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 17:15:09 阅读更多 →
基于Android的智能家居系统实战:架构选型、MQTT通信与设备端固件设计

基于Android的智能家居系统实战:架构选型、MQTT通信与设备端固件设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 17:15:09 阅读更多 →

最新新闻

Fluent管道仿真:压降与壁面剪切力数值计算全流程指南

Fluent管道仿真:压降与壁面剪切力数值计算全流程指南

简介:面向流体仿真初学者与相关工程人员的Fluent管道仿真案例包,围绕直管稳态流动中的压降与壁面剪切力计算展开,项目基于有限元方法完成几何建模、网格划分与求解设置,可用于验证达西公式、分析壁面剪应力分布规律,并…

2026/10/18 18:01:50 阅读更多 →
Git多人协作实战:分支策略、提交规范与冲突处理完整指南

Git多人协作实战:分支策略、提交规范与冲突处理完整指南

这几天我带着组里的几个新同学做了一次完整的Git多人项目开发流程演练,从分支规划、日常提交、合并请求,到冲突处理、CI门禁,把一条真实团队日常走了一遍。演练结束后我自己也把整个流程重新捋了一遍,发现很多东西如果不亲手跑一次…

2026/10/18 18:01:50 阅读更多 →
Python脚本一键获取QQ号全部群组列表:原理、实现与避坑指南

Python脚本一键获取QQ号全部群组列表:原理、实现与避坑指南

简介:一套面向Python爬虫初学者及数据分析师的轻量脚本工具,用于根据指定QQ号批量查询其加入的全部群组信息,免去逐群手动翻看资料的重复劳动。其中qq_count.py负责快速校验目标账号有效性并初步感知其活跃群关系,qq_count_detail…

2026/10/18 18:01:50 阅读更多 →
Linux磁盘空间排查:用du与df快速定位文件夹占用

Linux磁盘空间排查:用du与df快速定位文件夹占用

先说说这个标题背后的真实场景。绝大多数人搜这句话的时候,服务器磁盘已经快满了,或者某个业务目录增长异常,需要立刻定位到底哪个文件夹在吃空间。我自己处理过的磁盘告警少说也有几十次,从一句话的需求出发,实际上要…

2026/10/18 18:01:50 阅读更多 →
科技项目管理办法编写指南:从框架到验收的落地要点

科技项目管理办法编写指南:从框架到验收的落地要点

简介:《科技项目管理办法.doc》是一份面向企业科技管理人员、项目负责人及研发团队的制度规范文档,用于解决科技项目从立项到验收全流程的管理依据问题。文档围绕“统一规划、集中管理、缜密实施”原则展开,明确了发电关键技术、电站建设运行…

2026/10/18 18:01:50 阅读更多 →
Git多人项目开发流程实战:分支模型、代码评审与冲突处理

Git多人项目开发流程实战:分支模型、代码评审与冲突处理

很多同学学会 Git 的第一天,基本都是从git commit和git push开始。一个人写仓库怎样都好说,今天merge明天rebase,大不了reset回滚,反正卷宗里只有自己一个人,怎么折腾都有救。可一旦进入“Git 多人项目开发流程演练”的…

2026/10/18 18:00:49 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →