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编写一个简单的FUSE文件系统的教程
Apr 02 Python
使用beaker让Facebook的Bottle框架支持session功能
Apr 23 Python
Python下Fabric的简单部署方法
Jul 14 Python
python开发中range()函数用法实例分析
Nov 12 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
Python操作MySQL模拟银行转账
Mar 12 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
python+Splinter实现12306抢票功能
Sep 25 Python
django模板结构优化的方法
Feb 28 Python
Django静态资源部署404问题解决方案
May 11 Python
什么是Python中的顺序表
Jun 02 Python
Python 多进程原理及实现
Dec 21 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
短波问题解答
2021/02/28 无线电
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
Python 错误和异常代码详解
2018/01/29 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
python实现可逆简单的加密算法
2019/03/22 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
十八届三中全会宣传方案
2014/02/21 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
高一学生评语大全
2014/04/25 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
小王子读书笔记
2015/06/29 职场文书
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python
java版 联机五子棋游戏
2022/05/04 Java/Android