这个程序每天用一个小时的空闲时间,一共花了我近一个星期进行初步设计,我的程序创作思路很简单,先做好程序要实现的初步目标然后再进行改进,下面是我的程序初步设计,要求如下:
1.求取商品的保质期
2.求取商品的大日期范围
3.求取商品大日期开始时间
4.求出过期商品的条形目录
这里,需要了解一点知识,什么是商品的大日期?大日期的时间该如何确定?从网上搜索,我获得了以下信息:

  • 食品 保质 期 为 一 年 以 上 的 , 期 满 之 日 前 45 天 ;
  • 保质 期 为 半年 以 上 不 足 一 年 的 , 期 满 之 日 前 20 天 ;
  • 保质 期 90 天 以 上 不 足 半 年 的 , 期 满 之 日 前 15 天 ;
  • 保质 期 30 天 以 上 不 足 90 天 的 , 期 满 之 日 前 10 天 ;
  • 保质 期 16 天 以 上 不 足 30 天 的 , 期 满 之 日 前 5 天 ;
  • 保质 期 少 于 15 天 的 , 期 满 之 日 前 1 至 4 天 。

然后,enmmm,非常抱歉,到这里有点失去节奏了,因为这篇文章与之前相隔近半年,上面的内容是之前村的草稿,所以我就长话短说,思路简略了,对于步骤一,就是在做加减法,这个其实很简单,只需要好好运用python的库文件,就可以轻松的解决日期的加减问题,我选择的是datetime和dateutil的相关库文件,然后按照步骤先计算保质期,再计算临期商品开始的时间,相关信息再写入表格当中,相关操作代码如下:

def end_time(date_date,save_day_pl):#保质期至date1 = parse(date_date)if save_day_pl == 0 or save_day_pl == 2:return (date1 + relativedelta(days = save_day[save_day_pl]))else:return (date1 + relativedelta(months = save_day[save_day_pl]))def begin_time(hand_time,end_t):#临期商品开始时间return (end_t - relativedelta(days = hand_time))

第四步就很好实现了,完整代码如下:

#大日期商品输出
#食品 保质 期 为 一 年 以 上 的 , 期 满 之 日 前 45 天 ;
#保质 期 为 半年 以 上 不 足 一 年 的 , 期 满 之 日 前 20 天 ;
#保质 期 90 天 以 上 不 足 半 年 的 , 期 满 之 日 前 15 天 ;
#保质 期 30 天 以 上 不 足 90 天 的 , 期 满 之 日 前 10 天 ;
#保质 期 16 天 以 上 不 足 30 天 的 , 期 满 之 日 前 5 天 ;
#保质 期 少 于 15 天 的 , 期 满 之 日 前 1 至 4 天 。
from random import randint
from xlutils.copy import copy
import xlrd
import time
import datetime
from dateutil.parser import *
from dateutil.relativedelta import *#1Year2.Month3.Day4.Hours5.Minutes6.Seconds7.Microsecondsf = 'F:/python_text/商品日期报告项目/超市商品条码库.xlsx'
save_day = {0:15, 1:1, 2:45, 3:2, 4:3, 5:4, 6:6, 7:12, 8:36}
sday_name = ['15天', '一个月', '45天', '两个月', '三个月', '四个月', '半年', '一年', '三年']
big_thing = {0:"商品条码       商品名称          库存量      上架货物"}
over_thing = {0:"商品条码       商品名称          库存量      上架货物"}def handle_time(save_day_pl):#大日期范围if save_day_pl == 0:big_time = 4#elif save_day_pl == 1:#    big_time = 5elif save_day_pl < 3:big_time = 10elif save_day_pl < 6:big_time = 15elif save_day_pl < 7:big_time = 20elif save_day_pl <= 8:big_time = 45return big_timedef end_time(date_date,save_day_pl):#保质期至date1 = parse(date_date)if save_day_pl == 0 or save_day_pl == 2:return (date1 + relativedelta(days = save_day[save_day_pl]))else:return (date1 + relativedelta(months = save_day[save_day_pl]))def begin_time(hand_time,end_t):#临期商品开始时间return (end_t - relativedelta(days = hand_time))def read_code():wei1 = 1wei2 = 1rb = xlrd.open_workbook(f)sheet1 = rb.sheet_by_index(0)wb = copy(rb)ws = wb.get_sheet(0)now_time = input("请输入日期(如;2020-1-1):\n")now_time = parse(now_time)for i in range(1,12134):date_date = sheet1.cell(i,6).valuesa_day = sheet1.cell(i,7).valuesave_day_pl = sday_name.index(sa_day)hand_time = handle_time(save_day_pl)ws.write(i,8,hand_time)end_t = end_time(date_date,save_day_pl)ws.write(i,9,end_t.strftime("%Y-%m-%d"))b_time = begin_time(hand_time,end_t)ws.write(i,10,b_time.strftime("%Y-%m-%d"))if now_time >= b_time and now_time <= end_t:big_thing[wei1] = (str(int(sheet1.cell(i,0).value)) + "  "+ str(sheet1.cell(i,1).value) + "  "+ str(int(sheet1.cell(i,11).value)) + "  "+ str(int(sheet1.cell(i,12).value)))wei1 += 1if now_time > end_t:over_thing[wei2] = (str(int(sheet1.cell(i,0).value)) + "  "+ str(sheet1.cell(i,1).value) + "  "+ str(int(sheet1.cell(i,11).value)) + "  "+ str(int(sheet1.cell(i,12).value)))wei2 += 1print(big_thing[wei1-1])print(wei1,wei2,len(big_thing))wb.save(f)read_code()
"""print("大日期商品如下:")
for i in big_thing:print(big_thing[i])
print("过期商品如下:")
for i in over_thing:print(over_thing[i])"""

