数据库课程设计

超市零售信息管理系统(Python实现)SQLServer


文章目录

  • 数据库课程设计
  • 前言
    • (一)设计目的
    • (二)设计内容
  • 一、需求分析
    • (一)设计概念
    • (二)功能说明
      • 1. 进货管理
      • 2. 销售管理
      • 3. 库存管理
      • 4.人员管理
    • (三)功能模块图
  • 二、概念结构设计
  • 三、逻辑结构设计
  • 四、代码实现
    • (一)实现Python 连接 SQL Severe 数据库
    • (二)创建数据库表
    • (三)插入数据
    • (四)创建界面按钮,并实现数据库的“增删改查”
  • 五、总结

前言

(一)设计目的

学生根据所学的数据库系统原理与程序设计的知识,能够针对一个数据库管理信息系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库管理信息系统的目的。

(二)设计内容

题目可根据自己熟悉的事物填充和适当变更,例如:校园招聘系统、学生科技成果统计系统等,但不建议图书管理信息系统、学生信息管理系统、酒店管理系统、药品进销存系统,也可以是基于Web的网站或基于移动平台的手机APP、游戏软件等,鼓励创新!要求实现数据的录入、删除、修改、查询等基本功能,提供实体完整性、参照完整性、用户定义完整性等检查,可根据自己对不同事物主要的管理需求进行扩充,例如增加登录、报表等相应功能。

一、需求分析

(一)设计概念

该超市零售管理信息系统旨在为超市的会员管理工作提供一个比较系统的零售管理平台,它帮助超市存储及管理进货、销售、库存以及人员信息,是一套管理工具、极大提高超市管理的效率。很大程度上帮助了超市管理者对超市的掌握与管理。

(二)功能说明

1. 进货管理

根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。 按计划单有选择性地进行自动入库登记。 综合查询打印计划进货与入库记录及金额。

2. 销售管理

商品正常销售、促销与限量、限期及禁止销售控制。 综合查询各种销售明细记录、各地收银员收银记录以及交结帐情况等。 按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。

3. 库存管理

综合查询库存明细记录。 库存状态自动告警提示。如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。

4.人员管理

员工、会员、供货商、厂商等基本信息登记管理。 员工操作权限管理。 客户销售权限管理。

(三)功能模块图

二、概念结构设计

三、逻辑结构设计

1.员工(员工编号,员工姓名,员工性别,员工年龄,工龄,电话,身份证号,所属部门,工资);
2.商品(商品编号,商品名称,商品类别,商品单价,商品成本,供货商);
3.会员(会员卡卡号,会员姓名,电话,注册日期,累计金额,当前余额);
4.供货商(供货商编号,供货商名称,供货商电话,供货商地址);
5.仓库(仓库编号,仓库名称,仓库地址);
6.退货信息(交易流水号,商品编号,退货数量,退款金额,退货日期);
7.销售(员工编号,商品编号,销售日期,销售数量);
8.购买(会员卡卡号,商品编号,购买日期,购买数量);
9.供货(供货商编号,商品编号,供货日期,供货数量);
10.库存(仓库编号,商品编号,库存量);









四、代码实现

(一)实现Python 连接 SQL Severe 数据库

import pymssql  #引入pymssql模块def conn():connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")  if connect:print("连接成功!")return connectif __name__ == '__main__':conn = conn()

假如与数据库连接成功,则以上代码块运行会出现如下结果:

这里简单介绍下pymssal模块:
pymssql是python用来连接Microsoft SQL Server的一个工具库(package)。
和数据库登录一样,分为用户验证登录和windows身份认证登陆,而以上代码中,我采用的是后者,因此不需要账号密码,其核心代码为:

conn = pymssql.connect(host='host',database='db_name',user='user',password='pwd',charset='utf8')
#host为数据库的IP地址,,通过自己电脑进行查询
#database为数据库的名称
#charset表示在此程序中,字符编码采用“utf8编码”模式

(二)创建数据库表

