日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

基于Python實(shí)現(xiàn)的購(gòu)物商城管理系統(tǒng)

瀏覽:187日期:2022-06-21 09:09:34
完整項(xiàng)目地址:

https://github.com/kongxiangchx/Shopping-mall-management-system

簡(jiǎn)介

本項(xiàng)目使用Python語(yǔ)言編寫(xiě),實(shí)現(xiàn)了顧客端和商家端。

功能 店主功能:注冊(cè)、登錄、修改店鋪信息、添加商品、刪除商品、修改商品、查找商品、查看交易記錄。 顧客功能:注冊(cè)、登錄、修改收貨信息、查找商品、購(gòu)買(mǎi)商品、查看交易記錄、取消訂單。 商家端 shopMain.py:編寫(xiě)界面上組件的功能,并通過(guò)調(diào)用send_data.py向服務(wù)器發(fā)送相應(yīng)的請(qǐng)求。 shop :存放商家端的界面代碼。 ui1 :存放商家端的ui文件,使用qtdesigner設(shè)計(jì)。 send_data.py 將數(shù)據(jù)封裝成json之后發(fā)給服務(wù)器。 顧客端 customerMain.py:編寫(xiě)界面上組件的功能,并通過(guò)調(diào)用send_data.py向服務(wù)器發(fā)送相應(yīng)的請(qǐng)求。 customer :存放顧客端的界面代碼。 ui1 :存放顧客端的ui文件,使用qtdesigner設(shè)計(jì)。 send_data.py 將數(shù)據(jù)封裝成json之后發(fā)給服務(wù)器。 服務(wù)器端 server.py:主要用來(lái)處理商家和顧客發(fā)來(lái)的請(qǐng)求,并調(diào)用mysql_op對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。 mysql_op.py:處理商家和顧客對(duì)數(shù)據(jù)庫(kù)的操作。主要代碼

shopMain.py

