C++快递运费计算器 项目实践
学习之路可以浏览和编辑代码,登录后可保存草稿及运行测试。
最近运行与提交
还没有运行记录。
项目范围与交付
控制台核心功能
快递运费计算器
按重量、地区和配送方式输出费用明细。
你将交付什么
控制台核心功能。完成核心版本后,可以继续开发文末的本地应用。站内测试通过代表核心功能达标,不代表扩展应用已完成。
前置知识
条件判断、函数、整数运算。建议先完成学习之路中的相应概念,或在数据结构实验中验证理解。
需求与输入输出
输入重量 w(1~100000 克)、地区 z(1、2、3)、方式 m(0 普通、1 加急)。首重 1000 克,三个地区首重分别为 800、1200、1800 分;超出首重部分每开始 1000 克分别加 200、400、600 分。加急另加 500 分。输出首重费、续重费、加急费、总价,用空格分隔。
使用 C++17。除非另有说明,数量为 0~10000,整数绝对值不超过 10⁹;标识符不含空格,输入符合协议。累计量使用 long long。
样例输入
1500 2 1
样例输出
1200 400 500 2100
构建步骤
阶段 1:建立计费表
分别保存地区首重与续重单价,先验证首重费用。
阶段 2:处理续重
将超出部分向上取整;检查 1000、1001、2000 克。
阶段 3:生成账单
加急费独立计算,核对三个明细之和等于总价。
验收清单
- 按样例与协议输出结果,不附加交互菜单。
- 空集合、无匹配与重复记录等边界按协议处理。
- 输入输出与业务逻辑分离,保存可重复运行的样例。
思路提示
先手工推演样例第一条记录,写出中间状态。检查数据是否完整读取、同值如何排序、未找到记录如何处理。每完成一个阶段就用小数据运行一次。
本地开发与扩展
增加运价配置文件与批量订单导入;再设计报价界面。计费函数独立于界面,输入非法重量时提供错误反馈。
基础版本编译:g++ -std=c++17 main.cpp -o app。将样例输入存为 sample.txt;Windows PowerShell 使用 Get-Content sample.txt | .\app.exe,其他终端使用 ./app < sample.txt。接入网络或数据库前,保留无需外部服务的核心测试。
阶段自测数据
自测 1
输入:
1500 2 1
预期输出:
1200 400 500 2100
自测 2
输入:
1000 1 0
预期输出:
800 0 0 800
自测 3
输入:
1001 3 0
预期输出:
1800 600 0 2400
推荐的数据模型
可以从下列结构开始,再根据自己的模块划分调整。它定义数据,不包含业务答案。
struct Shipment { int grams; int region; bool express; };
struct Quote { long long base, extra, express, total; };
开发时如何分工
- 输入适配:只负责把输入转为上面的数据模型;先用一条样例检查字段。
- 业务服务:接收模型并返回结果,不直接读取 cin 或打印 cout,便于单独测试。
- 输出展示:按需求规定的顺序和格式生成文本,不在业务函数中拼接交互菜单。
- 应用扩展:本地版本可将模型移到 models.h,业务移到 service.cpp,main.cpp 负责组装;先保持核心测试通过,再接入文件、网络或数据库。
卡住了?展开提示
建立计费表
分别保存地区首重与续重单价,先验证首重费用。
处理续重
将超出部分向上取整;检查 1000、1001、2000 克。
生成账单
加急费独立计算,核对三个明细之和等于总价。