数据库中表的创建可以直接在SQLServer中手动建表,也可以通过Python程序进行建表,其语法规则和SQL一样,代码如下:

import pymssqlconnect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")  # 建立连接
if connect:print("连接成功!")cursor = connect.cursor()   # 创建一个游标对象,python里的sql语句都要通过cursor来执行
cursor.execute("create table Staff(Snum  varchar(10) primary key,Sname varchar(20) not null,Ssex varchar(5) check(Ssex in('男','女')),Sage int not null check(Sage>=18),Sstand int not null check(Sstand>=0),Sphone varchar(20) not null,Sid varchar(25) not null,Spart varchar(10) not null,Ssalary money check(Ssalary>=0))")
cursor.execute("create table Vendor(Vnum varchar(10) primary key,Vname varchar(10) not null,Vphone varchar(20) not null,Vpalce varchar(10) not null)")
cursor.execute("create table Goods(Gnum varchar(10) primary key,Gname varchar(10) not null,Gtype varchar(10) not null,Gprice money check(Gprice>=0),Gbid money check(Gbid>=0),Gstock int check(Gstock>=0),Galarm int check(Galarm>=0), Gplan int check(Gplan>=0),Vnum varchar(10) not null,foreign key(Vnum) references Vendor(Vnum))")
cursor.execute("create table Menber(Mnum varchar(10) primary key,Mname varchar(10) not null,Mphone varchar(20) not null,Mdate datetime,Mtotal money check(Mtotal>=0),Mbalance money check(Mbalance>=0),Mcip varchar(25) not null)")
cursor.execute("create table Ware(Wnum varchar(10) primary key,Wname varchar(10) not null,Wplace varchar(10) not null)")
cursor.execute("create table Trade(Tnum varchar(10) primary key,Tdate datetime  not null,Snum varchar(10) not null,Gnum varchar(10) not null,Tamount int check(Tamount>=0),Tmoney money check(Tmoney>=0),Mnum varchar(10) not null,foreign key(Snum) references Staff(Snum),foreign key(Gnum) references Goods(Gnum),foreign key(Mnum) references Menber(Mnum))")
cursor.execute("create table Infor(Tnum varchar(10) not null,Gnum varchar(10) not null,Iamount int check(Iamount>=0),Imoney money check(Imoney>=0),Idate datetime not null,foreign key(Tnum) references Trade(Tnum),foreign key(Gnum) references Goods(Gnum))")
cursor.execute("create table Entry(Enum varchar(10) primary key,Gnum varchar(10) not null,Eamount int check(Eamount>=0),Emoney money check(Emoney>=0),Vnum varchar(10) not null,Edate datetime not null,Snum varchar(10) not null,foreign key(Snum) references Staff(Snum),foreign key(Gnum) references Goods(Gnum),foreign key(Vnum) references Vendor(Vnum))")
cursor.execute("create table Exits(Xnum varchar(10) primary key,Gnum varchar(10) not null,Xamount int check(Xamount>=0),Xmoney money check(Xmoney>=0),Xdate datetime not null,Snum varchar(10) not null,foreign key(Snum) references Staff(Snum),foreign key(Gnum) references Goods(Gnum))")
connect.commit()  #提交
cursor.close()  # 关闭游标
connect.close()  # 关闭连接

(三)插入数据

在Goods表中批量插入数据:

import pymssqlconnect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")
if connect:print("连接成功!")cursor = connect.cursor()  # 创建一个游标对象,python里的sql语句都要通过cursor来执行
sql = "insert into Goods(Gnum,Gname,Gtype,Gprice,Gbid,Gstock,Galarm,Gplan,Vnum) values ('200001','薯片','零食',8,5,500,100,600,'100002')"
sql = "insert into Goods(Gnum,Gname,Gtype,Gprice,Gbid,Gstock,Galarm,Gplan,Vnum) values ('200002','可乐','饮料',4,2,1000,200,1500,'100001')"
sql = "insert into Goods(Gnum,Gname,Gtype,Gprice,Gbid,Gstock,Galarm,Gplan,Vnum) values ('200003','猪肉','肉类',32,20,400,50,500,'100003')"
cursor.execute(sql)
connect.commit()  # 提交
cursor.close()
connect.close()