设计代码并没有特别难,难的是整个设计流程,一不小心就容易跑偏,整个代码设计在半年之后的我看来非常差,但是半年前的时候设计出来非常开心,所以,我的代码仅供参考,如果说是有学习想法的人看到了我的分享代码,千万要记住,仅供参考,还是设计自己的代码更能学习到东西。

超市过期商品检索程序(二)——程序初步设计以及初步实现相关推荐

  1. 小程序之 保存canvas生成商品图片附加小程序二维码 分享到朋友圈

    小程序之 保存canvas生成商品图片附加小程序二维码 分享到朋友圈 一.概述 需要用到的生成二维码组件(可自行下载添加到小程序根目录utils里):https://github.com/demi52 ...

  2. Java生成微信小程序二维码,5种实现方式,一个比一个简单

    文章目录 前言 先看官网 一.JDK自带的URLConnection方式 二.Apache的HttpClient方式 三.okhttp3方式 四.Unirest方式 五.RestTemplate方式 ...

  3. Java生成微信小程序二维码、上传至阿里云OSS

    依赖 <!-- 阿里云oss依赖 --><dependency><groupId>com.aliyun.oss</groupId><artifac ...

  4. 【java】Java生成微信小程序二维码

    文章目录 前言 应用场景 微信小程序官网 1.RestTemplate方式 核心代码 getAccessToken 2. Unirest方式 Maven依赖 核心代码 3. okhttp3方式 Mav ...

  5. 获取小程序二维码携带的参数

    小程序获取二维码参数 生成二维码的时候使用的是 wxacode.getUnlimited,接口 B(数量不受限制,参数较短) 文档的截图如下: 可以看到生成的二维码的参数需要放在 scene 中 假设 ...

  6. 微信小程序二维码图片的宣传方法都有哪些

    在小程序非常发达的今天,很多的商家都是会有自己的小程序,小程序二维码也是非常常见的,对于每一个朋友们而言,要想让自己的小程序得到更多的朋友们的关注,那么是需要做好对其的宣传工作的.通过小程序二维码图片 ...

  7. “程序”二字的五笔字根

    "程序"二字的五笔字根:tkyc 转载于:https://blog.51cto.com/wubizigen2009/161526

  8. 二级c语言上机程序填空,浙江省计算机二级c语言上机考试真题(二)程序填空

    浙江省计算机二级c语言上机考试真题 (二)程序填空 1,求最大公约数 ,下面程序中"____ N ____"是根据程序功能需要填充部分,请完成程序填充(注意:不得加行.减行.加句. ...

  9. 实现微信小程序和支付宝小程序二维码合并

    实现微信小程序和支付宝小程序二维码合并,这样用户就可以通过同一个二维码进入微信或者支付宝啦 1.需要准备可以通过公网访问的服务器 2.微信小程序 打开微信小程序后台->开发(左边)->开发 ...

最新文章

  1. python装饰器改变命运
  2. ORACLE 11g 数据库 java jdk版本匹配
  3. Hibernate中使用未映射为主键的“id”字段进行查询的场景分析
  4. 怎样检查计算机的网络配置,如何检查计算机内存和配置?(3种方法教你检查计算机的真实配置)...
  5. java 蓝桥杯算法训练 水仙花(题解)
  6. Activiti Workflow HelloWorld 示例与测试环境搭建
  7. Got error ‘parentheses not balanced‘ from regexp
  8. 前W3C顾问Klaus Birkenbihl谈HTML5与万维网未来
  9. anaconda 虚拟环境
  10. 一文读懂华为智能网联汽车产业链布局
  11. openwrt 南京电信 PPPOE IPv6 dhcpv6 client设置方法
  12. Unity3D插件之FingerGestures:手势插件
  13. @JsonProperty
  14. 视频基础知识 720P、1080i、1080P
  15. Python算法教程第三章知识点:求和式、递归式、侏儒排序法和并归排序法
  16. 带你快速看完9.8分神作《Effective Java》—— 序列化篇(所有RPC框架的基石)
  17. 编写python 函数,实现冒泡排序算法。
  18. libsvm安装使用及网格搜索法参数寻优
  19. Mac苹果电脑怎样输入表情符号?
  20. C++之路进阶——codevs2313(星际竞速)

热门文章

  1. 「微信群合影2.5.0」- 微信网页版账号不能登录解决办法,扫码登录
  2. python相册中的人脸聚类_Dlib-人脸聚类
  3. 第三方控件应用Infragistics
  4. 健身房管理系统那个好
  5. 毕业后想当程序员,到底要不要考研?
  6. 一起玩react 10分钟带你入门ant-design-pro
  7. C++ 文件读写 in out
  8. 微信有哪些分销模式可以发展?
  9. 蓝桥杯Python练习题13-圆的面积
  10. mysql编程练习题_MySQL基础CRUD编程练习题的自我提升(1)