学生选课管理信息系统课程设计:SCDB五表设计与exe实战避坑指南
简介这份学生选课管理信息系统课程设计报告面向计算机相关专业学生与课程设计指导教师用于完成数据库原理、软件工程等课程的实践作业。报告围绕简化系统数据库SCDB展开涵盖学生入校注册后的个人基本信息记录、面向学生开设课程的基本信息维护、每位任课教师限主讲三门课程的约束以及选课信息入库与考试结束后补录成绩等核心业务并给出五个主要数据表及其字段设计说明读者可据此理解选课系统的实体关系与建表思路。资源以rar压缩包形式提供包内主要为课程设计报告文档整体约19.03MB目录结构便于按模块查阅。目前已有1509人浏览学习适合需要参考完整设计流程、撰写课程设计报告或进行数据库课程实践的学生使用。1. 从一份 exe 说起学生选课管理信息系统到底交付了什么很多课程设计资源给的是源码压缩包解压完还得自己配环境、导数据库、改连接串折腾半天跑不起来。这份学生选课管理信息系统课程设计报告直接给了一个 exe 文件双击就能看到完整的选课流程界面对急着交作业或者想快速摸清业务逻辑的人来说省掉了最磨人的环境搭建环节。它模拟的是高校选课的核心链路学生注册后录入个人基本信息课程信息由管理员维护每个任课教师限定主讲三门课学生选课记录入库考试结束后再回填成绩。数据库层面用的是简化的 SCDB围绕学生、课程、教师、选课、成绩五张表展开。适合谁正在做数据库课程设计、需要一份能跑通的参考实现、或者想拿它当模板改造成自己选题的在校生和初级开发者。下面我从表结构设计一路拆到 exe 的落地用法和常见翻车点。2. SCDB 五张表怎么定字段、约束与建表顺序2.1 从业务规则反推表结构选课系统的表设计不是拍脑袋列字段得先把业务规则翻译成数据约束。原文给了几条硬规则学生入校注册后统一记录个人信息每门课程有基本信息每个教师规定主讲三门课程选课信息入库考后补成绩。这几句话直接决定了表的数量和关系。学生表存个人基本信息学号做主键姓名、性别、出生日期、入学年份、专业这些是常规字段。课程表存课程基本信息课程号做主键课程名、学分、学时、开课学期。教师表存教师信息教师号做主键姓名、职称再加一个能主讲哪三门课的关联。选课表是学生和课程的多对多桥接表学号加课程号做联合主键选课时间、选课状态。成绩表可以独立也可以并入选课表但原文说“考试结束后需在相应的选课记录中补上考试成绩”意味着成绩是选课记录的属性并入选课表更贴合业务描述。常见做法是把成绩单独拆一张表理由是成绩录入时间和选课时间不同步拆开后选课表保持轻量。但课程设计场景下并入选课表能少一次 join写查询更直观。我一般建议并入选课表用可空字段存成绩未考试时为 NULL。2.2 建表 SQL 与约束设置下面这套建表语句按 MySQL 语法写字段类型和约束都对齐了业务规则。注意教师主讲三门课的限制这里用教师表和课程表之间的关联表来实现而不是在教师表里硬塞三个课程号字段。-- 学生表学号主键入学年份用于区分年级 CREATE TABLE student ( sno CHAR(10) PRIMARY KEY COMMENT 学号, sname VARCHAR(20) NOT NULL COMMENT 姓名, ssex CHAR(2) DEFAULT 男 COMMENT 性别, sbirth DATE COMMENT 出生日期, sgrade YEAR NOT NULL COMMENT 入学年份, smajor VARCHAR(30) COMMENT 专业 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 教师表教师号主键 CREATE TABLE teacher ( tno CHAR(8) PRIMARY KEY COMMENT 教师号, tname VARCHAR(20) NOT NULL COMMENT 姓名, ttitle VARCHAR(10) COMMENT 职称 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 课程表课程号主键学分和学时用于选课校验 CREATE TABLE course ( cno CHAR(8) PRIMARY KEY COMMENT 课程号, cname VARCHAR(40) NOT NULL COMMENT 课程名, ccredit DECIMAL(3,1) NOT NULL COMMENT 学分, chours INT NOT NULL COMMENT 学时, cterm VARCHAR(10) COMMENT 开课学期 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 教师任课表实现“每个教师主讲三门课”的约束 CREATE TABLE teach ( tno CHAR(8) NOT NULL COMMENT 教师号, cno CHAR(8) NOT NULL COMMENT 课程号, PRIMARY KEY (tno, cno), FOREIGN KEY (tno) REFERENCES teacher(tno), FOREIGN KEY (cno) REFERENCES course(cno) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4; -- 选课表学号课程号联合主键成绩可空 CREATE TABLE sc ( sno CHAR(10) NOT NULL COMMENT 学号, cno CHAR(8) NOT NULL COMMENT 课程号, sctime DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT 选课时间, score DECIMAL(5,1) COMMENT 成绩未考试为NULL, PRIMARY KEY (sno, cno), FOREIGN KEY (sno) REFERENCES student(sno), FOREIGN KEY (cno) REFERENCES course(cno) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4;逻辑说明student 表的 sno 用 CHAR(10) 而不是 INT因为学号可能带前导零用整型会丢零。sgrade 用 YEAR 类型查询某年级学生时直接比较年份不用字符串截取。teach 表的联合主键天然保证了同一个教师不会重复关联同一门课但“三门课”的上限得靠应用层或触发器控制建表阶段只能保证不重复。sc 表的 score 允许 NULL对应“考试结束后补上成绩”的业务节点未录入时就是 NULL查询成绩时用 IS NOT NULL 过滤。参数说明字符集统一 utf8mb4避免姓名里有生僻字时乱码。存储引擎 InnoDB 支持外键和事务选课操作涉及多表写入时能回滚。学分用 DECIMAL(3,1) 而不是 FLOAT避免浮点精度问题比如 2.5 学分存进去不会变成 2.499999。2.3 教师主讲三门课怎么约束原文说“每个任课教师规定其可主讲三门课程”这句话有两种理解一是每个教师最多只能关联三门课二是每个教师固定关联三门课。课程设计场景下通常是上限约束。建表阶段用联合主键只能防重复防不了数量超限。常见做法是在应用层插入 teach 记录前先 count 一下超过三就拒绝。如果要在数据库层做可以加触发器DELIMITER // CREATE TRIGGER trg_teach_limit BEFORE INSERT ON teach FOR EACH ROW BEGIN DECLARE cnt INT; SELECT COUNT(*) INTO cnt FROM teach WHERE tno NEW.tno; IF cnt 3 THEN SIGNAL SQLSTATE 45000 SET MESSAGE_TEXT 该教师已主讲三门课程不能继续添加; END IF; END // DELIMITER ;这个触发器在每次往 teach 表插入前检查该教师已有的课程数达到三就抛异常。注意触发器在批量导入数据时会逐行触发如果初始化脚本里一次性插入超过三条同一教师的记录会直接报错中断。所以初始化数据要按教师分组每组不超过三条。3. exe 怎么跑起来从双击到完整选课流程3.1 运行环境与依赖检查拿到 exe 文件后别急着双击先确认运行环境。这类课程设计 exe 通常是 C# WinForms 或 Java Swing 打包的前者依赖 .NET Framework后者依赖 JRE。如果双击后闪退或者弹窗报“缺少 xxx.dll”大概率是运行库没装。判断方法右键 exe 看属性如果文件大小在几 MB 到十几 MB 之间且同目录下有 config 或 xml 配置文件多半是 .NET 程序。如果同目录下有 lib 文件夹或者 jar 文件那就是 Java 打包的。.NET 程序装对应版本的 .NET Framework 运行时即可Java 程序装 JRE 8 或以上。数据库连接是另一个卡点。exe 本身不带数据库服务它只是个客户端背后要连一个 MySQL 或 SQL Server 实例。配置文件里一般有连接字符串形如serverlocalhost;databasescdb;uidroot;pwdxxx。如果本机没装数据库exe 启动后会卡在登录界面或者报连接失败。常见做法是先装一个 MySQL用前面给的建表语句把 SCDB 建好再改配置文件里的连接串指向本机。3.2 初始化数据与首次登录数据库建好后需要灌入初始数据否则登录进去全是空列表选课功能没法验证。初始数据至少包括几个学生、几门课程、几个教师、教师任课关系。下面这段 SQL 插入一组最小可用数据覆盖选课和成绩录入两条链路。-- 插入学生 INSERT INTO student VALUES (2023010001, 张三, 男, 2005-03-12, 2023, 计算机科学与技术), (2023010002, 李四, 女, 2005-07-25, 2023, 软件工程), (2023010003, 王五, 男, 2004-11-08, 2023, 网络工程); -- 插入教师 INSERT INTO teacher VALUES (T001, 刘老师, 教授), (T002, 陈老师, 副教授); -- 插入课程 INSERT INTO course VALUES (C001, 数据库原理, 3.0, 48, 2024春), (C002, 数据结构, 4.0, 64, 2024春), (C003, 操作系统, 3.5, 56, 2024秋), (C004, 计算机网络, 3.0, 48, 2024秋); -- 教师任课关系刘老师带三门陈老师带一门 INSERT INTO teach VALUES (T001, C001), (T001, C002), (T001, C003), (T002, C004); -- 选课记录张三选了数据库原理成绩未录入 INSERT INTO sc (sno, cno, score) VALUES (2023010001, C001, NULL), (2023010002, C001, NULL), (2023010002, C002, NULL);逻辑说明学生学号用 2023010001 这种格式前四位是入学年份方便按年级筛选。教师任课关系里刘老师关联了三门课正好卡在上限再插一条就会触发前面写的触发器报错。选课记录里 score 留 NULL模拟“已选课但未考试”的状态登录后可以在成绩录入界面补填。参数说明INSERT 语句里日期用字符串形式MySQL 会自动转成 DATE 类型。如果数据库的 sql_mode 开启了严格模式日期格式不合法会直接报错所以格式要写对。学分字段是 DECIMAL插入 3.0 和 3 效果一样但显示时 3.0 更规范。3.3 选课与成绩录入的操作路径exe 启动后一般先弹登录框用学生学号或教师工号登录。学生登录后能看到可选课程列表勾选后点选课系统往 sc 表插一条记录。如果重复选同一门课联合主键会报错好的实现会捕获这个异常并提示“已选过该课程”。教师登录后能看到自己主讲的课程和学生名单考试结束后在对应记录上填成绩。验证选课是否成功不用盯着界面看直接查数据库更快-- 查张三选了什么课 SELECT s.sname, c.cname, sc.sctime, sc.score FROM sc JOIN student s ON sc.sno s.sno JOIN course c ON sc.cno c.cno WHERE sc.sno 2023010001; -- 查某门课的成绩分布 SELECT c.cname, COUNT(*) AS 选课人数, AVG(sc.score) AS 平均分 FROM sc JOIN course c ON sc.cno c.cno WHERE sc.score IS NOT NULL GROUP BY c.cno;第一条查询验证选课记录是否落库第二条验证成绩录入后统计是否正常。如果界面显示选课成功但数据库里查不到说明 exe 的事务没提交或者连的不是同一个库。这种问题在课程设计里很常见配置文件里 database 名字写错一个字母程序连到另一个空库上界面照样能跑但数据全丢。4. 避坑排查exe 跑不通的五个血泪经验4.1 双击闪退事件查看器里才有线索现象exe 双击后窗口一闪就没了没有任何提示。原因程序启动时抛了未捕获异常比如数据库连接失败、配置文件缺失、运行库版本不对。解决别反复双击去 Windows 事件查看器的“应用程序”日志里找错误来源能看到具体的异常类型和堆栈。如果是 .NET 程序也可以在命令行里用start /wait xxx.exe运行错误信息会留在控制台。4.2 登录报“连接失败”但数据库明明开着现象MySQL 服务正常运行用命令行能连上但 exe 就是报连接失败。原因连接字符串里的主机名用了localhost而某些 .NET 程序在 IPv6 环境下会先解析到::1MySQL 没监听 IPv6 地址。解决把连接串里的localhost改成127.0.0.1强制走 IPv4。这个坑在 WinForms 程序里特别常见改一个词就能解决。4.3 选课成功但查不到记录现象界面上提示选课成功刷新课程列表也显示已选但数据库里 sc 表没有新记录。原因程序用了事务但没提交或者连接字符串指向了另一个数据库实例。解决先确认 exe 目录下配置文件里的 database 名字和实际建库的名字一致大小写敏感。再检查程序是否在选课后调用了 commit有些课程设计代码只写了 insert 没写 commit连接一关数据就回滚了。4.4 成绩录入后平均分算出来是 NULL现象成绩明明填了但统计查询里 AVG(score) 返回 NULL。原因AVG 函数会忽略 NULL 值如果所有记录的 score 都是 NULL结果就是 NULL。另一种可能是成绩字段类型是 VARCHAR存进去的是字符串AVG 无法计算。解决确认 score 字段类型是 DECIMAL 或 INT录入时确保值不是空字符串。查询时加WHERE score IS NOT NULL过滤掉未录入的记录。4.5 教师关联第四门课时程序崩溃现象给一个已经带了三门课的教师再添加一门程序直接报错退出。原因数据库触发器抛了异常但 exe 没有捕获这个异常导致未处理错误。解决如果只是想绕过限制做测试先删掉触发器再插入测完再建回来。如果是正式使用需要在应用层加校验插入前先查该教师的课程数超过三就弹提示而不是让数据库抛异常。触发器是最后一道防线不是第一道。5. 从能跑到好用把 exe 当黑匣子做二次验证exe 能跑通选课流程只是第一步课程设计报告要拿得出手还得证明数据一致性没问题。我一般会把 exe 当黑匣子用 SQL 从外部验证它的行为是否符合业务规则。比如选课容量限制如果业务上规定每门课最多 50 人exe 界面可能没做校验但数据库层可以加一个统计查询定期检查-- 找出选课人数超过 50 的课程 SELECT c.cno, c.cname, COUNT(*) AS 选课人数 FROM sc JOIN course c ON sc.cno c.cno GROUP BY c.cno HAVING COUNT(*) 50;这条查询不依赖 exe 的任何接口直接查库就能发现超限课程。如果查出来有说明 exe 的选课逻辑缺少容量校验报告里可以把这个作为“待改进点”写进去比单纯描述功能更有深度。另一个验证点是成绩录入的完整性。考试结束后所有选课记录都应该有成绩但实际可能有人漏录。用下面这条查询找出未录成绩的记录-- 找出已选课但未录成绩的学生 SELECT s.sno, s.sname, c.cname FROM sc JOIN student s ON sc.sno s.sno JOIN course c ON sc.cno c.cno WHERE sc.score IS NULL;这条查询的结果可以直接作为教师补录成绩的待办列表。把这两个验证查询写进课程设计报告的“测试与验证”章节比截图界面更有说服力因为它是从数据层面证明系统行为符合预期。还有一个容易被忽略的点exe 的配置文件里如果有明文数据库密码报告里要提醒改成加密存储或者用 Windows 身份验证。课程设计虽然不要求生产级安全但能指出这个风险并给出替代方案是加分项。我一般会在报告末尾附一个“已知限制与改进方向”的表格把明文密码、无容量校验、触发器异常未捕获这几条列进去每条对应一个具体的改进思路。从那以后我每次拿到这类课程设计 exe都强制自己先跑一遍外部 SQL 验证再动界面。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

迪康端点安全一体化管理系统文件分发功能深度解析

迪康端点安全一体化管理系统文件分发功能深度解析

一、引言:企业文件分发的安全挑战 在数字化转型浪潮中,企业文件分发面临三大核心痛点:传输效率低下导致大规模终端更新耗时漫长;权限管控失控引发越权访问风险;审计追踪困难使安全事件难以溯源。Gartner 2026年报告显示…

2026/10/10 14:11:41 阅读更多 →
t3code轻量编码约定与工具链实践指南

t3code轻量编码约定与工具链实践指南

1. 从“t3code”这个关键词说起:它到底指什么第一次看到“t3code”这个词,很多人会一头雾水。它不像“Python教程”“Docker入门”那样一眼就能看出领域归属,也不像某个知名框架或库那样有明确的官方文档入口。我在几个技术社区和代码托管平台…

2026/10/9 12:04:13 阅读更多 →
基于Python的乒乓球场馆预约管理系统(源码+讲解视频+LW)

基于Python的乒乓球场馆预约管理系统(源码+讲解视频+LW)

联系博主 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 …

2026/10/9 12:04:13 阅读更多 →

最新新闻

OPC DA报错找不到OpcEnum?补装OPC Core Components 2.0快速解决

OPC DA报错找不到OpcEnum?补装OPC Core Components 2.0快速解决

简介:OPC Core Components 2.0 是OPC基金会发布的核心组件集合,主要面向工业自动化开发者、系统集成商与现场维护人员。它直击电脑未安装 OpcEnum 时无法枚举和访问网络 OPC 服务器的问题,完成组件安装即可恢复通信能力。OPC UA 作为下一代标…

2026/10/10 14:56:02 阅读更多 →
《创业之路》-1032-细读商业经典 - 思维惯性(思维)和路径依赖(行为),是制约人适应新环境、无法跨越周期的最大的制约力

《创业之路》-1032-细读商业经典 - 思维惯性(思维)和路径依赖(行为),是制约人适应新环境、无法跨越周期的最大的制约力

思维惯性与路径依赖:跨周期失败的终极底层枷锁这句话戳中了所有个人、企业乃至国家跨越周期失败的共同根源:绝大多数人不是能力不够、资源不足、机会没赶上,而是被过去成功塑造的思维惯性和路径依赖牢牢锁死,用上一个周期的成功逻…

2026/10/10 14:56:02 阅读更多 →
SLR(1)语法分析器实战:从编译原理原理到自定义文法实现

SLR(1)语法分析器实战:从编译原理原理到自定义文法实现

简介:这是基于Java实现的SLR(1)语法分析器实验源码包,面向编译原理课程学习者与需要动手实践语法分析器构建的开发者。资源围绕自底向上的SLR(1)解析方法展开,涵盖文法表示、消除左递归与左公因子、FOLLOW集构造、闭包与GO TO集计算以及分析表…

2026/10/10 14:56:02 阅读更多 →
异常安全编程实战:从资源管理到事务性更新的系统稳定性指南

异常安全编程实战:从资源管理到事务性更新的系统稳定性指南

做后端开发这些年,我见过太多线上事故。但最让我头疼的,往往不是那些高深的并发问题,而是一些看起来人畜无害的代码,在某个异常被抛出后,把整个系统的数据搞得一团糟。最近不少朋友也在聊“安全服务异常,无…

2026/10/10 14:56:02 阅读更多 →
《创业之路》-1031-细读商业经典 - 为什么有人摆脱不了贫穷:被锁死在「被动贫困闭环」里的人

《创业之路》-1031-细读商业经典 - 为什么有人摆脱不了贫穷:被锁死在「被动贫困闭环」里的人

为什么有人摆脱不了贫穷:被锁死在「被动贫困闭环」里的人摆脱不了贫穷,本质上从来不是懒、笨或者运气差,而是陷入了一套和「主动演化逻辑」完全反向的被动贫困闭环:认知上执念确定性、行为上习惯执行型、价值观上信奉存量博弈&…

2026/10/10 14:56:02 阅读更多 →
Virtual Mac 安装全流程:从 Dopamine 越狱到 Sileo 部署 macOS 虚拟机

Virtual Mac 安装全流程:从 Dopamine 越狱到 Sileo 部署 macOS 虚拟机

【免费下载链接】VirtualMacOniPad People have dreamed of running macOS on iPad for more than a decade. Today, that dream comes true. With Virtual Mac, iPad finally breaks free from iPadOS, enabling pro apps like Xcode, Terminal, Final Cut Pro, Logic Pro, an…

2026/10/10 14:55:01 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →