← 回到项目

C++学习任务与复习清单 项目实践

学习之路
代码工作区 Tab 缩进 · 手动保存
测试反馈
可以浏览和编辑代码,登录后可保存草稿及运行测试。

最近运行与提交

还没有运行记录。

提示与任务说明

项目范围与交付

控制台核心功能

学习任务与复习清单

生成今日待办,优先处理已经到期的学习任务。

你将交付什么

控制台核心功能。完成核心版本后,可以继续开发文末的本地应用。站内测试通过代表核心功能达标,不代表扩展应用已完成。

前置知识

结构体、排序、状态管理。建议先完成学习之路中的相应概念,或在数据结构实验中验证理解。

需求与输入输出

第一行今日序号 d 与任务数 n。每行任务为唯一 id、到期日 due、完成标记 done(0 或 1)。输出 due≤d 且未完成的任务,每行 id due;按 due 升序,同日按 id 字典序;没有任务输出 EMPTY。日期使用整数天。

使用 C++17。除非另有说明,数量为 0~10000,整数绝对值不超过 10⁹;标识符不含空格,输入符合协议。累计量使用 long long。

样例输入

10 3
b 10 0
a 9 0
c 8 1

样例输出

a 9
b 10

构建步骤

阶段 1:建立任务模型

区分已完成、到期与未来任务,日期先使用整数天。

阶段 2:筛选今日清单

排除已完成任务,保留到期日不晚于今天的任务。

阶段 3:明确优先顺序

按到期日及编号排序,验证空清单与同日任务。

验收清单

  • 按样例与协议输出结果,不附加交互菜单。
  • 空集合、无匹配与重复记录等边界按协议处理。
  • 输入输出与业务逻辑分离,保存可重复运行的样例。

思路提示

先手工推演样例第一条记录,写出中间状态。检查数据是否完整读取、同值如何排序、未找到记录如何处理。每完成一个阶段就用小数据运行一次。

本地开发与扩展

增加真实日期转换、任务文件、复习间隔与完成历史。先验证跨月和闰年,再增加桌面提醒。

基础版本编译:g++ -std=c++17 main.cpp -o app。将样例输入存为 sample.txt;Windows PowerShell 使用 Get-Content sample.txt | .\app.exe,其他终端使用 ./app < sample.txt。接入网络或数据库前,保留无需外部服务的核心测试。

阶段自测数据

自测 1

输入:

10 3
b 10 0
a 9 0
c 8 1

预期输出:

a 9
b 10

自测 2

输入:

1 0

预期输出:

EMPTY

自测 3

输入:

5 2
z 5 0
a 5 0

预期输出:

a 5
z 5

推荐的数据模型

可以从下列结构开始,再根据自己的模块划分调整。它定义数据,不包含业务答案。

struct Task { string id; int due; bool completed; };

开发时如何分工

  1. 输入适配:只负责把输入转为上面的数据模型;先用一条样例检查字段。
  2. 业务服务:接收模型并返回结果,不直接读取 cin 或打印 cout,便于单独测试。
  3. 输出展示:按需求规定的顺序和格式生成文本,不在业务函数中拼接交互菜单。
  4. 应用扩展:本地版本可将模型移到 models.h,业务移到 service.cpp,main.cpp 负责组装;先保持核心测试通过,再接入文件、网络或数据库。
卡住了?展开提示

建立任务模型

区分已完成、到期与未来任务,日期先使用整数天。

筛选今日清单

排除已完成任务,保留到期日不晚于今天的任务。

明确优先顺序

按到期日及编号排序,验证空清单与同日任务。