商城管理系统服务器,基于Python实现的购物商城管理系统

本文详细介绍了使用Python编写的购物商城管理系统,包括店主和顾客端功能,如注册、登录、商品管理及交易记录查看。核心功能如商品添加、删除和修改,以及UI设计与数据交互的send_data模块

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

完整项目地址:

简介

本项目使用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 购物商城管理系统的资料请关注脚本之家其它相关文章!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值