在Vendor表中批量插入数据:

import pymssqlconnect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")
if connect:print("连接成功!")cursor = connect.cursor()  # 创建一个游标对象,python里的sql语句都要通过cursor来执行
sql = "insert into Vendor(Vnum,Vname,Vphone,Vpalce) values ('100001','number1','12698577456','浙江')"
sql = "insert into Vendor(Vnum,Vname,Vphone,Vpalce) values ('100002','number2','72798567498','湖北')"
sql = "insert into Vendor(Vnum,Vname,Vphone,Vpalce) values ('100003','number3','69795867463','广州')"
cursor.execute(sql)
connect.commit()  # 提交
cursor.close()
connect.close()

(四)创建界面按钮,并实现数据库的“增删改查”

import pymssql
import tkinter as tk
import tkinter.messagebox#数据库添加操作
def add():# 连接数据库connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")# 创建光标cursor = connect.cursor()# 编写SQL语句sql = "insert into Goods(Gnum,Gname,Gtype,Gprice,Gbid,Gstock,Galarm,Gplan,Vnum) values('%s','%s','%s','%s','%s','%s','%s','%s',%s)" % (v1.get(), v2.get(), v3.get(), v4.get(), v5.get(), v6.get(), v7.get(), v8.get(), v9.get())# 执行SQL语句,并且输出完成提示信息,否则回滚try:cursor.execute(sql)connect.commit()tkinter.messagebox.showinfo("提示", "数据添加成功")except:connect.rollback()# 关闭数据库连接,防止泄露connect.close()#数据库删除操作
def delete():connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")cursor=connect.cursor()sql = "delete from Goods where Gnum='%s'" % (v10.get())try:cursor.execute(sql)connect.commit()tkinter.messagebox.showinfo("提示","数据删除成功")except:connect.rollback()connect.close()#数据库更新操作
def update():connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")cursor = connect.cursor()sql="update Goods set Gstock='%s' where Gnum='%s'"%(v11.get(),v12.get())try:cursor.execute(sql)connect.commit()tkinter.messagebox.showinfo("提示","数据更新成功!")except:connect.rollback()connect.close()#数据库模糊条件查询
def select():connect = pymssql.connect(host = "127.0.0.1:1433",database = "Manager",charset="utf8")cursor = connect.cursor()sql = "select Vname from Vendor,Goods where Goods.Vnum=Vendor.Vnum and Goods.Gnum like'%s'"%('%'+v13.get()+'%')try:cursor.execute(sql)results = cursor.fetchall()for row in results:Vname = row[0]tkinter.messagebox.showinfo("提示","Vname=%s" % (Vname))except:return#添加商品界面
def Staff_add():#构建全集变量,方便上面的函数调用global window_functionglobal v1,v2,v3,v4,v5,v6,v7,v8,v9#生成窗口window_function=tk.Tk()#窗口标题window_function.title("超市零售信息管理系统")#窗口大小window_function.geometry('400x700')#生成标签tk.Label(window_function, text="添加新商品", font=("黑体", 20)).grid(row=0,column=1,pady=10)tk.Label(window_function, text="请输入商品编号:").grid(row=1, column=0, padx=20, pady=20)tk.Label(window_function,text="请输入商品名称:").grid(row = 2,column =0,padx=20,pady=20)tk.Label(window_function,text="请输入商品类别:").grid(row = 3,column =0,padx=20,pady=20)tk.Label(window_function,text="请输入商品售价:").grid(row = 4,column =0,padx=20,pady=20)tk.Label(window_function, text="请输入商品成本:").grid(row=5, column=0, padx=20, pady=20)tk.Label(window_function, text="请输入库存量:").grid(row=6, column=0, padx=20, pady=20)tk.Label(window_function, text="请输入告警量:").grid(row=7, column=0, padx=20, pady=20)tk.Label(window_function, text="请输入计划库存量:").grid(row=8, column=0, padx=20, pady=20)tk.Label(window_function, text="请输入供货商编号:").grid(row=9, column=0, padx=20, pady=20)#定义变量记录输入信息v1 = tk.StringVar()v2 = tk.StringVar()v3 = tk.StringVar()v4 = tk.StringVar()v5 = tk.StringVar()v6 = tk.StringVar()v7 = tk.StringVar()v8 = tk.StringVar()v9 = tk.StringVar()#生成输入框entry1 = tk.Entry(window_function,show=None,textvariable=v1).grid(row = 1,column =1)entry2 = tk.Entry(window_function,show=None,textvariable=v2).grid(row = 2,column =1)entry3 = tk.Entry(window_function,show=None,textvariable=v3).grid(row = 3,column =1)entry4 = tk.Entry(window_function, show=None, textvariable=v4).grid(row=4, column=1)entry5 = tk.Entry(window_function, show=None, textvariable=v5).grid(row=5, column=1)entry6 = tk.Entry(window_function, show=None, textvariable=v6).grid(row=6, column=1)entry7 = tk.Entry(window_function, show=None, textvariable=v7).grid(row=7, column=1)entry8 = tk.Entry(window_function, show=None, textvariable=v8).grid(row=8, column=1)entry9 = tk.Entry(window_function, show=None, textvariable=v9).grid(row=9, column=1)#生成按钮button = tk.Button(window_function, text="添加", command=add).place(relx=0.3,rely=0.9)button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.5,rely=0.9)#显示窗口window_function.mainloop()#删除商品界面
def Staff_delete():global window_functionglobal v10window_function=tk.Tk()window_function.title("超市零售信息管理系统")window_function.geometry('500x400')tk.Label(window_function, text="删除商品", font=("黑体", 20)).grid(row=0,column=1,pady=20)tk.Label(window_function,text="请输入商品编号:").grid(row = 1,column =0,padx=20)v10 =tk.StringVar()entry1=tk.Entry(window_function,show=None,textvariable=v10).grid(row = 1,column =1,pady=40)button = tk.Button(window_function, text="删除", command=delete,anchor = 's').place(relx=0.2,rely=0.5)button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.4,rely=0.5)window_function.mainloop()#更新商品信息界面
def Staff_update():global window_functionglobal v11,v12window_function=tk.Tk()window_function.title("超市零售信息管理系统")window_function.geometry('500x400')tk.Label(window_function, text="更新商品信息", font=("黑体", 20)).grid(row=0,column=1,pady=20)tk.Label(window_function,text="请输入商品库存:").grid(row = 1,column =0,padx=20,pady=20)tk.Label(window_function,text="请输入商品编号:").grid(row = 2,column =0,padx=20,pady=20)v11=tk.StringVar()v12=tk.StringVar()entry1=tk.Entry(window_function,show=None,textvariable=v11).grid(row = 1,column =1)entry2=tk.Entry(window_function,show=None,textvariable=v12).grid(row = 2,column =1)button = tk.Button(window_function, text="更新", command=update).place(relx=0.3,rely=0.5)button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.5,rely=0.5)window_function.mainloop()#条件查找商品界面
def Staff_select():global window_functionglobal v13window_function=tk.Tk()window_function.title("超市零售信息管理系统")window_function.geometry('500x400')tk.Label(window_function, text="查找商品的供货商名称", font=("黑体", 20)).grid(row=0,column=1,pady=20)tk.Label(window_function,text="请输入商品编号:").grid(row = 1,column =0,padx=20)v13 =tk.StringVar()entry1=tk.Entry(window_function,show=None,textvariable=v13).grid(row = 1,column =1,pady=40)button = tk.Button(window_function, text="查找", command=select).place(relx=0.3,rely=0.5)button2 = tk.Button(window_function, text="返回", command=chaneg_main).place(relx=0.5,rely=0.5)window_function.mainloop()#添加商品界面跳转
def change_add():#销毁画布window.destroy()#生成新界面Staff_add()#删除商品界面跳转
def change_delete():window.destroy()Staff_delete()#更新商品界面跳转
def change_update():window.destroy()Staff_update()#条件查询商品界面跳转
def change_select():window.destroy()Staff_select()#主界面跳转
def chaneg_main():window_function.destroy()mainpage()#主界面
def mainpage():global windowwindow = tk.Tk()window.title("超市零售信息管理系统")window.geometry('500x400')#生成画布,销毁后生成新的画布实现跳转page = tk.Frame(window)page.pack()tk.Label(window, text="欢迎使用超市零售信息管理系统", font=("黑体", 20)).pack(pady=10)button1 = tk.Button(window, text="添加商品信息", command=change_add).pack(pady=10)button2 = tk.Button(window, text="删除商品信息", command=change_delete).pack(pady=10)button3 = tk.Button(window, text="修改商品信息", command=change_update).pack(pady=10)button4 = tk.Button(window, text="查找商品供货商名称", command=change_select).pack(pady=10)window.mainloop()#主函数生成主界面
if __name__ == '__main__':mainpage()

