基于Python实现的购物商城管理系统

作者:kongxiangchx 时间:2021-08-27 15:06:43 

目录
  • 完整项目地址:

  • 简介

  • 功能

  • 商家端

  • 顾客端

  • 服务器端

  • 主要代码

完整项目地址:

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)

代码较多不便全部放出,请自行下载或克隆仓库。

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

标签:python,购物,商城,系统
0
投稿

猜你喜欢

  • python flask框架实现重定向功能示例

    2022-01-16 07:14:51
  • Python使用urlretrieve实现直接远程下载图片的示例代码

    2022-11-10 16:54:33
  • python 列表,数组和矩阵sum的用法及区别介绍

    2022-12-16 09:01:47
  • 在linux系统下安装python librtmp包的实现方法

    2021-05-08 21:13:50
  • python 爬虫爬取京东ps4售卖情况

    2022-05-19 01:35:28
  • python 服务器批处理得到PSSM矩阵的问题

    2021-05-19 12:21:13
  • 仿QQ和MSN消息提示的效果代码

    2010-03-16 12:17:00
  • python 将dicom图片转换成jpg图片的实例

    2023-08-24 11:12:27
  • 使用Python更换外网IP的方法

    2021-01-25 04:25:46
  • 跟老齐学Python之总结参数的传递

    2021-12-16 18:17:24
  • JavaScript文档生成工具

    2007-10-26 11:59:00
  • Anaconda+spyder+pycharm的pytorch配置详解(GPU)

    2023-07-20 01:31:20
  • 解决GOPATH在GOLAND中的坑

    2023-07-12 23:46:16
  • 详解Python如何实现发送带附件的电子邮件

    2022-03-20 13:33:46
  • python绘制横向水平柱状条形图

    2022-01-10 01:01:49
  • Python使用爬虫爬取静态网页图片的方法详解

    2021-02-18 20:07:58
  • SQL语句更改表所有者

    2010-02-04 09:12:00
  • 教你用python提取txt文件中的特定信息并写入Excel

    2021-02-11 00:41:41
  • 简单解析PHP程序的运行流程

    2023-06-22 07:35:41
  • Python数据可视化Pyecharts库实现桑葚图效果

    2022-01-05 23:39:44
  • asp之家 网络编程 m.aspxhome.com