EMS、顺丰快递单号连续单号算法
根据提供的信息,我们可以深入探讨EMS(中国邮政速递物流)与顺丰快递的连续单号算法。这涉及到如何根据一定的规则生成下一个有效的快递单号。在实际应用中,这些算法可以帮助物流公司在批量发货时生成一系列连续的快递单号,确保每个包裹都有一个唯一的标识。 ### EMS连续单号算法 #### 核心逻辑 对于EMS快递单号,其结构通常为“EI”加上一组数字序列(共8位),然后是校验码,最后以“CN”结尾。校验码的计算方法基于前8位数字通过特定公式得出。 #### 详细步骤 1. **初始化变量**: - `fri`:存储当前的8位数字序列。 - `res`:用于保存校验码。 - `num3`至`num0`:分别存储`fri`中的每一位数字。 - `mid`:用于中间计算。 2. **循环生成单号**: - 遍历指定次数`num`。 - 从`fri`中提取每位数字,并转换成整数类型。 - 计算`mid`值,公式为`8 * num3 + 6 * num4 + 4 * num5 + 2 * num6 + 3 * num7 + 5 * num8 + 9 * num9 + 7 * num0`。 - 计算校验码`res = 11 - (mid mod 11)`。 - 特殊处理:如果`res`等于10,则将其设为0;如果`res`等于11,则将其设为5。 - 构建完整的EMS快递单号,格式为“EI”+`fri`+`res`+“CN”,并添加到结果列表中。 - 更新`fri`,使其增加1。 #### 示例 假设初始EMS单号为“EI12345678CN”,需要生成5个连续单号。首先计算校验码,然后按上述步骤进行操作。最终得到的结果列表如下: - “EI123456780CN” - “EI123456795CN” - “EI123456800CN” - “EI123456815CN” - “EI123456820CN” ### 顺丰连续单号算法 #### 核心逻辑 顺丰快递单号通常由12位数字组成,其中最后一位为校验码。校验码的计算方法同样基于前11位数字通过特定公式得出。 #### 详细步骤 1. **初始化变量**: - `fri`:存储当前的11位数字序列。 - `res`:用于保存校验码。 - `num1`至`num12`:分别存储原始单号中的每一位数字。 - `Nnum1`至`Nnum11`:分别存储新单号中的每一位数字。 - `mid`:用于中间计算。 2. **循环生成单号**: - 遍历指定次数`num`。 - 从`fri`中提取每位数字,并转换成整数类型。 - 更新`fri`,使其增加1。 - 从更新后的`fri`中提取每位数字,并转换成整数类型。 - 计算校验码`res`的值,这里需要具体公式来确定计算方法。 - 构建完整的顺丰快递单号,格式为“Nfri”+`res`,并添加到结果列表中。 #### 示例 假设初始顺丰快递单号为“123456789012”,需要生成5个连续单号。由于具体的校验码计算公式未给出,我们暂时忽略校验码部分。仅考虑数字部分,可以得到如下连续单号: - “123456789012” - “123456789013” - “123456789014” - “123456789015” - “123456789016” 以上是对EMS和顺丰快递单号连续单号算法的详细介绍。这些算法在物流行业中具有重要的应用价值,能够帮助物流公司高效地管理和追踪大量包裹。
/////////////////////////////////////////
function TForm1.EMS(EMSNo: string;num:integer):TStringList;
var
fri:string;
res:Integer;
num3,num4,num5,num6,num7,num8,num9,num0:Integer;
mid:Integer;
I:integer;
EMSres:TStringList;
begin
EMSres:=TStringList.Create;
fri:=Copy(EMSNo,3,8) ;
for i:=1 to num do
begin
num3:=StrToInt(Copy(fri,1,1));
num4:=StrToInt(Copy(fri,2,1));
num5:=StrToInt(Copy(fri,3,1));
num6:=StrToInt(Copy(fri,4,1));
num7:=StrToInt(Copy(fri,5,1));
num8:=StrToInt(Copy(fri,6,1));
num9:=StrToInt(Copy(fri,7,1));
num0:=StrToInt(Copy(fri,8,1));
mid:= 8*num3+6*num4+4*num5+2*num6+3*num7+5*num8+9*num9+7*num0 ;
res:=11-(mid)mod(11);
if res=10 then
res:=0;
if res=11 then
res:=5;
- 粉丝: 0
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 上市公司上下游供应链数据(2001-2023年)
- TortoiseGit,git小乌龟
- 中位值滤波法,作为一种非线性滤波方法,能够有效去除信号中的噪声,尤其适用于处理脉冲噪声或随机噪声
- StringBuilderExtensions 字符串拼接
- 电子控制板3D模型 电子控制板
- 【源码+数据库】基于SSM框架+mysql实现的甜品饮品店蛋糕店管理系统
- 中国各省环境污染指数(原始数据、结果)(2008-2022年).xlsx
- 免费谷歌浏览器chrome chromedriver 128.0.6613.137 win64 下载
- 卡特彼勒 C32 发动机3D
- 【Unity村庄场景生成工具】Fantasy Village Spawner Pack
- 1
- 2
- 3
前往页