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币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
- (源码)基于SSM框架的大学消息通知系统服务端.zip
- (源码)基于Java Servlet的学生信息管理系统.zip
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip
- 1
- 2
- 3
前往页