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

数据库课程设计—超市零售信息管理系统(Python实现)数据库课程设计超市零售信息管理系统 Python 实现 SQLServer 文章目录数据库课程设计前言 一 设计目的 二 设计内容一 需求分析 一 设计概念 二 功能说明 1 进货管理 2 销售管理 3 库存管理 4 人员管理 三 功能模块图二 概念结构设计三 逻辑结构设计四 代码实现 一 实现 Python 连接 SQLSevere 数据库 二 创建数据库表 三 插入数据 四 创建界面按钮 并实现数据库的 增删改查 五 总结前言 一 设计目的学生根据所学的数据库系统原理与程序设计的知识 能够针对一个

数据库课程设计

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


前言

(一)设计目的

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

(二)设计内容

题目可根据自己熟悉的事物填充和适当变更,例如:校园招聘系统、学生科技成果统计系统等,但不建议图书管理信息系统、学生信息管理系统、酒店管理系统、药品进销存系统,也可以是基于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 connect if __name__ == '__main__': conn = conn() 
conn = pymssql.connect(host='host',database='db_name',user='user',password='pwd',charset='utf8') #host为数据库的IP地址,,通过自己电脑进行查询 #database为数据库的名称 #charset表示在此程序中,字符编码采用“utf8编码”模式 

(二)创建数据库表

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

import pymssql connect = 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 pymssql connect = 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 ('','薯片','零食',8,5,500,100,600,'')" sql = "insert into Goods(Gnum,Gname,Gtype,Gprice,Gbid,Gstock,Galarm,Gplan,Vnum) values ('','可乐','饮料',4,2,1000,200,1500,'')" sql = "insert into Goods(Gnum,Gname,Gtype,Gprice,Gbid,Gstock,Galarm,Gplan,Vnum) values ('','猪肉','肉类',32,20,400,50,500,'')" cursor.execute(sql) connect.commit() # 提交 cursor.close() connect.close() 

在Vendor表中批量插入数据:

import pymssql connect = 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 ('','number1','','浙江')" sql = "insert into Vendor(Vnum,Vname,Vphone,Vpalce) values ('','number2','','湖北')" sql = "insert into Vendor(Vnum,Vname,Vphone,Vpalce) values ('','number3','','广州')" 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_function global 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_function global v10 window_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_function global v11,v12 window_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_function global v13 window_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 window window = 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() 

五、总结

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232291.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • navicat生产激活码失败【中文破解版】

    (navicat生产激活码失败)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月1日
    203
  • 江西公安网_南昌汽车网

    江西公安网_南昌汽车网程序介绍:江西爱车网——地方汽车门户网站程序采用ASP+ACCESS开发,前台设计美观大方,带有会员中心,会员类型分为:个人、经销商及4S店、二手车商及经纪人、其他经销商等,网站频道设有:买车、卖车、租车、用车、车市、车友、车界,还带有车友论坛及供求信息发布功能。 百度网盘下载http://pan.baidu.com/netdisk/singlepublic?fid=372892_1051

    2022年10月1日
    4
  • 排查是什么意思_nacos有了为什么要用dubbo

    排查是什么意思_nacos有了为什么要用dubbo当Dubbo遇上Arthas:排查问题的实践

    2022年4月21日
    51
  • sublime text 3 激活码【2022免费激活】[通俗易懂]

    (sublime text 3 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~40…

    2022年4月2日
    835
  • 电阻参数_关于电阻的相关参数

    实际应用时,通常采用平均电阻温度系数,定义式:TCR(平均)=(R2-R1)/R1(T2-T1)有负温度系数、正温度系数及在某一特定温度下电阻只会发生突变的临界温度系数。紫铜的电阻温度系数为1/234.5℃。不同类型电阻温度稳定性从优到次,依次为:金属箔、线绕、金属膜、金属氧化膜、碳膜、有机实芯。1。镀金并不是为了减小电阻,而是因为金的化学性质非常稳定,不容易氧化,接头上镀金是为了防止接触不良(不…

    2022年4月8日
    50
  • 软件过程模型_软件测试过程模型

    软件过程模型_软件测试过程模型软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。常见的过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。1.瀑布模型这个特点有两重含义:   1.必须等前一阶段的工作完成之后,才能开始后一阶段的工作;…

    2025年7月21日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号