基于Python+MySQL的书店销售管理管理子系统设计

全套资源下载地址:https://download.csdn.net/download/sheziqiong/86770255
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86770255
目 录
设 计 总 说 明 I
目 录 i
第1章 绪论 1
1.1 开发背景及目的意义 1
1.2 国内外现状 1
1.2.1 国内现状 1
1.2.2 国外现状 1
1.3 开发工具、语言及环境 1
1.3.1 pyCharm 简介 1
1.3.2 msSQL简介 1
1.3.3 开发语言python 1
第2章 系统分析 3
2.1 系统需求分析 3
2.2 系统目标 3
2.3 系统功能 3
2.3.1 前台应用程序 3
2.3.2 后台数据库 3
2.4 可行性分析 3
2.4.1 经济可行性分析 3
2.4.2 技术可行性分析 3
2.4.3 操作可行性分析 4
2.5 数据流图 4
2.6数据字典 4
2.6.1 数据元素 4
2.6.2数据存储 5
2.6.3 数据流 6
2.6.4 数据处理 6
第3章开发技术介绍 8
3.1 pymssql介绍 8
3.1.1 配置环境 8
3.1.2 连接MSSQL 8
3.2 PyQt5介绍 8
3.2.1 配置环境 8
第4章 系统设计 9
4.1 系统目标 9
4.2 系统功能划分 9
4.2 模块简介及功能 9
4.2.1 图书管理模块 9
4.2.2 顾客管理模块 10
4.2.3 销售模块 10
4.3.4 图书查询模块 10
4.3.5 人员信息管理 10
4.3.6 销售统计模块 10
4.3 业务流程图 11
第5章 数据库设计 13
5.1 数据库概要设计 13
5.1.1系统E-R图 13
5.2数据库逻辑设计 13
5.3 数据库物理设计 13
第6章 数据库实施 17
6.1 数据库构建 17
6.1.1 数据说明表 17
6.1.2 数据库创建(使用SQL语句的数据库模型) 17
6.2 数据库迁移和导入方案 20
6.2.1数据库迁移 20
6.2.2数据库导入 20
第7章 系统界面设计和后台代码 21
7.1 系统界面设计 21
7.1.1 登录模块界面 21
7.1.2 管理员界面 21
7.1.3售货员界面 22
7.1.4图书查找界面 23
7.1.5 图书管理模块界面 24
7.1.6 销售人员管理模块 25
7.1.7 信息查看模块 25
7.1.8 购买模块 25
7.1.9 退货模块 26
7.2 主要模块代码 27
7.2.1 数据处理 27
7.2.2 登录模块 29
7.2.3 图书管理模块 30
7.2.4 图书购买模块 31
7.2.5 密码修改模块 33
第8章 安装使用和说明 34
8.1安装说明 34
8.1.1安装python 34
8.1.2安装插件 34
8.1.3附加数据库 34
8.1.4运行 34
第9章 结论与展望 35
9.1 结论 35
9.2 不足之处及未来展望 35
参考文献 36
第2章 系统分析
2.1 系统需求分析
本次课程设计的题目是:书店销售管理子系统,其具体内容如下:
书店希望借助一个销售管理子系统实现对现有业务的管理。该书店目前采用会员制,顾客购买书籍累积达到一定金额后,凭购书发票可填表申请成为正式会员,会员在购书时享有一定折扣,折扣额度可变化。该书店不定期地会推出促销活动,要求图书的价格是可变更的。系统主要功能如下:
★ 图书入库管理:维护入库图书信息(如图书编号、书名、作者、价格、图书分类、出版社等),自动计算库存。
★ 图书查询统计:按图书分类,出版社、书名、作者等条件查询图书的详细信息。
★ 销售管理:销售过的图书都记录在销售列表中,方便统计收入。图书销售后,实时记录图书库存,按每天统计销售额、按每个月或季度统计销售额并生成报表,并能根据销售数量统计生成畅销书名单。
★ 书店会员管理:提供会员信息的维护功能,可设置会员等级,不同级别的会员享受不同的折扣,可以变更折扣额度。
★ 系统管理:包括参数设置、权限设置、更改密码等。用户包括系统管理员和销售人员。系统管理员维护整个系统的数据
2.2 系统目标
本系统要实现书店销售管理,实现书店销售的系统化,自动化和高效率。能够实现,图书管理,图书销售,销售统计,管理员对销售人员的管理,等功能,以及各角色的交互等。
2.3 系统功能
书店销售管理子系统的开发主要包括应用程序系统和后台数据库,应用程序系统要求界面友好,功能完备,易使用等特点.而后台数据库的数据要具有一致性、完整性、安全性.
2.3.1 前台应用程序
前台应用程序重在实现用户和系统的交互,在功能强大的同时,也要简洁和操作方便。目的是让调度环节更高效,在保证操作正确性的情况下,免去不必要的操作。
2.3.2 后台数据库
后台数据库在考虑前台访问操作简便的同时,提供强大的管理模式。数据库结构合理,完整,权限设计符合实际,安全性良好。
2.4 可行性分析
2.4.1 经济可行性分析
系统的经济可行性分析是指对组织的经济状况和投资能力进行分析,对系统的建设运营和维护费用进行估算,对系统建成后可能取得的社会及经济效益进行估计.
由于本系统作为平时的课程设计,所以在资金上几乎没有任何需求。
所以说在经济方面本系统的开发是完全可行的.
2.4.2 技术可行性分析
随着互联网和信息技术的发展,信息技术从根本上改变了人类社会的生产方式和生活方式,计算机的应用随处可见.书店销售管理子系统主要是对书店信息进行管理,实现增、删、改、查等功能。既然利用计算机管理是大势所趋,而开发一个书店销售管理又能够获得事半功倍的效果.并且,随着数据库管理系统的广泛应用以及可视化编程工具的出现,本系统便使用了pyCharm集成开发环境以及PyQt5, QT进行前台的开发,由于可视化模块比较强大,所以在系统的设计过程中不会有太大问题,本文转载自http://www.biyezuopin.vip/onews.asp?id=15236同时本系统使用ms SQL对后台的数据进行操作,使得数据完整性得以保证,同时数据操作简单化.
以上这些都为开发一个餐饮管理系统提供了技术上的支持,所以说开发一个书店销售管理子系统在技术方面来讲是完全可行的.
2.4.3 操作可行性分析
本系统直观易懂,本身不是很复杂,使用非常方便,测试完毕后即可用于实际的管理.管理员经过简单的培训就可以熟练的使用,当进行数据修改时都有适当的提示,和消息确认,增加了人工错误的容错性。
综上所述,开发一个书店销售管理系统,在一定程度优化了书店的销售管理,因此开发这个书店销售管理系统是完全可行的.

