欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 基于Python實現的購物商城管理系統

基于Python實現的購物商城管理系統

熱門標簽:荊州云電銷機器人供應商 外呼不封號系統 電信營業廳400電話申請 溫州旅游地圖標注 幫人做地圖標注收費算詐騙嗎 悟空智電銷機器人6 遼寧400電話辦理多少錢 蘇州電銷機器人十大排行榜 江蘇房產電銷機器人廠家

完整項目地址:

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

簡介

本項目使用Python語言編寫,實現了顧客端和商家端。

功能

  • 店主功能:注冊、登錄、修改店鋪信息、添加商品、刪除商品、修改商品、查找商品、查看交易記錄。
  • 顧客功能:注冊、登錄、修改收貨信息、查找商品、購買商品、查看交易記錄、取消訂單。

商家端

  • shopMain.py:編寫界面上組件的功能,并通過調用send_data.py向服務器發送相應的請求。
  • shop :存放商家端的界面代碼。
  • ui1 :存放商家端的ui文件,使用qtdesigner設計。
  • send_data.py 將數據封裝成json之后發給服務器。

顧客端

  • customerMain.py:編寫界面上組件的功能,并通過調用send_data.py向服務器發送相應的請求。
  • customer :存放顧客端的界面代碼。
  • ui1 :存放顧客端的ui文件,使用qtdesigner設計。
  • send_data.py 將數據封裝成json之后發給服務器。

服務器端

  • server.py:主要用來處理商家和顧客發來的請求,并調用mysql_op對數據庫進行操作。
  • mysql_op.py:處理商家和顧客對數據庫的操作。

主要代碼

shopMain.py

