python實(shí)現(xiàn)超市掃碼儀計(jì)費(fèi)
python實(shí)現(xiàn)超市掃碼儀計(jì)費(fèi)的程序主要是使用超市掃碼儀掃商品的條形碼,讀取商品信息,實(shí)現(xiàn)計(jì)費(fèi)功能。主要用到的技術(shù)是串口通信,數(shù)據(jù)庫的操作,需要的環(huán)境包括:python環(huán)境,mysql,python庫(serial,MySQLdb)等等。
這個(gè)程序的主要過程是:使用掃碼儀掃描商品條形碼,通過串口通信獲取商品條形碼,通過該條形碼獲取商品信息,顯示該商品信息并統(tǒng)計(jì)總費(fèi)用。其中商品信息保存在數(shù)據(jù)庫中,可事先導(dǎo)入或者手動(dòng)導(dǎo)入商品信息,而我的在這里是事先導(dǎo)入的(也可以邊掃邊倒入信息),導(dǎo)入到數(shù)據(jù)庫中的信息如下:

程序代碼如下:
#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] #最后面有一個(gè)空格,需要去掉,否則會(huì)影響讀數(shù)據(jù)庫
print data
ret = 0.0
try:
cur = db.cursor()
sql="set names utf8" #這一條語句是告訴數(shù)據(jù)庫編碼方式為 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肯定是不行的,需要轉(zhuǎn)化為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() 由于剛剛開始學(xué)習(xí)python,所以代碼規(guī)范上做的還不是很好,希望大家多多指出,最后程序的運(yùn)行如下:

其中我的程序中可以使用中文(剛剛開始不是顯示?就是顯示亂碼),這個(gè)問題我在前面的博客中談?wù)撨^,需要處理數(shù)據(jù)庫以及從數(shù)據(jù)庫讀取的數(shù)據(jù)的編碼方式。若是大家看出什么錯(cuò)誤或是有意見的話,歡飲大家留言。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python+mongodb數(shù)據(jù)抓取詳細(xì)介紹
這篇文章主要介紹了python+mongodb數(shù)據(jù)抓取詳細(xì)介紹,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10
基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能
這篇文章主要介紹了基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
詳解pyqt中解決國際化tr()函數(shù)不起作用的問題
本文主要介紹了pyqt中解決國際化tr()函數(shù)不起作用的問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
使用python實(shí)現(xiàn)tcp自動(dòng)重連
下面小編就為大家?guī)硪黄褂胮ython實(shí)現(xiàn)tcp自動(dòng)重連實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。2017-07-07
Python如何使用Gitlab API實(shí)現(xiàn)批量的合并分支
這篇文章主要介紹了Python如何使用Gitlab API實(shí)現(xiàn)批量的合并分支,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
python基礎(chǔ)學(xué)習(xí)之遞歸函數(shù)知識(shí)總結(jié)
在函數(shù)中調(diào)用函數(shù)自身,我們把這樣的函數(shù)叫做遞歸函數(shù), 遞歸函數(shù)就是循環(huán)的調(diào)用,類似于俄羅斯套娃,本文給各位小伙伴詳細(xì)介紹了python遞歸函數(shù),需要的朋友可以參考下2021-05-05
Python語言實(shí)現(xiàn)科學(xué)計(jì)算器
這篇文章主要為大家詳細(xì)介紹了Python語言實(shí)現(xiàn)科學(xué)計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01

