python实现超市扫码仪计费


Posted in Python onMay 30, 2018

python实现超市扫码仪计费的程序主要是使用超市扫码仪扫商品的条形码,读取商品信息,实现计费功能。主要用到的技术是串口通信,数据库的操作,需要的环境包括:python环境,mysql,python库(serial,MySQLdb)等等。

这个程序的主要过程是:使用扫码仪扫描商品条形码,通过串口通信获取商品条形码,通过该条形码获取商品信息,显示该商品信息并统计总费用。其中商品信息保存在数据库中,可事先导入或者手动导入商品信息,而我的在这里是事先导入的(也可以边扫边倒入信息),导入到数据库中的信息如下:

python实现超市扫码仪计费

程序代码如下:

#coding:utf8 
 
import serial 
import MySQLdb 
 
ser = serial.Serial('COM5',9600) 
 
 
#获取一行信息 
def recv(serial): 
 data = '' 
 while serial.inWaiting() > 0: 
  data += serial.read(1) 
  
 return data 
 
 
def GetInfo(db,data): 
 data = data[0:-1] #最后面有一个空格,需要去掉,否则会影响读数据库 
 print data 
 ret = 0.0 
 try: 
  cur = db.cursor() 
  sql="set names utf8" #这一条语句是告诉数据库编码方式为 utf8 
  cur.execute(sql) 
 
  sql = "select * from productinfo where code=%s"%(data) 
  #print sql 
  cur.execute(sql) 
  #sql = "select * from productinfo where(code=%s)" 
  #cur.execute(sql,data)   
  results = cur.fetchall() 
  #print results 
  for row in results: 
   code = row[0] 
   #print code 
   price = row[1] 
   #print price 
   info = row[2] 
   #print info 
   ret = price 
   #解析出来的信息可能为中文,直接print肯定是不行的,需要转化为windows下的GBK编码 
   print 'coding=',row[0],'price=',row[1],'info=',info.decode('UTF-8').encode('GBK')    
 except: 
  print 'it has no infomation about %s'%(data) 
 
 return ret 
 
 
db = MySQLdb.connect('localhost','root','',"zou",3306,'utf8') 
cursor = db.cursor() 
 
#cursor.execute("DROP TABLE IF EXISTS productinfo") 
 
''''' 
sql="""CREATE TABLE productinfo( 
  code CHAR(18), 
  price double(9,2), 
  info CHAR(25))""" 
cursor.execute(sql) 
''' 
   
sum = 0.0   
while True: 
 data = recv(ser) 
 if data != '': 
  #print data 
  sum += GetInfo(db,data) 
  print '总付款:',sum 
  
 
db.close() 
ser.close()

由于刚刚开始学习python,所以代码规范上做的还不是很好,希望大家多多指出,最后程序的运行如下:

python实现超市扫码仪计费

其中我的程序中可以使用中文(刚刚开始不是显示?就是显示乱码),这个问题我在前面的博客中谈论过,需要处理数据库以及从数据库读取的数据的编码方式。若是大家看出什么错误或是有意见的话,欢饮大家留言。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 字典(Dictionary)操作详解
Mar 11 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
Python实现读取json文件到excel表
Nov 18 Python
浅谈python可视化包Bokeh
Feb 07 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
python如何创建TCP服务端和客户端
Aug 26 Python
int在python中的含义以及用法
Jun 27 Python
python双向链表原理与实现方法详解
Dec 03 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
python异常中else的实例用法
Jun 15 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 #Python
多个应用共存的Django配置方法
May 30 #Python
python实现支付宝当面付(扫码支付)功能
May 30 #Python
详解Python3.6安装psutil模块和功能简介
May 30 #Python
python3之模块psutil系统性能信息使用
May 30 #Python
python批量导入数据进Elasticsearch的实例
May 30 #Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 #Python
You might like
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
xtree.js 代码
2007/03/13 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
Python二分查找详解
2015/09/13 Python
Python自定义线程池实现方法分析
2018/02/07 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
python读取xlsx的方法
2018/12/25 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
django数据库自动重连的方法实例
2019/07/21 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
让IE支持HTML5的方法
2012/12/11 HTML / CSS
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
社区党建工作方案
2014/06/10 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
体检通知范文
2015/04/21 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
Golang的继承模拟实例
2021/06/30 Golang
详解Oracle块修改跟踪功能
2021/11/07 Oracle
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang