




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
智慧超市系統(tǒng)的設(shè)計-17-第4章軟件系統(tǒng)設(shè)計4.1軟件主流程圖主程序首先對單片機進行初始化,使得相應(yīng)的IO口以及中斷寄存器置位,以滿足接下來的操作。判斷是否有人刷卡,有卡錄入卡片信息。為超市的商品設(shè)置商品價格,然后用卡片里面的金額進行結(jié)算,最后顯示剩余的余額;無卡的時候繼續(xù)檢測卡片。開始初始化開始初始化NN是否刷卡是否刷卡YY錄入卡片錄入卡片設(shè)置商品價格設(shè)置商品價格結(jié)算結(jié)算顯示余額顯示余額結(jié)束圖4.1系統(tǒng)軟件主流程圖結(jié)束4.2RFID程序的設(shè)計射頻卡驅(qū)動程序:射頻卡驅(qū)動程序主要負(fù)責(zé)讀取射頻卡的信息并進行解析,以便系統(tǒng)能夠?qū)ζ溥M行處理。驅(qū)動程序需要根據(jù)射頻卡類型和通信協(xié)議進行開發(fā),通常采用C/C++等高級語言進行編寫。在開發(fā)過程中,需要對射頻卡讀取速度、讀取距離、信號強度等方面進行優(yōu)化,以提高讀卡效率和穩(wěn)定性。射頻卡數(shù)據(jù)處理程序:射頻卡數(shù)據(jù)處理程序主要負(fù)責(zé)對讀取到的射頻卡信息進行處理,包括解析射頻卡號碼、進行驗證和查詢余額等操作。為了確保系統(tǒng)的安全性和可靠性,需要對數(shù)據(jù)處理程序進行加密和防篡改設(shè)計,避免惡意攻擊和數(shù)據(jù)泄露。射頻卡管理程序:射頻卡管理程序主要負(fù)責(zé)管理射頻卡的信息,包括新卡注冊、卡片信息修改、卡片注銷等操作。為了保障系統(tǒng)的穩(wěn)定性和可靠性,需要對管理程序進行權(quán)限控制和異常處理設(shè)計,避免管理操作對系統(tǒng)造成不良影響。射頻卡通信協(xié)議設(shè)計:射頻卡通信協(xié)議設(shè)計是RFID系統(tǒng)開發(fā)的關(guān)鍵環(huán)節(jié)之一。通信協(xié)議需要滿足射頻卡與系統(tǒng)之間的數(shù)據(jù)交互需求,同時保證數(shù)據(jù)傳輸?shù)乃俣群涂煽啃?。在協(xié)議設(shè)計過程中,需要考慮射頻卡的類型和特性,系統(tǒng)的硬件和軟件設(shè)計,以及數(shù)據(jù)傳輸?shù)陌踩院头€(wěn)定性等方面的因素。綜上所述,智慧超市系統(tǒng)中RFID射頻卡的軟件設(shè)計需要涉及射頻卡驅(qū)動程序、射頻卡數(shù)據(jù)處理程序、射頻卡管理程序以及射頻卡通信協(xié)議設(shè)計等方面的內(nèi)容。通過合理的軟件設(shè)計,可以實現(xiàn)射頻卡讀取速度、穩(wěn)定性和安全性等方面的優(yōu)化,提高系統(tǒng)的性能和用戶體驗。4.3語音芯片程序的設(shè)計語音播報流程圖如圖4.2所示。開始初始化開始初始化語音播報語音播報YY播報是否結(jié)束播報是否結(jié)束N解碼并填空列隊N解碼并填空列隊結(jié)束圖4.2語音播報流程圖結(jié)束在基于STM32的智慧超市系統(tǒng)中,語音芯片的軟件設(shè)計需要實現(xiàn)以下功能:控制語音芯片的初始化:設(shè)置語音芯片的參數(shù)和配置寄存器,包括音量、語速、音調(diào)等。播放語音:將預(yù)先錄制好的語音文件存儲在芯片中,并通過控制芯片的寄存器實現(xiàn)播放。在超市系統(tǒng)中,語音芯片可以用于播放歡迎語、購物提示、商品介紹等語音內(nèi)容。停止語音:在需要結(jié)束語音播放時,可以控制芯片的寄存器停止播放語音。調(diào)整音量、語速、音調(diào)等參數(shù):語音芯片可以支持通過控制寄存器來調(diào)整音量、語速、音調(diào)等參數(shù),可以根據(jù)具體情況進行調(diào)整。在軟件設(shè)計中,需要根據(jù)語音芯片的規(guī)格和控制方式,編寫相應(yīng)的驅(qū)動程序,實現(xiàn)以上功能,并與STM32的控制程序進行整合。同時,需要考慮語音播放過程中的時序控制、錯誤處理等方面的設(shè)計。4.4顯示屏程序的設(shè)計顯示屏程序流程圖如圖4.3所示。開始初始化開始初始化顯示屏初始化顯示屏初始化YY顯示屏清屏顯示屏清屏顯示屏顯示N顯示屏顯示N結(jié)束結(jié)束圖4.3顯示屏程序流程圖顯示屏驅(qū)動程序:液晶顯示屏驅(qū)動程序是控制顯示屏顯示內(nèi)容的關(guān)鍵程序。開發(fā)人員需要選擇合適的驅(qū)動程序,并根據(jù)系統(tǒng)的硬件設(shè)計和顯示屏特性進行相應(yīng)的配置。驅(qū)動程序通常采用C/C++等高級語言進行編寫。顯示內(nèi)容管理程序:顯示內(nèi)容管理程序主要負(fù)責(zé)管理顯示屏上的各種信息,如車次、站名、價格等,以及一些提示信息,如等待提示、操作提示等。為了使用戶能夠更加直觀地了解系統(tǒng)信息,顯示內(nèi)容管理程序需要進行界面設(shè)計,設(shè)置適當(dāng)?shù)淖煮w、字號、顏色等參數(shù)。顯示屏刷新程序:顯示屏刷新程序是保證顯示屏信息更新的關(guān)鍵程序。在設(shè)計刷新程序時,需要考慮到系統(tǒng)的穩(wěn)定性和效率,同時避免出現(xiàn)重復(fù)刷新、卡頓等情況。刷新程序通常采用定時刷新的方式,以確保顯示屏信息的及時更新。顯示屏控制程序:顯示屏控制程序主要負(fù)責(zé)控制顯示屏的亮度、音量、開關(guān)等操作。在設(shè)計控制程序時,需要考慮到系統(tǒng)的穩(wěn)定性和用戶的使用體驗,設(shè)置合適的操作界面和控制參數(shù),以便用戶能夠方便地進行操作。綜上所述,智慧超市系統(tǒng)中液晶顯示屏的軟件設(shè)計需要涉及顯示屏驅(qū)動程序、顯示內(nèi)容管理程序、顯示屏刷新程序以及顯示屏控制程序等方面的內(nèi)容。通過合理的軟件設(shè)計,可以實現(xiàn)液晶顯示屏信息的及時更新、穩(wěn)定性和用戶體驗等方面的優(yōu)化,提高系統(tǒng)的性能和用戶滿意度。4.5按鍵程序的設(shè)計在基于STM32的智慧超市系統(tǒng)中,按鍵模塊可以用于實現(xiàn)商品選購、支付等操作。按鍵模塊的軟件設(shè)計需要實現(xiàn)以下功能:按鍵掃描:定時掃描按鍵狀態(tài),當(dāng)檢測到有按鍵按下時,觸發(fā)相應(yīng)的操作。操作響應(yīng):根據(jù)按鍵的不同,實現(xiàn)不同的功能操作,如商品選購、支付等。防抖動處理:由于按鍵開關(guān)機械結(jié)構(gòu)的特性,按鍵在瞬間開合時會產(chǎn)生抖動信號,因此需要進行防抖動處理,以確保按鍵狀態(tài)的穩(wěn)定性。多按鍵處理:考慮到多個按鍵同時按下的情況,需要對多按鍵的狀態(tài)進行處理,以避免按鍵沖突。操作提示:當(dāng)按鍵操作觸發(fā)后,需要通過語音提示或顯示屏等方式提示用戶操作的結(jié)果。按鍵模塊的軟件設(shè)計需要根據(jù)硬件設(shè)計的具體實現(xiàn)方式進行編寫,并與其他模塊進行協(xié)同工作。第5章系統(tǒng)測試5.1系統(tǒng)實物圖本課題研究的內(nèi)容為智慧超市系統(tǒng)的設(shè)計。該套系統(tǒng)主要由rfid模塊、語音模塊、單片機STM32、ZigBee通信模塊、按鍵、OLED屏幕等硬件組成;采用STM32單片機技術(shù)將RFID模塊采集到的參數(shù)通過ZigBee通信模塊發(fā)送到上位機,采用電腦端作為上位機。系統(tǒng)實物圖如圖5.1所示。圖5.1系統(tǒng)完整實物圖5.2測試目的軟件測試是為了發(fā)現(xiàn)系統(tǒng)中可能存在的缺陷,有的人認(rèn)為在測試過程中發(fā)現(xiàn)的錯誤越少越好,但事實并不是這樣的,只有在測試階段發(fā)現(xiàn)更多的問題才有利于提高軟件的完整性。軟件測試是一個破壞性的過程,其目的是為了盡可能多地發(fā)現(xiàn)軟件中的錯誤,而不是為了演示軟件的正確功能。5.3功能測試本課題研究的內(nèi)容為智慧超市系統(tǒng)的設(shè)計。該套系統(tǒng)主要由rfid模塊、語音模塊、單片機STM32、ZigBee通信模塊、按鍵、OLED屏幕等硬件組成;采用STM32單片機技術(shù)將RFID模塊采集到的參數(shù)通過ZigBee通信模塊發(fā)送到上位機,采用電腦端作為上位機。系統(tǒng)大概分為兩種模式一種是管理員模式,另一種是操作模式;管理員模式主要是在電腦端用于添加商品信息、用戶卡片以及信息修改;在操作模式下,當(dāng)用戶消費刷卡顯示卡號語音播報卡號在庫中存在并完成結(jié)算功能,余額信息顯示以及余額自動扣除。該智慧超市系統(tǒng)具有錄入商品卡信息,為商品卡設(shè)置相應(yīng)的金額的功能,以便用戶刷卡,如圖5.2所示;該智慧超市系統(tǒng)具有可以顯示購買的商品個數(shù)信息的功能,以便用戶使用時選擇商品數(shù)量,如圖5.3所示;該智慧超市系統(tǒng)具有對商品進行補貨的功能,可以自動補充商品,保證用戶能夠購買商品,如圖5.4所示。圖5.2商品卡錄入測試圖5.3購買信息測試圖5.4增加商品測試該智慧超市系統(tǒng)具有可以顯示購買的商品后臺信息的功能,以便用戶使用時選擇商品信息,如圖5.5所示;圖5.5購買商品后臺信息測試
第6章總結(jié)與展望6.1總結(jié)基于STM32的智慧超市系統(tǒng)設(shè)計是一個綜合性的項目,通過將STM32微控制器與各種傳感器、顯示模塊和通信模塊集成在一起,實現(xiàn)了智能化的超市管理和服務(wù)。在該系統(tǒng)中,我們成功地解決了多個關(guān)鍵問題。首先,通過選擇適用的傳感器模塊,如溫濕度傳感器、氣壓傳感器、一氧化碳傳感器和液化氣傳感器,我們能夠?qū)崟r監(jiān)測和控制超市環(huán)境的溫度、濕度、氣壓和氣體濃度,以確保顧客和員工的舒適與安全。其次,通過LCD液晶顯示模塊,我們能夠在超市內(nèi)展示實時的商品信息、促銷活動和導(dǎo)購指引,提供更好的購物體驗和信息傳遞。此外,通過串口通信模塊,我們能夠與外部設(shè)備、收銀系統(tǒng)和后臺服務(wù)器進行數(shù)據(jù)交換和通信,實現(xiàn)庫存管理、銷售統(tǒng)計和遠程監(jiān)控等功能,提高超市運營的效率和管理水平。通過整合這些模塊和功能,基于STM32的智慧超市系統(tǒng)設(shè)計能夠?qū)崿F(xiàn)自動化的庫存管理、智能化的購物體驗和遠程監(jiān)控與管理,為超市提供了更高效、便捷、安全的運營環(huán)境。同時,通過合理的系統(tǒng)設(shè)計和功能擴展,我們可以進一步提升系統(tǒng)性能和用戶體驗,實現(xiàn)更多創(chuàng)新和智能化的應(yīng)用??傮w而言,基于STM32的智慧超市系統(tǒng)設(shè)計不僅解決了傳統(tǒng)超市中的多個問題,還提供了更多增值服務(wù)和管理手段,將超市運營提升到一個新的水平。通過不斷優(yōu)化和改進,我們可以實現(xiàn)更智能、更智慧的超市系統(tǒng),滿足用戶需求的同時,推動超市行業(yè)的發(fā)展。6.2展望基于STM32的智慧超市系統(tǒng)設(shè)計在現(xiàn)代零售行業(yè)中具有廣闊的應(yīng)用前景和發(fā)展空間。展望未來,我們可以預(yù)見以下幾個方面的發(fā)展趨勢:首先,隨著物聯(lián)網(wǎng)和大數(shù)據(jù)技術(shù)的不斷發(fā)展,智慧超市系統(tǒng)將更加智能化和自動化。通過與其他智能設(shè)備和傳感器的連接,系統(tǒng)可以實現(xiàn)更精準(zhǔn)的數(shù)據(jù)采集和分析,從而為超市提供更精細化的管理和服務(wù)。其次,人工智能技術(shù)的應(yīng)用將為智慧超市系統(tǒng)帶來更多創(chuàng)新和智能化的功能。例如,利用圖像識別和人臉識別技術(shù),可以實現(xiàn)智能購物車、自助結(jié)賬系統(tǒng)和個性化推薦服務(wù),提升用戶體驗和購物效率。此外,智慧超市系統(tǒng)還有望與移動支付和電子錢包等新型支付方式進行無縫集成,提供更便捷、安全的支付體驗。另外,基于云計算和云服務(wù)的智慧超市系統(tǒng)將成為趨勢。通過將數(shù)據(jù)存儲和處理遷移到云端,超市可以實現(xiàn)跨地域的數(shù)據(jù)共享和遠程管理,降低成本并提高系統(tǒng)的可伸縮性和可靠性。最后,環(huán)境保護和可持續(xù)發(fā)展的要求也將對智慧超市系統(tǒng)的設(shè)計產(chǎn)生影響。在未來的發(fā)展中,更加注重節(jié)能、減少浪費和提升可持續(xù)性的技術(shù)和解決方案將得到廣泛應(yīng)用,使智慧超市系統(tǒng)更加環(huán)保和可持續(xù)。綜上所述,基于STM32的智慧超市系統(tǒng)在未來有著廣闊的發(fā)展前景。通過不斷創(chuàng)新和技術(shù)進步,我們可以預(yù)見智慧超市系統(tǒng)將實現(xiàn)更智能、便捷和可持續(xù)的運營模式,為消費者提供更好的購物體驗,為超市行業(yè)帶來更大的變革和發(fā)展。
參考文獻[1]張鳳鴿,舒詩琦.基于人機工程的超市自助收銀機改良設(shè)計[J].科學(xué)技術(shù)創(chuàng)新,2021,12(20):189-192.[2]吳梅,姚敦紅.基于UML的無人超市售貨系統(tǒng)設(shè)計[J].電腦知識與技術(shù),2020.[3]趙妍.服務(wù)設(shè)計理念在無人售貨超市購物車設(shè)計中的應(yīng)用研究[D].青島大學(xué),2020.[4]朱天昊.基于Android分屏技術(shù)的RFID自助收銀系統(tǒng)關(guān)鍵技術(shù)研究[D].西安電子科技大學(xué),2020.[5]鄧英佳,楊婧,趙雪梅,趙繪,劉本本.校園自助收銀管理系統(tǒng)[J].電腦知識與技術(shù),2020,16(17):67-68.[6]馬培立,張乃欣,陳哲,吳杰,楊雪.全自動無人售貨與自動販賣系統(tǒng)[J].兵工自動化,2020,39(03):32-37.[7]劉佳旻.無人售貨超市管理系統(tǒng)的分析與設(shè)計[J].電腦知識與技術(shù),2018.[8]張威,田繼宏,劉臣奇,崔保樂,徐夢坤.超市無人售貨系統(tǒng)的設(shè)計與開發(fā)[J].計算機產(chǎn)品與流通,2020.[9]滕光松,楊保仁,古仕朝,龍飛宇,陳旭.一種智能超市購物車的設(shè)計[J].電子世界,2019.[10]顧兆旭,焦戰(zhàn),崔鵬.基于物聯(lián)網(wǎng)的智能超市實訓(xùn)室建設(shè)方案初探[J].軟件工程,2018,21(12):60-62.[11]支忠山.射頻識別技術(shù)在現(xiàn)代智能超市中的應(yīng)用研究[J].湖北第二師范學(xué)院學(xué)報,2018,35(08):40-42.[12]王項奎.基于物聯(lián)網(wǎng)技術(shù)的校園智能超市管理系統(tǒng)設(shè)計[J].經(jīng)貿(mào)實踐,2018.[13]趙佳輝.無人售貨機的研究[J].科技視界,2019.[14]王翔,沈為,曾丹.基于Vue.js的智能超市導(dǎo)航系統(tǒng)[J].工業(yè)控制計算機,2018,31(12):133-135.[15]崔陽.基于MQTT協(xié)議的掃碼支付中間件設(shè)計與實現(xiàn)[J].現(xiàn)代計算機,2019.[16]Patents;AgencyReviewsPatentApplicationApprovalRequestfor"InteractiveConsumerSelf-ServiceShoppingSystem"[J].Politics&GovernmentWeek,2013.[17]YazanMohamad,MajdMakdessi,OmarRaad,IssamW.Damaj.SysMARTOutdoorServices:ASystemofConnectedandSmartSupermarkets.[J].CoRR,2019.[18]Allnewrapidchargepointsshouldoffercardpaymentby2020[J].M2Presswire,2019.[19]iAxeptOnlineContactlessbringsSCAcompliantcontactlesscardpaymentsforInternetshopping[J].M2Presswire,2020.[20]GuohuaHu,PascalFeldhaus,YuwuFeng,ShengjieWang,JuanZheng,HuiminDuan,JuanjuanGu.AccuracyImprovementofIndoorReal-TimeLocationTrackingAlgorithmforSmartSupermarketBasedonUltra-Wideband[J].InternationalJournalofPatternRecognitionandArtificialIntelligence,2019,33(12)):13-15.
附錄A總原理圖圖A.1總原理圖
附錄B程序********************************************************************************************************/#include<QApplication>#include"QSerialPortTerminal.h"#include<QtCore/QTextCodec>#include<QtGui>intmain(intargc,char**argv){QApplicationapp(argc,argv);QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));QSerialPortTerminalwindow;window.setWindowTitle("智慧超市系統(tǒng)");window.show();returnapp.exec();}********************************************************************************************************/#include<QtGui>#include"QSerialPortTerminal.h"#include<QMessageBox>#include<QtSql/QSqlQuery>#include<QDebug>#include<QTextCodec>QStringdata1;QStringdata2;QStringdata3;QStringdata4;QStringdata5;unsignedinttimefz=0;intxlNum=0;QSerialPortTerminal::QSerialPortTerminal(QWidget*parent):QMainWindow(parent){setupUi(this);stackedWidget->setCurrentIndex(0);//m_pTimer=newQTimer(this);connect(m_pTimer,SIGNAL(timeout()),this,SLOT(handleTimeout()));serialPort=newManageSerialPort;connect(serialPort,SIGNAL(newDataReceived(constQByteArray&)),this,SLOT(slot_newDataReceived(constQByteArray&)));//window=======================comboBoxPortName->addItem("com1",QVariant::fromValue(QString("com1")));comboBoxPortName->addItem("com2",QVariant::fromValue(QString("com2")));comboBoxPortName->addItem("com3",QVariant::fromValue(QString("com3")));comboBoxPortName->addItem("com4",QVariant::fromValue(QString("com4")));comboBoxPortName->addItem("com5",QVariant::fromValue(QString("com5")));comboBoxPortName->addItem("com6",QVariant::fromValue(QString("com6")));comboBoxPortName->addItem("com7",QVariant::fromValue(QString("com7")));comboBoxPortName->addItem("com8",QVariant::fromValue(QString("com8")));comboBoxPortName->addItem("com9",QVariant::fromValue(QString("com9")));comboBoxPortName->addItem("com10",QVariant::fromValue(QString("com10")));comboBoxPortName->addItem("com11",QVariant::fromValue(QString("com11")));comboBoxPortName->addItem("com12",QVariant::fromValue(QString("com12")));comboBoxPortName->addItem("com13",QVariant::fromValue(QString("com13")));comboBoxPortName->setCurrentIndex(0);//COM1comboBoxBaudRate->addItem("110",QVariant::fromValue(BAUD110));comboBoxBaudRate->addItem("300",QVariant::fromValue(BAUD300));comboBoxBaudRate->addItem("600",QVariant::fromValue(BAUD600));comboBoxBaudRate->addItem("1200",QVariant::fromValue(BAUD1200));comboBoxBaudRate->addItem("2400",QVariant::fromValue(BAUD2400));comboBoxBaudRate->addItem("4800",QVariant::fromValue(BAUD4800));comboBoxBaudRate->addItem("9600",QVariant::fromValue(BAUD9600));comboBoxBaudRate->addItem("19200",QVariant::fromValue(BAUD19200));comboBoxBaudRate->addItem("38400",QVariant::fromValue(BAUD38400));comboBoxBaudRate->addItem("57600",QVariant::fromValue(BAUD57600));comboBoxBaudRate->addItem("115200",QVariant::fromValue(BAUD115200));comboBoxBaudRate->setCurrentIndex(6);//9600baudsconnect(pushButtonOpen,SIGNAL(clicked()),this,SLOT(slot_openPort()));connect(pushButtonClose,SIGNAL(clicked()),this,SLOT(slot_closePort()));qTableWidget->setColumnCount(6);//設(shè)置列數(shù)qTableWidget->setRowCount(50);//設(shè)置行數(shù)qTableWidget->setWindowTitle("QTableWidget");qTableWidget->setColumnWidth(0,200);//設(shè)置第四列高度qTableWidget->setColumnWidth(1,200);//qTableWidget->setColumnWidth(2,200);//qTableWidget->setColumnWidth(3,200);//qTableWidget->setColumnWidth(4,200);//qTableWidget->setColumnWidth(5,200);////qTableWidget->verticalScrollBar()->setBaseSize(QSize(20000,20000));//ui->qTableWidget->setRowHeight(0,80);//設(shè)置行高度qTableWidget->verticalHeader()->setDefaultSectionSize(50);//設(shè)置行距qTableWidget->horizontalHeader()->setStretchLastSection(true);//設(shè)置寬度布滿全局qTableWidget->verticalHeader()->setStretchLastSection(true);//設(shè)置高度布滿全局QStringListm_Header;m_Header<<QString("卡號")<<QString("名稱")<<QString("種類")<<QString("單價")<<QString("庫存")<<QString("時間");qTableWidget->setHorizontalHeaderLabels(m_Header);//添加橫向表頭qTableWidget->verticalHeader()->setVisible(true);//縱向表頭可視化qTableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color:#00007f;color:white;}");qTableWidget->horizontalHeader()->setVisible(true);//橫向表頭可視化qTableWidget->horizontalHeader()->setHighlightSections(false);//ui->tableWidget->setShowGrid(false);//隱藏柵格qTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//設(shè)置編輯方式:禁止編輯表格qTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//設(shè)置表格選擇方式:設(shè)置表格為整行選中//ui->qTableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns);//設(shè)置表格選擇方式:設(shè)置表格為整列選中//ui->qTableWidget->setSelectionMode(QAbstractItemVieQTableWidget/QTableView的表頭不會因為鼠標(biāo)點擊選中而變色w::SingleSelection);//選擇目標(biāo)方式單選qTableWidget->setSelectionMode(QAbstractItemView::MultiSelection);//多選createDataBase();m_pTimer->start(1000);}QSerialPortTerminal::~QSerialPortTerminal(){deleteserialPort;serialPort=NULL;}voidQSerialPortTerminal::createDataBase(){data_table=data_db.createDateBases("jiangjiesql");if(!data_table.open()){QMessageBox::information(this,"警告","數(shù)據(jù)庫打開失敗,請重啟軟件!");return;}QSqlQueryquery(data_table);query.exec("createtablehuan(idintegerprimarykeyAUTOINCREMENT,carvarchar(40),name1varchar(40),zlvarchar(40),djvarchar(40),kcvarchar(40),timevarchar(40))");query.exec();QSqlQueryquery1(data_table);query1.exec("createtableren(idintegerprimarykeyAUTOINCREMENT,carvarchar(40),name1varchar(40),yevarchar(40))");query1.exec();QSqlQueryquery2(data_table);query2.exec("createtablekcq(_idintegerprimarykeyAUTOINCREMENT,xlvarchar(40),name1varchar(40),timevarchar(40))");query2.exec();}voidQSerialPortTerminal::updatetextEditReceive(){QTextCodec*codec=QTextCodec::codecForName("UTF-8");QTextStreamin(allDataReceived);in.setAutoDetectUnicode(false);in.setCodec(codec);QStringdecodedStr=in.readAll();//textEditReceive->setPlainText(decodedStr);}voidQSerialPortTerminal::handleTimeout(){datetime=QDateTime::currentDateTime();QStringtime=datetime.toString("yyyy-MM-ddhh:mm:ss");label_12->setText(time);}voidQSerialPortTerminal::slot_openPort(){//groupBoxSettings->setEnabled(false);pushButtonOpen->setEnabled(false);pushButtonClose->setEnabled(true);//pushButtonSend->setEnabled(true);if(serialPort->isOpen())serialPort->close();//SettingsparametersQVarianttemp1;temp1=comboBoxPortName->itemData(comboBoxPortName->currentIndex());serialPort->setPort(temp1.value<QString>());//Porttemp1=comboBoxBaudRate->itemData(comboBoxBaudRate->currentIndex());serialPort->setBaudRate(temp1.value<BaudRateType>());//BaudRate//temp=comboBoxDataBits->itemData(comboBoxDataBits->currentIndex());//serialPort->setDataBits(temp.value<DataBitsType>());//DataBitsserialPort->setDataBits(DATA_8);//temp=comboBoxParity->itemData(comboBoxParity->currentIndex());serialPort->setParity(PAR_NONE);//Parity//temp=comboBoxStopBits->itemData(comboBoxStopBits->currentIndex());serialPort->setStopBits(STOP_1);//StopBits//temp=comboBoxFlowControl->itemData(comboBoxFlowControl->currentIndex());serialPort->setFlowControl(FLOW_OFF);//FlowControlserialPort->setTimeout(0,10);serialPort->enableSending();serialPort->enableReceiving();serialPort->open();serialPort->receiveData();}voidQSerialPortTerminal::slot_closePort(){serialPort->close();//groupBoxSettings->setEnabled(true);pushButtonOpen->setEnabled(true);pushButtonClose->setEnabled(false);//pushButtonSend->setEnabled(false);}voidQSerialPortTerminal::slot_newDataReceived(constQByteArray&dataReceived){QStrings;constchar*b=dataReceived.data();intsize=0;intn;size=dataReceived.size();for(n=0;n<size;n++){if(b[n]=='w'){Pr_1=0;}elseif(b[n]=='z'){aa[Pr_1]=0;s=&aa[0];if(aa[0]=='1'){if(queryByIDA(s.mid(1,8))==1){label_20->setText(s.mid(1,8));queryByID(s.mid(1,8));QStringsend="w3z";QByteArraysend1=send.toLocal8Bit();serialPort->sendData(send1);}elseif(queryByUserIDA(s.mid(1,8))==1){label_23->setText(s.mid(1,8));queryByUserID(s.mid(1,8));QStringsend="w3z";QByteArraysend1=send.toLocal8Bit();serialPort->sendData(send1);}else{label_20->setText(s.mid(1,8));label_23->setText(s.mid(1,8));}}elseif(aa[0]=='2'){floatdj=lineEdit_7->text().toFloat();intnumkc=lineEdit_8->text().toInt();zj=zj+dj;label_29->setText(QString::number(zj));if(numkc>1){numkc--;lineEdit_8->setText(QString::number(numkc));QSqlQueryquery1(data_table);query1.exec("updatehuansetkc='"+lineEdit_8->text()+"'wherecar='"+label_20->text()+"'");textEdit->append("商品:"+lineEdit_6->text()+"數(shù)量:1單價:"+lineEdit_7->text()+"總價:"+QString::number(zj)+"/r/n");}else{QMessageBox::information(this,"警告","庫存不足,請及時補充!");}}elseif(aa[0]=='3'){floatye=lineEdit_11->text().toFloat();if(ye>=zj){ye=ye-zj;intzjs=zj*10;intyes=ye*10;QByteArraysend1;send1[0]='w';send1[1]='1';send1[2]=zjs%1000/100+'0';send1[3]=zjs%100/10+'0';send1[4]='.';send1[5]=zjs%10+'0';send1[6]=yes%10000/1000+'0';send1[7]=yes%1000/100+'0';send1[8]=yes%100/10+'0';send1[9]='.';send1[10]=yes%10+'0';send1[11]='z';send1[12]=0;serialPort->sendData(send1);xlNum=0;zj=0;lineEdit_11->setText(QString::number(ye));label_29->setText(QString::number(zj));textEdit->setText("");QSqlQueryquery1(data_table);query1.exec("updaterensetye='"+lineEdit_11->text()+"'wherecar='"+label_23->text()+"'");}else{QMessageBox::information(this,"警告","余額不足,請充值!");}}}else{aa[Pr_1]=b[n];Pr_1++;}}}voidQSerialPortTerminal::on_pushButton_2_clicked(){stackedWidget->setCurrentIndex(0);}voidQSerialPortTerminal::on_pushButton_4_clicked(){if(lineEdit->text()=="admin"&&lineEdit_2->text()=="123"){stackedWidget->setCurrentIndex(0);}else{QMessageBox::information(this,"警告","賬號或密碼錯誤");}}voidQSerialPortTerminal::on_pushButton_5_clicked(){stackedWidget->setCurrentIndex(1);}voidQSerialPortTerminal::on_pushButton_3_clicked(){qTableWidget->clearContents();nummin=0;QSqlQueryquery1(data_table);query1.exec("select*fromhuanorderbykcasc");while(query1.next()){qTableWidget->setItem(nummin,0,newQTableWidgetItem(query1.value(1).toString()));//文件號qTableWidget->setItem(nummin,1,newQTableWidgetItem(query1.value(2).toString()));qTableWidget->setItem(nummin,2,newQTableWidgetItem(query1.value(3).toString()));qTableWidget->setItem(nummin,3,newQTableWidgetItem(query1.value(4).toString()));qTableWidget->setItem(nummin,4,newQTableWidgetItem(query1.value(5).toString()));nummin++;if(nummin>49){//ui->qTableWidget->setRowCount(nummin);introw=qTableWidget->rowCount();qTableWidget->insertRow(row);}}}voidQSerialPortTerminal::queryByID(QStringid){qTableWidget->clearContents();nummin=0;QSqlQueryquery1(data_table);query1.exec("select*fromhuanwherecar='"+id+"'");while(query1.next()){lineEdit_6->setText(query1.value(2).toString());lineEdit_9->setText(query1.value(3).toString());lineEdit_7->setText(query1.value(4).toString());lineEdit_8->setText(query1.value(5).toString());}}intQSerialPortTerminal::queryByIDA(QStringid){intresult=0;qTableWidget->clearContents();nummin=0;QSqlQueryquery1(data_table);query1.exec("select*fromhuanwherecar='"+id+"'");while(query1.next()){return1;}returnresult;}voidQSerialPortTerminal::queryByUserID(QStringid){ qTableWidget->clearContents();nummin=0;QSqlQueryquery1(data_table);query1.exec("select*fromrenwherecar='"+id+"'");while(query1.next()){lineEdit_10->setText(query1.value(2).toString());lineEdit_11->setText(query1.value(3).toString());}}intQSerialPortTerminal::queryByUserIDA(QStringid){intresult=0;qTableWidget->clearContents();nummin=0;QSqlQueryquery1(data_table);query1.exec("select*fromrenwherecar='"+id+"'");while(query1.next()){return1;}returnresult;}//QStringsend="w1"+lineEdit_3->text()+"z";//QByteArraysend1=send.toLocal8Bit();//serialPort->sendData(send1);voidQSerialPortTerminal::on_pushButton_7_clicked(){if(label_20->text()==""){QMessageBox::information(this,"通知","卡號為空,不可保存!");}else{if(queryByIDA(label_20->text())==1){QMessageBox::information(this,"通知","卡號已存在,不可保存!");}else{QSqlQueryquery3(data_table);query3.prepare("insertintohuan(car,name1,zl,dj,kc,time)values(?,?,?,?,?,?)");query3.addBindValue(label_20->text());query3.addBindValue(lineEdit_6->text());query3.addBindValue(lineEdit_9->text());query3.addBindValue(lineEdit_7->text());query3.addBindValue(lineEdit_8->text());query3.addBindValue(datetime.toString("yyyy/MM/ddHH:mm:ss"));query3.exec();QMessageBox::information(this,"通知","存儲成功");QStringsend="w2z";QByteArraysend1=send.toLocal8Bit();serialPort->sendData(send1);}}}voidQSerialPortTerminal::on_pushButton_8_clicked(){QSqlQueryquery1(data_table);query1.exec("updatehuansetkc='"+lineEdit_8->text()+"'wherecar='"+label_20->text()+"'");QMessageBox::information(this,"通知","庫存修改成功!");}voidQSerialPortTerminal::on_pushButton_9_clicked(){if(label_23->text()==""){QMessageBox::information(this,"通知","卡號為空,不可保存!");}else{if(queryByUserIDA(label_23->text())==1){QMessageBox::information(this,"通知","卡號已存在,不可保存!");}else{QSqlQueryquery3(data_table);query3.prepare("insertintoren(car,name1,ye)values(?,?,?)");query3.addBindValue(label_20->text());query3.addBindValue(lineEdit_10->text());query3.addBindValue(lineEdit_11->text());query3.exec();QMessageBox::information(this,"通知","存儲成功");QStringsend="w2z";QByteArraysend1=send.toLocal8Bit();serialPort->sendData(send1);}}}voidQSerialPortTerminal::on_pushButton_10_clicked(){QSqlQueryquery1(data_table);query1.exec("updaterensetname1='"+lineEdit_10->text()+"'wherecar='"+label_23->text()+"'");QMessageBox::information(this,"通知","姓名修改成功!");}voidQSerialPortTerminal::on_pushButton_11_clicked(){QSqlQueryquery1(data_table);query1.exec("updaterensetye='"+lineEdit_11->text()+"'wherecar='"+label_23->text()+"'");QMessageBox::information(this,"通知","余額修改成功!");}voidQSerialPortTerminal::queryxl(){m_chart=newQChart();QSqlQueryquery1(data_table);query1.exec("selectdistinctname1fromkcq");while(query1.next()){nameXL.append(query1.value(0).toString());}m_chart=newQChart();QSqlQueryquery2(data_table);query2.exec("select*fromkcqwherename1='"+nameXL.at(0)+"'");while(query1.next()){nameXL.append(query1.value(1).toString());}}voidQSerialPortTerminal::on_pushButton_12_clicked(){QSqlQueryquery1(data_table);query1.exec("updatehuansetdj='"+lineEdit_7->text()+"'wherecar='"+label_20->text()+"'");QMessageBox::information(this,"通知","單價修改成功!");}********************************************************************************************************/#ifndefQSERIALPORTTERMINAL_H#de
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年麗水道路貨運從業(yè)資格證模擬考試官方題下載
- 2025年石家莊貨運資格證題庫在線練習(xí)
- 終止協(xié)議書范本范文6篇
- 《寶島臺灣》說課稿
- 營養(yǎng)強化劑競爭策略分析報告
- 受托審計合同范本
- 原料冷庫租賃合同范例
- 衛(wèi)生間維修合同范本
- 臺球廳租賃合同范本
- 個人辭職申請書簡短
- 四年級下冊勞動《小小快遞站》課件
- 籃球教練職業(yè)生涯規(guī)劃
- 機器人手術(shù)后期護理
- 食品抽檢核查處置重點安全性指標(biāo)不合格原因分析排查手冊
- 自力式調(diào)節(jié)閥閥門
- 《學(xué)生檔案信息管理系統(tǒng)的開發(fā)》6500字(論文)
- GB/T 44904-2024售后服務(wù)無理由退貨服務(wù)規(guī)范
- 《股市的基礎(chǔ)常識》課件
- 部編版二年級下冊語文教材分析、學(xué)情分析(每一課都有-全)
- 行測圖形推理1000題庫帶答案
- 500萬立方米地下水封洞庫項目施工組織設(shè)計
評論
0/150
提交評論