五、总结

对于数据库课程设计其实本身难度并不大,这里作者总结了一下在操作过程中的几个难点:
1.需求分析。很多同学确定了自己要做一个什么数据库后很兴奋,觉得自己找到属于自己的题目了,但却发现自己很难走出第一步,因为我们没有进行数据库的需求分析,并不了解自己的数据库具体要实现什么样的功能。这里的需求分析可以通过画功能模块图来实现,当然也可以文字叙述,但远不如画图来的直观。
2.数据库的逻辑结构设计。因为每一个数据中需要建立许多表,大家很容易混乱各个表之间的逻辑关系,因此可以把概念结构设计放在逻辑结构设计之前进行。
3.数据库与程序设计语言的建立和界面的创建。选择一门合适的高级语言来进行课设是非常重要的,各程序之间没有太大的优劣之分,只能说各有特点,作者在这里选择了Python语言,原因是代码简洁直观,并通过Python的第三方库可以非常方便快速的连接数据库和制作界面。

PS:如果同学们想要完整的课程设计报告可以私聊笔者免费获取。

数据库课程设计—超市零售信息管理系统(Python实现)相关推荐

  1. 数据库课程设计——学生宿舍信息管理系统

    数据库课程设计--学生宿舍信息管理系统 目录 1.设计目的... 2 2.任务与要求... 2 3.学生宿舍管理系统课程设计... 2 3.1 引言... 2 3.2需求分析... 2 3.2.1. ...

  2. 数据库课程设计《教务信息管理系统》

    (87条消息) 数据库系统课程设计<教务信息管理系统>python连接pymysql-MySQL代码类资源-CSDN文库 本文使用python和mysql创建一个基础中的基础的教务信息管理 ...

  3. 数据库课程设计:图书信息管理系统(Java+MySQL)(附程序)

    期末数据库课程设计做了个图书信息管理系统,由于老师给的选题给得早,所以我在开学后的几周就开学搞了,删删改改整了好多,在此整理分享一下: 项目简介: 随着社会的发展,人们对知识的需求也在不断增长.书籍作 ...

  4. C++/数据库课程设计_诊所信息管理系统_系统介绍

    系统介绍 本系统是一个诊所信息管理系统,可以作为C++或者数据库课程设计的参考,实现了患者挂号.支付.电子病历, 医生诊断.开处方.查看病历,医生.患者.药房.科室管理以及药品进销存. 针对用户的具体 ...

  5. 数据库课程设计:商铺入驻管理系统+Python+MySQL-8.0

    摘    要 商铺入驻管理系统是为了方便管理者对入驻的商铺和申请入驻的商铺进行处理,也为了方便租户进行申请.商铺入驻管理系统是通过将入驻信息以数据库的形式由窗口来完成各商铺租户所要申请入驻信息填写的需 ...

  6. Python课程设计之学生信息管理系统

    Python课程设计之学生信息管理系统 需求分析 系统设计 主函数设计 录入学生信息 删除学生信息 修改学生信息 查找学生信息 统计学生总人数 显示所有学生信息 排序模块 项目所有源码下载地址 需求分 ...

  7. 汽车站订票系统mysql实验_数据库课程设计报告-车站售票管理系统

    数据库课程设计报告-车站售票管理系统 吉林工程技术师范学院 课程设计报告 设计名称: 车站售票信息管理系统 姓 名: 孟祥丽 学 号: 23号 专 业: 计算机科学与技术 班 级: C1042 院 系 ...

  8. 数据库课程设计:建材物资管理系统数据库课程设计

    数据库课程设计:建材物资管理系统数据库课程设计 ** 一.课设简述 ** 本次设计基于大二学习的数据库原理这门课程,选择了建材物资管理系统这个课设题目,在查阅了相关资料后,设计了集进货商家信息,进货报 ...

  9. c语言银行卡管理系统程序设计报告,《c语言程序设计》课程设计报告-职工信息管理系统.doc...

    <c语言程序设计>课程设计报告-职工信息管理系统.doc 还剩 24页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环 ...

  10. 数据结构课程设计论文--学生信息管理系统

    数据结构课程设计论文--学生信息管理系统 1.学生成绩分析问题 (1)问题描述.录入并保存一个班级学生多门课程的成绩,并对成绩进行分析. (2)基本要求.a)通过键盘输入各学生的多门课程的成绩,建立相 ...

