最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年04月26日 14:38:41   作者:kongxiangchx  
這篇文章主要介紹了基于Python實現(xiàn)的購物商城管理系統(tǒng),幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下

完整項目地址:

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

簡介

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

功能

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

商家端

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

顧客端

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

服務器端

  • server.py:主要用來處理商家和顧客發(fā)來的請求,并調(diào)用mysql_op對數(shù)據(jù)庫進行操作。
  • mysql_op.py:處理商家和顧客對數(shù)據(jù)庫的操作。

主要代碼

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(
            ['商品名稱', '商品類型', '交易數(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ù)量', '交易金額', '交易時間', '顧客', '聯(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)

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

以上就是基于Python實現(xiàn)的購物商城管理系統(tǒng)的詳細內(nèi)容,更多關(guān)于python 購物商城管理系統(tǒng)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 從CentOS安裝完成到生成詞云python的實例

    從CentOS安裝完成到生成詞云python的實例

    下面小編就為大家分享一篇從CentOS安裝完成到生成詞云python的實例,具有很好的參考價值,希望對大家有所幫助
    2017-12-12
  • 實現(xiàn)用python算法計算圓周率的小訣竅

    實現(xiàn)用python算法計算圓周率的小訣竅

    什么!你不會背圓周率(鄙夷的眼神) 3.1415926535 8979323846 26433... 但是,我會算啊,本文用一個簡單的python代碼,教你計算圓周率
    2021-08-08
  • 科學計算與數(shù)據(jù)分析利器Python數(shù)據(jù)分析庫Scipy使用詳解

    科學計算與數(shù)據(jù)分析利器Python數(shù)據(jù)分析庫Scipy使用詳解

    Scipy在現(xiàn)代科學研究和數(shù)據(jù)分析中是一個不可或缺的庫,它建立在NumPy的基礎(chǔ)上,提供了更多的高級科學計算功能,包括優(yōu)化、信號處理、統(tǒng)計分析、插值、線性代數(shù)等,本文將會學習Scipy庫的各種功能和用法,包括數(shù)學優(yōu)化、統(tǒng)計分析、信號處理和插值等方面
    2023-11-11
  • Python將博客內(nèi)容html導出為Markdown格式

    Python將博客內(nèi)容html導出為Markdown格式

    Python將博客內(nèi)容html導出為Markdown格式,通過博客url地址抓取文章,分析并提取出文章標題和內(nèi)容,將內(nèi)容構(gòu)建成html,再轉(zhuǎn)換為Markdown文件
    2025-04-04
  • Python?提速器numba

    Python?提速器numba

    這篇文章主要介紹了Python?提速器numba,相信大部分人都感嘆過python 真的太好用了,但是它真的好慢啊,然而今天我們就來用numba解決Python?慢的這個問題,需要的朋友可以參考一下
    2022-01-01
  • Win10安裝dlib GPU過程詳解

    Win10安裝dlib GPU過程詳解

    這篇文章主要介紹了如何在Win10中安裝dlib GPU,文中有非常詳細的圖文示例,對想要安裝dlib的小伙伴們很有幫助,需要的朋友可以參考下
    2021-12-12
  • Python中python-nmap模塊的使用介紹

    Python中python-nmap模塊的使用介紹

    這篇文章主要介紹了Python中python-nmap模塊的使用,主要是portScanner()類方法展開全文,portScanner()類用于實現(xiàn)對指定主機進行端口掃描,更多介紹內(nèi)容,需要的朋友可以參考一下
    2022-02-02
  • python實例方法的使用注意及代碼實例

    python實例方法的使用注意及代碼實例

    在本篇文章里小編給大家總結(jié)的是關(guān)于python實例方法的使用注意及代碼實例內(nèi)容,對此有興趣的朋友們可以參考下。
    2022-11-11
  • Python Tornado之跨域請求與Options請求方式

    Python Tornado之跨域請求與Options請求方式

    這篇文章主要介紹了Python Tornado之跨域請求與Options請求方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python中的Pillow常用功能詳解

    python中的Pillow常用功能詳解

    Pillow是一個強大的圖像處理庫,支持多種圖像操作,如打開、保存、裁剪、調(diào)整大小、旋轉(zhuǎn)、翻轉(zhuǎn)、過濾、合成、添加文字、調(diào)整模式和創(chuàng)建縮略圖,本文介紹python中的Pillow常用功能,感興趣的朋友一起看看
    2025-02-02

最新評論

麟游县| 明水县| 三门峡市| 方城县| 容城县| 高尔夫| 保靖县| 云梦县| 鲁甸县| 桂阳县| 阳谷县| 确山县| 资溪县| 札达县| 玛沁县| 开封县| 烟台市| 吴江市| 梧州市| 年辖:市辖区| 宿州市| 丹棱县| 镇坪县| 玉溪市| 崇礼县| 昆山市| 朝阳区| 太湖县| 十堰市| 洪江市| 孝感市| 涿州市| 尖扎县| 台北市| 麻江县| 娱乐| 延津县| 滕州市| 化州市| 沐川县| 天长市|