import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QFrame, QDialog
from UIMyBase import UIMy_base

from UIBookManage_frame import Ui_Frame_BookManage
from DbMyClass import *
class  UIBookManage(QFrame, Ui_Frame_BookManage , UIMy_base):
    def __init__(self, parent=None, x = 0, y = 0, xx = 1, yy = 1, mode = None, pushButton = None):
        """

        :param parent: 父窗口
        :param x: X位置
        :param y: Y位置
        :param xx: 占高度
        :param yy: 占宽度
                布局管理, 咱也不太明白怎么回事
        :param mode:模式  MODE_ADD MODE_DEL MODE_CHANGE 三种
        :param pushButton: 按本返回键后要显示的内容,不一定要是pushButtonButton
        """
        super(UIBookManage, self).__init__()
        self.setupUi(self)
        self.time = 0
        self.connect_to_db()
        self.my_layout(parent, x, y, xx, yy)
        self.extern_button = pushButton
        self.mode = mode
        self.pushButton_pre_view_cancel.hide()

        if mode == self.MODE_ADD:
            self.label_bno.hide()
            self.pushButton_choose.hide()
            self.pushButton_del.hide()
            self.pushButton_change.hide()
            self.widget_3.hide()
            self.widget_2.hide()
            self.lineEdit_bno_choose.hide()
            self.pushButton_add.setEnabled(False)
            self.pushButton_add.setEnabled(False)

        elif mode == self.MODE_DEL:
            self.pushButton_change.hide()
            self.pushButton_add.hide()
            self.pushButton_del.setEnabled(False)
            self.widget.hide()
            self.widget_4.hide()

        elif mode == self.MODE_CHANGE:
            self.pushButton_del.hide()
            self.pushButton_add.hide()
            self.pushButton_change.setEnabled(False)
            self.label_table_name.setText('修改后的书籍信息')

    def on_pushButton_back_released(self):
        print("返回")
        self.close()
        try:
            self.extern_button.show()
            del(self)
        except AttributeError:
            print("no EXtern show")

    def on_pushButton_choose_released(self):
        print("book chose pushButton is prsed")
        bno = self.lineEdit_bno_choose.text()
        exec = self.dbcur.select_parmeter_deal("Book", Bno = DbSelect.str_add_quotation(bno))
        self.dbcur.run_exec(exec)
        list = self.dbcur.cursor_data_to_list()
        if len(list) == 0:
            self.pushButton_choose.setEnabled(False)
            self.dialog_text("该书号不存在", "提示")
            self.pushButton_choose.setEnabled(True)
            return
        else:
            self.lineEdit_bno_3.setText(str(bno))
            self.lineEdit_bname_3.setText(str(list[0][1]))
            self.lineEdit_bauthor_3.setText(str(list[0][2]))
            self.lineEdit_bprice_3.setText(str(list[0][3]))
            self.comboBox_btype_3.setCurrentText(str(list[0][4]))
            self.lineEdit_bpublish_3.setText(str(list[0][5]))
            self.lineEdit_bnum_3.setText(str(list[0][6]))
            self.pushButton_del.setEnabled(True)
            self.data_copy_widget1_to_widget3()

    def data_copy_widget1_to_widget3(self):
        self.lineEdit_bno.setText(str(self.lineEdit_bno_3.text().strip()))
        self.lineEdit_bname.setText(str(self.lineEdit_bname_3.text().strip()))
        self.lineEdit_bauthor.setText(str(self.lineEdit_bauthor_3.text().strip()))
        self.lineEdit_bprice.setText(str(self.lineEdit_bprice_3.text().strip()))
        self.comboBox_btype.setCurrentText(str(self.comboBox_btype_3.currentText().strip()))
        self.lineEdit_bpublish.setText(str(self.lineEdit_bpublish_3.text().strip()))
        self.lineEdit_bnum.setText(str(self.lineEdit_bnum_3.text().strip()))

    def data_clear_widget(self):
        self.lineEdit_bno.clear()
        self.lineEdit_bname.clear()
        self.lineEdit_bauthor.clear()
        self.lineEdit_bprice.clear()
        self.lineEdit_bpublish.clear()
        self.lineEdit_bnum.clear()
        self.comboBox_btype.setCurrentText("无")
    def data_clear_widget_3(self):
        self.lineEdit_bno_3.clear()
        self.lineEdit_bname_3.clear()
        self.lineEdit_bauthor_3.clear()
        self.lineEdit_bprice_3.clear()
        self.comboBox_btype_3.setCurrentText("无")
        self.lineEdit_bpublish_3.clear()
        self.lineEdit_bnum_3.clear()

    def on_pushButton_del_released(self):
        print('on_pushButton_del_released')
        bno = self.lineEdit_bno_3.text()
        if bno == '':
            return
        self.pushButton_del.setEnabled(False)
        flag = self.dialog_yes_no("是否删除?", "确认")
        if flag is True:
            if self.dbcur.delete_book(bno):
                self.dialog_text("删除成功","提示窗")
                self.data_clear_widget_3()
                self.pushButton_del.setEnabled(False)
            else:
                self.dialog_text("删除失败 可能存在外键限制","提示窗")

    def on_pushButton_add_released(self):
        print("on_pushButton_add_released")
        self.pushButton_add.setEnabled(False)
        flag = self.dialog_yes_no("是否添加","提示")
        if flag is True:
            flag = self.dbcur.book_insert(
                self.lineEdit_bno.text().strip(),
                self.lineEdit_bname.text().strip(),
                self.lineEdit_bauthor.text().strip(),
                self.lineEdit_bprice.text().strip(),
                self.comboBox_btype.currentText().strip(),
                self.lineEdit_bpublish.text().strip(),
                self.lineEdit_bnum.text().strip(),
            )
            if flag is True:
                self.dialog_text("添加成功", "提示")
                self.widget_3.setEnabled(True)
            else:
                self.dialog_text("添回失败 可能主键冲突", "提示")
        else:
            self.pushButton_add.setEnabled(True)

    def on_pushButton_pre_view_released(self):

        print("on_pushButton_pre_view_released")
        if self.check_add_book() is True:
            self.widget.setEnabled(False)
            self.pushButton_pre_view_cancel.show()
            self.pushButton_pre_view.hide()
            self.pushButton_add.setEnabled(True)
            self.pushButton_change.setEnabled(True)
        else:
            self.pushButton_pre_view.setEnabled(False)
            self.dialog_text("输入模式有误 请检查看重新输入", "提示")
            self.pushButton_pre_view.setEnabled(True)

    def on_pushButton_pre_view_cancel_released(self):
        self.widget.setEnabled(True)
        self.pushButton_pre_view_cancel.hide()
        self.pushButton_pre_view.show()
        self.pushButton_add.setEnabled(False)
        self.pushButton_change.setEnabled(False)

    def on_pushButton_cancel_released(self):
        print('on_pushButton_cancel_released')
        self.data_clear_widget_3()
        self.data_clear_widget()
        self.pushButton_del.setEnabled(False)
        self.pushButton_change.setEnabled(False)

    def on_pushButton_change_released(self):
        print('on_puchButton_change_released')
        self.pushButton_change.setEnabled(False)
        set = self.get_set_parmeter()
        print(set)
        if len(set) == 0:
            self.dialog_text("内容未做变更", '提示')
        else:
            if self.dialog_yes_no("确认修改", "确认") is True:
                updata = self.dbcur.updata_parmeter_deal('Book', set, {'Bno':self.lineEdit_bno.text().strip()})
                # print(updata)
                if self.dbcur.update_run_exec(updata):
                    self.dialog_text("修改成功", '提示')
                else:
                    self.dialog_text("修改失败", '提示')
            else:
                self.widget.setEnabled(True)
                self.pushButton_pre_view.show()
                self.pushButton_pre_view_cancel.hide()
    def get_set_parmeter(self):
        set = {}
        if self.lineEdit_bno_3.text().strip() == self.lineEdit_bno.text().strip():
            pass
        else:
            set['Bno'] = self.lineEdit_bno.text().strip()
        if self.lineEdit_bname_3.text().strip() == self.lineEdit_bname.text().strip():
            pass
        else:
            set['Bname'] = self.lineEdit_bname.text().strip()
        if self.lineEdit_bauthor_3.text().strip() == self.lineEdit_bauthor.text().strip():
            pass
        else:
            set['Bauthor'] = self.lineEdit_bauthor.text().strip()
        if self.lineEdit_bprice_3.text().strip() == self.lineEdit_bprice.text().strip():
            pass
        else:
            set['Bprice'] = self.lineEdit_bprice.text().strip()
        if self.comboBox_btype.currentText().strip() == self.comboBox_btype.currentText().strip():
            pass
        else:
            set['Btype'] = self.comboBox_btype.currentText().strip()
        if self.lineEdit_bpublish_3.text().strip() == self.lineEdit_bpublish.text().strip():
            pass
        else:
            set['Bpublish'] = self.lineEdit_bpublish.text().strip()
        if self.lineEdit_bnum_3.text().strip() == self.lineEdit_bnum.text().strip():
            pass
        else:
            set['Bnum'] = self.lineEdit_bnum.text().strip()
        return set

    def check_add_book(self):
        flag =  DbInsert.insert_data_check_book(
            self.lineEdit_bno.text().strip(),
            self.lineEdit_bname.text().strip(),
            self.lineEdit_bauthor.text().strip(),
            self.lineEdit_bprice.text().strip(),
            self.comboBox_btype.currentText().strip(),
            self.lineEdit_bpublish.text().strip(),
            self.lineEdit_bnum.text().strip(),
            )
        if flag == DbInsert.BOOK_INSERT_OK:
            return True
        else:
            return False


    MODE_ADD = 1
    MODE_DEL = 2
    MODE_CHANGE = 3