最新文章

  1. Apache用户目录枚举工具apache-users
  2. JS编程建议——42:用好正则表达式静态值
  3. 【右滑返回】滑动冲突 Scroller DecorView
  4. Java非对称加密KeyPairGenerator类
  5. Python 第三方模块安装出现的问题和解决方案.
  6. FLASH动画之制作动画
  7. java多边形生成_如何为凹多边形生成回声路径
  8. OpenCalib: 自动驾驶多传感器的一个开源标定工具箱
  9. 我不建议大家随便跳槽
  10. w ndows10系统怎么退出安全模式,Windows 10安全模式怎么解除
  11. centos静态ip天坑
  12. 指尖菜谱App从0到1-项目开发准备
  13. 瓴羊DAAS闪耀云栖大会,发布数字化时代最优解
  14. Spring Ioc原理解析
  15. 设备全生命周期管理,开启设管管理新模式
  16. 官网删除「儿童性虐待内容检测方案」,但苹果仍未放弃该计划
  17. tensorflow-GPU加速-win10(NVIDIA GeForce 940MX)下的安装教程(VS2015+Cuda9.0)
  18. python-docx操作word文件(*.docx)
  19. mysql数据库建立_Mysql 数据库创建基本步骤
  20. TSS翻译:帮我选一个Java Web开发框架吧

热门文章

  1. linux(Ubuntu)下Navicat的激活与无限试用
  2. Shiro总结和常见面试题
  3. 百度地图根据经纬度计算距离php,百度地图两者经纬度距离计算
  4. SPSS问卷数据处理步骤
  5. Oracle 数据文件迁移过程中 执行 shartup mount 报ORA03113:通讯通道的文件结尾 问题解决过程
  6. TCPUDP测试工具 创建UDP通信设置教程
  7. 数据挖掘应用实例分析
  8. 群晖安装pip3 模块并启用http server |NS DBI HOMESERVER
  9. adc0808的c语言编程51,51单片机驱动ADC0808电路图C51及汇编程序
  10. 哪位大神了解LEACH算法的可以解释下,LEACH算法构成网络结构时是用在随机部署网络节点的还是确定性部署网络节点呢?