生成自增编号

在做项目时会遇到设置编号或者单号的需求,这些编号一般基本都是不可以手动输入的,所以这个时候需要设置一个可以自动生成并且是自增的编号。设置自增编号的方法有很多,下面为其他的一种。
首先需要声明一个存放字符串的变量。
在这里插入图片描述
然后查询需要存放编号的表,以现在做的餐饮管理系统中的会员卡编号为例,需要查询会员信息表。查询时需要注意要按照编号的升序来进行排序。
在这里插入图片描述
然后用if语句判断查询出来的会员卡信息数据的条数,如果为零直接让编号等于自己设置的初始值,因为会员信息中的会员卡号是由每天的日期加上四位自增数组成的所以当查询出来的会员卡信息条数为零时我就直接让它等于当前日期加上0001。
在这里插入图片描述
如果查询出来的会员信息条数大于零就需要声明一个int 类型的变量来获取到查询出来的会员信息的条数。
在这里插入图片描述
然后获取到索引值为会员信息条数减一的会员信息
在这里插入图片描述
因为索引值是从零开始的,所以查询出来的条数减一刚好为前面按照编号升序排序查询出来的最后一条也就是编号最大的那一条数据的索引值。如查询出来有三条数据,三减一等于二,索引从零开始,索引值为二的数据就是第三条数据。在获取到最后一条数据后,需要截取到编号中需要自增的那一部分来进行自增。
在这里插入图片描述
需要注意的是在截取编号是并不是按照编号中的索引值来进行截取的,是按照编号的长度来进行截取,因为我所设置的编号是当前时间加上四位自增数所以我生成的编号为201907050001所以从编号的第八位开始向后截取4位数就刚好截取到0001然后转化为int类型并让其自增。然后再把得到的自赠数转化为string类型,因为string类型在转化为int类型自增时如果前面只有零会默认将零去掉,如0001转化为int类型并自增一时为2,在将它转回string类型时也只会变为二,而我需要的是四位数的字符串,所以需要通过for循环语句和三目运算来给它补零。
在这里插入图片描述
如上图,让它循环四次如果字符串的长度小于四就在前面补一个零,循环的次数和判断的字符串的长度根据前面所以截取的数量来决定。然后将得到的字符串和当前的日期拼接在一起,这样就可以完成一个自动生成并且自增的编号。
在这里插入图片描述
但是这种写法存在一个bug,因为自增数会累积所以当自增的四位数到达了9999,那么它再一次自增就会变为10000,这样会使会员卡信息中的会员卡号出现长度不一致的问题。所以为了防止这种情况,在截取到需要自增的那四位数之前加一些判断,让生成的编号每天重置为当天日期加上0001。首先需要获取到当前的时间,然后将生成的编号中日期的部分截取下来,用if语句进行判断,如果截取下来的时间日期等于当前的时间日期就让它自增下来,但是需要加上判断如果单天自增数达到了9999就不能让它再自增下来,如果截取下来的日期不等于当前的日期就让从0001开始。
在这里插入图片描述
最后再将编号返回,然后在新增会员时只要在视图层请求该方法即可。
下图为生成编号的效果图:
在这里插入图片描述

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值