if __name__ == '__main__':
    app = QApplication(sys.argv)
    book_choose = UIBookManage()
    book_choose.show()
    sys.exit(app.exec_())

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86770255
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86770255

图书销售管理系统数据库设计 数据库系统概论课程设计报告 2011年 05月 28 日 图书销售管理系统数据库设计全文共23页,当前为第1页。 目 录 图书销售管理系统数据库设计全文共23页,当前为第1页。 引 言 1 第一章 系统分析 1 功能需求 2 待开发系统功能 2 第二章 系统功能概要设计 2 系统主要功能模块设计 2 系统处理流程分析 3 系统接口设计 4 外部接口 4 内部接口 5 第三章 系统数据库设计 5 系统数据库分析 5 系统关系表 6 数据字典 6 数据项 6 数据结构 7 数据流表 8 数据存储 8 处理过程 9 第四章 概念结构设计 9 图书销售管理系统数据库设计全文共23页,当前为第2页。 用户管理模块 9 图书销售管理系统数据库设计全文共23页,当前为第2页。 图书管理模块 10 图书销售管理模块 11 查询管理模块 12 报表查询管理模块 13 数据管理模块 14 图书销售管理系统E-R图 15 第五章 逻辑结构设计 16 与系统E-R图对应的关系模式 16 试题所对应的关系模式 16 联系所对应的关系模式 16 关系模式优化处理 17 第六章 物理结构设计 18 系统数据处理特点 18 系统数据存储选择 18 第七章 数据库的实施和维护 18 数据库的实施 19 致 谢 20 图书销售管理系统数据库设计全文共23页,当前为第3页。 引 言 图书销售管理系统数据库设计全文共23页,当前为第3页。 随着计算机的普及书店规模的不断扩大,传统的图书销售管理方法,都是通过人工统计和计算的管理方式进行的。这样的管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普及,打破了书店管理的传统管理方法,提高了管理效率的同时,克服了传统管理方法中易产生的问题,使管理员能够有序的、全面的对图书销售和库存进行管理。 通过图书销售管理系统可以解决书店管理中遇到的各种问题,该图书销售管理系统分析了市场需求和实际需要,利用Microsoft Visual Studio 2008连接SQL数据库的方式,实现了书店的图书销售等一系列管理,该系统具有处理图书录入、图书销售管理、图书查询、报表查询等功能。 第一章 系统分析 功能需求: 本系统是根据书店的实际需求而开发的,要求稳定、可靠的实现图书销售的自动化管理,通过本系统可以达到以下目标: 用户管理:对系统所有用户的相关信息进行管理。 图书管理:对图书信息进行添加以及编辑,对图书基本信息的录入及编辑包括图书类别、图书进价、图书售价、图书出版社、图书折扣、图书作者等。 图书销售管理:对图书的销售信息进行动态添加并实现对图书库存量的动态修改等,所添加的图书销售信息包括图书的售价、折扣、销售日期。 查询管理:用户根据实际需要对图书、图书销售、图书库存等信息分类查询。 报表查询:系统用户可以通过对时间段的选择来查看该段时间内图书的销售情况,以便于做出更为合理的销售计划、提高效益。 图书销售管理系统数据库设计全文共23页,当前为第4页。数据管理:为了防止系统用户的误操作,用户可以根据自己的需要对图书信息、销售数据等进行备份等操作。 图书销售管理系统数据库设计全文共23页,当前为第4页。 待开发软件功能: 通过以上的系统目标分析,根据以上系统所要满足的功能,设计出了图书销售管理系统的主要功能模块图,如图所示。 图书销售管理系统图书管理模块(M2)报表查询管理模块(M5)图书销售管理模块(M3)查询管理模块(M4)数据管理模块(M6)用户管理模块(M1) 图书销售管理系统 图书管理模块(M2) 报表查询管理模块(M5) 图书销售管理模块(M3) 查询管理模块(M4) 数据管理模块(M6) 用户管理模块(M1) 图 图书销售管理系统的系统功能图 第二章 系统功能概要设计图书销售管理系统是根据书店的情况结合实际需求而开发的,完全能够帮助书店实现高效、准确的图书销售自动化管理。 系统主要功能模块设计图书销售管理系统数据库设计全文共23页,当前为第5页。结合前面对系统功能的分析,以及Microsoft Visual Studio 2008开发环境的特点,得到如下图所示的系统功能模块图: 图书销售管理系统数据库设计全文共23页,当前为第5页。 图书销售管理系统图书管理模块(M2)报表查询管理模块(M5)图书销售管理模块(M3)查询管理模块(M4)数 管理模块(M6)用户管理模块(M1) 图书销售管理系统 图书管理模块(M2) 报表查询管理模块(M5) 图书销售管理模块(M3) 查询管理模块(M4) 数 管理模块(M6) 用户管理模块(M1) 图图书销售管理系统主要功能模块图 系统各个模块功能分配如下: (1)用户管理模块:系统用户根据权限进行系统登录并对相关用户信息进行管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shejizuopin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值