import sysfrom PyQt5.QtCore import *from PyQt5.QtWidgets import *from PyQt5.QtGui import *import shop.register_windowfrom shop.register_window import *from shop.login_window import *from shop.shop_main import *from shop.add_goods import *from shop.view_goods import *from shop.change_goods import *from shop.update_goods import *from shop.view_trade import *from shop.shop_info import *from send_data import *class Register(QMainWindow, Ui_register_window): def __init__(self, parent=None):super(Register, self).__init__(parent)self.setupUi(self)self.reg_bt.clicked.connect(self.click1)self.tologin.clicked.connect(self.click2) def click1(self):username = self.username.text()pass1 = self.pass1.text()pass2 = self.pass2.text()shop_name = self.shop_name.text()phone = self.phone.text()addr = self.addr.currentText()if username == ’’ or pass1 == ’’ or shop_name == ’’ or phone == ’’ or addr == ’’: QMessageBox.information(self, '注冊(cè)', '店鋪信息不能為空', QMessageBox.Yes) returnif pass1 != pass2: QMessageBox.information(self, '注冊(cè)', '兩次密碼不同', QMessageBox.Yes) returndata = {’id’: ’shop’, ’type’: ’register’, ’user’: username,’passwd’: pass1, ’shop_name’: shop_name, ’phone’: phone, ’addr’: addr}s = Send_data()recv = s.message(data)s.close()if recv[’result’] == ’success’: QMessageBox.information(self, '注冊(cè)', '注冊(cè)成功', QMessageBox.Yes)else: QMessageBox.information(self, '注冊(cè)', '注冊(cè)失敗', QMessageBox.Yes) def click2(self):myWin1.hide()myWin2.show()class Login(QMainWindow, Ui_login_window): def __init__(self, parent=None):super(Login, self).__init__(parent)self.setupUi(self)self.login_bt.clicked.connect(self.click1)self.toreg.clicked.connect(self.click2) def click1(self):global userusername = self.username.text()password = self.password.text()if username == ’’ or password == ’’: QMessageBox.information(self, '登錄', '用戶名和密碼不能為空', QMessageBox.Yes) returndata = {’id’: ’shop’, ’type’: ’login’,’user’: username, ’passwd’: password}s = Send_data()recv = s.message(data)s.close()if recv[’result’] == ’success’: QMessageBox.information(self, '登錄', '登錄成功', QMessageBox.Yes) user = username myWin2.hide() myWin3.show()else: QMessageBox.information(self, '登錄', '登錄失敗', QMessageBox.Yes) def click2(self):myWin2.hide()myWin1.show()class Mainwin(QMainWindow, Ui_shop_main): def __init__(self, parent=None):super(Mainwin, self).__init__(parent)self.setupUi(self)self.add_goods.clicked.connect(self.click1)self.view_goods.clicked.connect(self.click2)self.change_goods.clicked.connect(self.click3)self.view_trade.clicked.connect(self.click4)self.shop_info.clicked.connect(self.click5) def click1(self):myWin4.show() def click2(self):myWin5.load()myWin5.show() def click3(self):myWin6.load()myWin6.show() def click4(self):myWin7.show() def click5(self):myWin8.load()myWin8.show()class Addgoods(QMainWindow, Ui_add_goods): global user def __init__(self, parent=None):super(Addgoods, self).__init__(parent)self.setupUi(self)self.tomain.clicked.connect(self.click1)self.add_bt.clicked.connect(self.click2) def click1(self):self.hide() def click2(self):goods_name = self.goods_name.text()goods_type = self.goods_type.currentText()goods_prices = float(self.goods_prices.text())goods_rest = int(self.goods_rest.text())data = {’id’: ’shop’, ’user’: user, ’type’: ’add_goods’, ’goods_name’: goods_name,’goods_type’: goods_type, ’goods_prices’: goods_prices, ’goods_rest’: goods_rest}s = Send_data()recv = s.message(data)if recv[’result’] == ’success’: QMessageBox.information(self, '添加商品', '添加成功', QMessageBox.Yes)else: QMessageBox.information(self, '添加商品', '添加失敗', QMessageBox.Yes)s.close()class Viewgoods(QMainWindow, Ui_view_goods): global user def __init__(self, parent=None):super(Viewgoods, self).__init__(parent)self.setupUi(self)self.tomain.clicked.connect(self.click1)self.ser_bt.clicked.connect(self.click2) def click1(self):self.hide() def click2(self):goods_name = self.goods_name.text()goods_type = self.goods_type.currentText()data = {’id’: ’shop’, ’type’: ’view_goods’, ’user’: user,’goods_name’: goods_name, ’goods_type’: goods_type}s = Send_data()recv = s.message(data)s.close()l1 = len(recv[’result’])self.model = QStandardItemModel(l1, 5)self.model.setHorizontalHeaderLabels([’名稱’, ’類型’, ’價(jià)格’, ’庫(kù)存’, ’已售’])for i in range(l1): for j in range(5):item = QStandardItem(’%s’ % (recv[’result’][i][j]))self.model.setItem(i, j, item)self.goods.setModel(self.model) def load(self):self.model = QStandardItemModel(0, 5)self.model.setHorizontalHeaderLabels([’名稱’, ’類型’, ’價(jià)格’, ’庫(kù)存’, ’已售’])self.goods.setModel(self.model)class Changegoods(QMainWindow, Ui_change_goods): def __init__(self, parent=None):super(Changegoods, self).__init__(parent)self.setupUi(self)self.tomain.clicked.connect(self.click1)self.delete_bt.clicked.connect(self.click2)self.toupdate.clicked.connect(self.click3) def click1(self):self.hide() def click2(self):goods_name = self.goods_name.currentText()if goods_name == ’’: returndata = {’id’: ’shop’, ’type’: ’delete_goods’,’user’: user, ’goods_name’: goods_name}# print(json.dumps(data))s = Send_data()recv = s.message(data)s.close()if recv[’result’] == ’success’: self.load() QMessageBox.information(self, '刪除商品', '刪除成功', QMessageBox.Yes)else: QMessageBox.information(self, '刪除商品', '刪除失敗', QMessageBox.Yes) def click3(self):goods_name = self.goods_name.currentText()# print(goods_name)if goods_name != ’’: myWin9.load(goods_name) myWin9.show() def load(self):data = {’id’: ’shop’, ’type’: ’select_goods’, ’user’: user}s = Send_data()recv = s.message(data)s.close()# print(recv[’result’])l1 = len(recv[’result’])self.goods_name.clear()for i in range(l1): self.goods_name.addItem(recv[’result’][i][0])class Updategoods(QMainWindow, Ui_update_goods): def __init__(self, parent=None):super(Updategoods, self).__init__(parent)self.setupUi(self)self.tofront.clicked.connect(self.click1)self.update_bt.clicked.connect(self.click2) def click1(self):self.hide() def click2(self):old_goods_name = self.old_goods_namegoods_name = self.goods_name.text()goods_type = self.goods_type.currentText()goods_prices = float(self.goods_prices.text())goods_rest = int(self.goods_rest.text())data = {’id’: ’shop’, ’type’: ’update_goods’, ’user’: user, ’old_goods_name’: old_goods_name,’goods_name’: goods_name, ’goods_type’: goods_type, ’goods_prices’: goods_prices, ’goods_rest’: goods_rest}s = Send_data()recv = s.message(data)s.close()if recv[’result’] == ’success’: self.hide() myWin6.load() QMessageBox.information(self, '修改商品', '修改成功', QMessageBox.Yes)else: QMessageBox.information(self, '修改商品', '修改失敗', QMessageBox.Yes) def load(self, goods_name):self.old_goods_name = goods_namedata = {’id’: ’shop’, ’type’: ’select_goodsinfo’,’user’: user, ’goods_name’: goods_name}# print(json.dumps(data))s = Send_data()recv = s.message(data)s.close()# print(recv[’result’])self.goods_name.setText(recv[’result’][0])self.goods_type.setCurrentText(recv[’result’][1])self.goods_prices.setValue(recv[’result’][2])self.goods_rest.setValue(recv[’result’][3])class Viewtrade(QMainWindow, Ui_view_trade): def __init__(self, parent=None):super(Viewtrade, self).__init__(parent)self.setupUi(self)self.tomain.clicked.connect(self.click1)self.ser_bt.clicked.connect(self.click2) def click1(self):self.hide() def click2(self):goods_name = self.goods_name.text()goods_type = self.goods_type.currentText()data = {’id’: ’shop’, ’type’: ’view_trade’, ’user’: user,’goods_name’: goods_name, ’goods_type’: goods_type}s = Send_data()recv = s.message(data)s.close()# print(recv[’result’])l1 = len(recv[’result’])self.model = QStandardItemModel(l1, 8)self.model.setHorizontalHeaderLabels( [’商品名稱’, ’商品類型’, ’交易數(shù)量’, ’交易金額’, ’交易時(shí)間’, ’顧客’, ’聯(lián)系方式’, ’收貨地址’])for i in range(l1): for j in range(8):item = QStandardItem(’%s’ % (recv[’result’][i][j]))self.model.setItem(i, j, item)self.trade.setModel(self.model) def load(self):self.model = QStandardItemModel(0, 8)self.model.setHorizontalHeaderLabels( [’商品名稱’, ’商品類型’, ’交易數(shù)量’, ’交易金額’, ’交易時(shí)間’, ’顧客’, ’聯(lián)系方式’, ’收貨地址’])self.trade.setModel(self.model)class Shopinfo(QMainWindow, Ui_shop_info): def __init__(self, parent=None):super(Shopinfo, self).__init__(parent)self.setupUi(self)self.tomain.clicked.connect(self.click1)self.change_bt.clicked.connect(self.click2) def click1(self):self.hide() def click2(self):pass1 = self.pass1.text()pass2 = self.pass2.text()shop_name = self.shop_name.text()phone = self.phone.text()addr = self.addr.currentText()data = {’id’: ’shop’, ’type’: ’update_shop’, ’user’: user,’passwd’: pass1, ’shop_name’: shop_name, ’phone’: phone, ’addr’: addr}s = Send_data()recv = s.message(data)s.close()if recv[’result’] == ’success’: QMessageBox.information(self, '修改店鋪信息', '修改成功', QMessageBox.Yes)else: QMessageBox.information(self, '修改店鋪信息', '修改失敗', QMessageBox.Yes)self.load() def load(self):data = {’id’: ’shop’, ’type’: ’shop_info’, ’user’: user}s = Send_data()recv = s.message(data)s.close()self.username.setText(recv[’result’][0])self.username.setFocusPolicy(QtCore.Qt.NoFocus)self.pass1.setText(recv[’result’][1])self.pass2.setText(recv[’result’][1])self.shop_name.setText(recv[’result’][2])self.phone.setText(recv[’result’][3])self.addr.setCurrentText(recv[’result’][4])self.shop_time.setText(recv[’result’][5])self.shop_time.setFocusPolicy(QtCore.Qt.NoFocus)if __name__ == ’__main__’: app = QApplication(sys.argv) user = '' myWin1 = Register() myWin1.show() myWin2 = Login() myWin3 = Mainwin() myWin4 = Addgoods() # myWin4.show() myWin5 = Viewgoods() # myWin5.show() myWin6 = Changegoods() # myWin6.show() myWin7 = Viewtrade() # myWin7.show() myWin8 = Shopinfo() # myWin8.show() myWin9 = Updategoods() if app.exec_() == 0:sys.exit(0)

代碼較多不便全部放出,請(qǐng)自行下載或克隆倉(cāng)庫(kù)。

以上就是基于Python實(shí)現(xiàn)的購(gòu)物商城管理系統(tǒng)的詳細(xì)內(nèi)容,更多關(guān)于python 購(gòu)物商城管理系統(tǒng)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久久水蜜桃av免费网站| 深夜福利一区| 欧美伊人久久| 亚洲日韩视频| 三级一区在线视频先锋| 91久久亚洲| 91中文字幕精品永久在线| 美女视频一区在线观看| 国产精品一级| 国产亚洲精品美女久久| 日日夜夜免费精品视频| 亚洲精品综合| 中文精品电影| 无码日韩精品一区二区免费| 日韩精品视频在线看| 亚洲开心激情| 国产日韩欧美一区二区三区在线观看| 日本午夜精品| 国产精品久久久久久模特| 国产剧情在线观看一区| 国产精品久久亚洲不卡| 亚州精品视频| 国产日产精品一区二区三区四区的观看方式 | 日韩精品视频在线看| 亚洲精品乱码久久久久久蜜桃麻豆 | 欧美一级精品| 日本久久成人网| 91精品一区二区三区综合| 欧美手机在线| 性色一区二区| 日韩av中文字幕一区二区三区| 欧美日韩中出| 国产一区调教| 久久伦理在线| 极品日韩av| 美女亚洲一区| 免费成人在线观看| 蜜臀精品久久久久久蜜臀| 在线精品观看| 亚洲精品在线国产| 日本成人在线视频网站| 蜜臀久久99精品久久久久宅男| 亚洲欧美日韩国产综合精品二区| 亚洲专区一区| 在线日韩成人| 国产亚洲一区| 精品少妇av| 亚洲欧洲高清| 亚洲成av在线| 欧洲激情综合| 亚洲欧美日本日韩| 免费成人在线影院| 夜夜嗨av一区二区三区网站四季av| 久久天堂av| 免费日韩精品中文字幕视频在线| 视频一区二区欧美| 亚洲精品一级| 国产乱人伦丫前精品视频 | 精品国产亚洲一区二区三区大结局| 老鸭窝一区二区久久精品| 国产精品国产三级国产在线观看| 蜜桃av.网站在线观看| 韩日一区二区三区| 美国三级日本三级久久99| 国产一精品一av一免费爽爽| 久久精品免视看国产成人| 岛国av在线网站| 亚洲欧洲午夜| 亚洲视频国产| 国产精品密蕾丝视频下载| www.九色在线| 久久av一区| 国产精品99精品一区二区三区∴| 亚洲最新无码中文字幕久久 | 综合激情婷婷| 精品国产欧美| 亚洲午夜黄色| 亚洲精品伊人| 亚洲国产福利| 美女久久网站| 久久国产乱子精品免费女| 久久影院午夜精品| 日韩中文字幕91| 国产精品九九| 国产99精品一区| 日韩福利视频网| 成人福利av| 欧美专区18| 久久精品毛片| 99视频一区| 麻豆国产精品一区二区三区| 久久精品影视| 日本精品国产| 秋霞影视一区二区三区| 日韩在线一区二区| 久久国产人妖系列| 久久久久久久久久久9不雅视频| 99成人超碰| 亚洲va久久| 亚洲国产专区| 国产精品超碰| 国产韩日影视精品| 欧美国产不卡| 鲁大师成人一区二区三区| 精品国产欧美日韩| 免费精品视频最新在线| 97精品一区| 日韩精品导航| 午夜国产精品视频| 九九99久久精品在免费线bt| 亚洲国产成人精品女人| 国产剧情在线观看一区| 国产色综合网| 88xx成人免费观看视频库| 青青青国产精品| 亚洲一区二区三区四区五区午夜| 国产一区二区三区探花| 亚洲精品观看| 亚洲91精品| jizzjizz中国精品麻豆| 日本亚洲最大的色成网站www| 桃色一区二区| 美腿丝袜亚洲三区| 天堂精品久久久久| 在线国产一区| 福利一区和二区| 国产情侣久久| 综合视频一区| 亚洲婷婷在线| 色综合五月天| 国产精品xxx在线观看| 日韩区欧美区| 视频一区中文字幕| 亚洲午夜视频| 日韩一区二区三区精品 | 国产字幕视频一区二区| 成年男女免费视频网站不卡| 国产精品一区亚洲| 亚洲精品成a人ⅴ香蕉片| 日韩不卡免费高清视频| 高清一区二区| 久久不卡国产精品一区二区| 综合激情网站| 狠狠躁少妇一区二区三区| 久久精品国产精品亚洲毛片| 国产欧美日韩精品一区二区三区 | 色综合五月天| 鲁大师精品99久久久| 欧美伊人久久| 日本不卡视频在线观看| 亚洲精品影院在线观看| 视频精品一区二区| 亚洲精品一区二区妖精| 美女少妇全过程你懂的久久| 99热国内精品| 成人av动漫在线观看| 91精品福利| 99视频一区| 好看的av在线不卡观看| 在线成人直播| 精品一区在线| 电影天堂国产精品| 福利一区二区| 日韩免费视频| 国产伦久视频在线观看| 都市激情国产精品| 9999国产精品| 樱桃视频成人在线观看| 日本午夜大片a在线观看| 日韩电影二区| 97精品国产| 成午夜精品一区二区三区软件| 国产aⅴ精品一区二区四区| av资源新版天堂在线| 国产亚洲一区二区手机在线观看| 色婷婷亚洲mv天堂mv在影片| 国产精品久久久久久久久久10秀| 日韩免费福利视频| 国产麻豆久久| 99国产精品久久久久久久| 1000部精品久久久久久久久| 久久福利精品| 综合一区av| 欧美亚洲色图校园春色| 精品资源在线| 亚洲天堂一区二区| 99久久亚洲精品蜜臀| 91精品蜜臀一区二区三区在线 | 91久久中文| 蜜臀精品一区二区三区在线观看 | 欧美国产日韩电影| 日韩免费视频| 中文久久精品| 欧美日韩夜夜| 国产精品久久久久久久久妇女| 日韩成人综合| 亚洲综合电影一区二区三区| 男女性色大片免费观看一区二区 | 蜜臀精品一区二区三区在线观看| 日本亚洲视频|