import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import shop.register_window
from 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, "注冊", "店鋪信息不能為空", QMessageBox.Yes)
            return
        if pass1 != pass2:
            QMessageBox.information(self, "注冊", "兩次密碼不同", QMessageBox.Yes)
            return
        data = {'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, "注冊", "注冊成功", QMessageBox.Yes)
        else:
            QMessageBox.information(self, "注冊", "注冊失敗", 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 user
        username = self.username.text()
        password = self.password.text()
        if username == '' or password == '':
            QMessageBox.information(self, "登錄", "用戶名和密碼不能為空", QMessageBox.Yes)
            return
        data = {'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(['名稱', '類型', '價格', '庫存', '已售'])
        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(['名稱', '類型', '價格', '庫存', '已售'])
        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 == '':
            return
        data = {'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_name
        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', '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_name
        data = {'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(
            ['商品名稱', '商品類型', '交易數量', '交易金額', '交易時間', '顧客', '聯系方式', '收貨地址'])
        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(
            ['商品名稱', '商品類型', '交易數量', '交易金額', '交易時間', '顧客', '聯系方式', '收貨地址'])
        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)

代碼較多不便全部放出,請自行下載或克隆倉庫。

以上就是基于Python實現的購物商城管理系統的詳細內容,更多關于python 購物商城管理系統的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Python函數實現學員管理系統
  • python面向對象版學生信息管理系統
  • Python實現學生管理系統(面向對象版)
  • python學生信息管理系統實現代碼
  • 教你用Python實現簡易版學生信息管理系統(含源碼)
  • 教你用python實現一個無界面的小型圖書管理系統
  • 一篇文章教你用Python實現一個學生管理系統

標簽:宿遷 臺灣 欽州 喀什 三沙 景德鎮 濟南 黃山

巨人網絡通訊聲明:本文標題《基于Python實現的購物商城管理系統》,本文關鍵詞  基于,Python,實現,的,購物商城,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于Python實現的購物商城管理系統》相關的同類信息!
  • 本頁收集關于基于Python實現的購物商城管理系統的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    丁香婷婷综合激情五月色| 亚洲精品乱码久久久久久9色| 亚洲色偷偷色噜噜狠狠99网| 色成人在线视频| 国产精品欧美精品| 国产精品亚洲午夜一区二区三区| 国产高潮呻吟久久| 日韩免费看网站| 日本欧美韩国一区三区| 日本黄色录像片| 欧美一区二视频| 日日摸夜夜添夜夜添国产精品| 欧美性生交xxxxx| 欧美伦理视频网站| 亚州成人在线电影| 91黄色免费视频| 日韩欧美成人激情| 老司机精品视频在线| av电影网站在线观看| 精品国产第一区二区三区观看体验| 奇米在线7777在线精品| 色一情一交一乱一区二区三区| 欧美mv日韩mv亚洲| 久久99精品久久久| 天堂а√在线中文在线鲁大师| 欧美激情一区二区| 成人网在线播放| 日本韩国一区二区三区视频| 一区二区视频在线| 一边摸一边做爽的视频17国产| 91精品在线一区二区| 免费视频一区二区| 久久久久久成人网| 成人欧美一区二区三区| 亚洲欧美激情一区二区三区| 6080yy午夜一二三区久久| 喷水一区二区三区| 色婷婷国产精品免| 日韩毛片精品高清免费| ass极品水嫩小美女ass| 91精品国产91久久久久久一区二区 | 国产精品久久99| 97精品电影院| 欧美影视一区二区三区| 亚洲欧美日韩精品久久久久| 肉丝美足丝袜一区二区三区四| 91国偷自产一区二区三区成为亚洲经典| 亚洲综合丁香婷婷六月香| 添女人荫蒂视频| 欧美国产日韩在线观看| 九色91porny| 91精品国产综合久久久蜜臀图片| 国产精品电影一区二区三区| 国产精品一区二区三区网站| 欧美在线|欧美| 美洲天堂一区二卡三卡四卡视频| 免费黄色激情视频| 亚洲图片欧美一区| 欧美狂猛xxxxx乱大交3| 国产精品欧美精品| 亚洲AV无码久久精品国产一区| 欧美不卡一区二区三区| 成人深夜在线观看| 欧美精品色综合| 国产风韵犹存在线视精品| 欧美午夜免费电影| 激情图片小说一区| 日本韩国欧美国产| 久久99国产精品免费网站| 色综合色综合色综合色综合色综合 | 中文字幕人妻一区二区| 中文字幕制服丝袜成人av | 精品无码人妻一区二区免费蜜桃| 国产精品免费久久久久| 色婷婷免费视频| 亚洲色图制服诱惑 | 亚洲第一电影网| 波兰性xxxxx极品hd| 日韩制服丝袜先锋影音| 在线观看成人毛片| 久久er精品视频| 欧美视频一区二区三区四区 | 日韩午夜在线观看视频| 成人av免费在线观看| 欧美大片国产精品| 国产老头和老头xxxx×| 国产肉丝袜一区二区| 黄色免费视频网站| **性色生活片久久毛片| 亚洲电影第三页| 成人在线观看高清| 美国十次综合导航| 欧美精品久久一区| 99re成人在线| 中文字幕国产一区| 亚洲AV无码国产成人久久| 亚洲国产精品一区二区www | 国产精品综合激情| 日韩av不卡在线观看| 欧美日韩一区三区| 99精品一区二区| 中日韩av电影| 日本免费www| 日本不卡视频在线| 欧美高清你懂得| 少妇高潮一69aⅹ| **欧美大码日韩| 熟女少妇a性色生活片毛片| 精品在线一区二区三区| 91精品在线麻豆| 亚洲av永久无码精品| 夜夜操天天操亚洲| 欧美专区日韩专区| 99久久综合色| 亚洲视频在线一区观看| 麻豆视频在线免费看| 国产成人高清视频| 国产午夜精品一区二区| 免费网站在线高清观看| 另类综合日韩欧美亚洲| 日韩精品一区二区三区三区免费| 亚洲天堂美女视频| 天堂资源在线中文精品| 欧美男生操女生| 国产精品19p| 亚洲成人在线网站| 欧美精品日韩综合在线| 看全色黄大色黄女片18| 天堂在线一区二区| 日韩欧美一区二区不卡| 精品无码人妻一区| 久久精品国产99国产精品| 亚洲精品一区二区精华| www..com.cn蕾丝视频在线观看免费版| 老司机精品视频在线| 久久综合九色欧美综合狠狠| 四虎成人免费影院| 国产乱妇无码大片在线观看| 国产日韩欧美激情| 欧美日韩午夜视频| av不卡免费电影| 亚洲最新视频在线观看| 欧美丰满少妇xxxbbb| 一起草在线视频| 麻豆极品一区二区三区| 国产亚洲精品资源在线26u| 国产成人免费在线观看视频| 成人激情图片网| 一区二区三区精品视频在线| 欧美日韩精品免费| 久久国产精品无码一级毛片| 精品亚洲欧美一区| 中文av一区二区| 欧美性色综合网| 中国极品少妇videossexhd| 久久精品国产99国产| 国产精品乱码一区二三区小蝌蚪| 色综合天天综合在线视频| 亚洲成a人无码| 久久精品国产999大香线蕉| 欧美国产1区2区| 欧美探花视频资源| 少妇大叫太粗太大爽一区二区| 国产一区二区在线影院| 亚洲欧美日韩中文播放 | 亚洲h精品动漫在线观看| 日韩精品一区二区三区高清免费| 国产精品久久久精品四季影院| 国产河南妇女毛片精品久久久 | 加勒比综合在线| 国产成人午夜99999| 一区二区三区不卡在线观看| 日韩欧美国产一区二区三区| 免费成人美女女在线观看| 91蜜桃婷婷狠狠久久综合9色| 亚洲444eee在线观看| 久久青草欧美一区二区三区| 日本高清不卡在线观看| 亚洲第九十七页| 东方aⅴ免费观看久久av| 亚洲一区在线视频| 欧美精品一区男女天堂| 一本色道**综合亚洲精品蜜桃冫| 成人性生活免费看| 风间由美一区二区三区在线观看| 亚洲成人在线网站| 国产精品色在线| 91精品国产一区二区三区| 国产乱子轮xxx农村| 亚洲欧美日韩色| 国产成人8x视频一区二区| 无码av中文一区二区三区桃花岛| 日本一区二区三区国色天香 | 深田咏美中文字幕| 国产精品亚洲成人| 丝袜美腿亚洲综合| 国产精品理论片在线观看| 日韩一区二区麻豆国产| 色综合久久精品| 免费福利视频网站|