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中几个常用的类方法
Apr 08 Python
python使用socket进行简单网络连接的方法
Apr 29 Python
python通过opencv实现批量剪切图片
Nov 13 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
wxPython之wx.DC绘制形状
Nov 19 Python
基于python图像处理API的使用示例
Apr 03 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 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
Http 1.1 Etag 与 Last-Modified提高php效率
2008/01/10 PHP
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
2017/05/24 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
Python验证码识别处理实例
2015/12/28 Python
详解Django之auth模块(用户认证)
2018/04/17 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
《凡卡》教学反思
2014/04/09 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
2019初中学生入团申请书
2019/06/27 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL