零售药店管理系统 【Python+数据库】
1 背景介绍
结合本学期所学的Python和数据库完成一个零售药店管理系统
2 问题定义
零售药店管理系统通过录入零售药品信息、员工信息、客户信息、供应商信息、库房信息和管理员登录信息,实现对药品、员工、客户、供应商、库房和管理员信息的增加、删除、修改和查找四项基本功能,同时能对药店的销售流水、进货信息等记录,并实现数据分析可视化功能,以此决定营业主方向等其他一些功能。
3 需求分析
3.1功能需求
3.1.1基本功能
1.基础信息管理:药品信息、员工信息、客户信息、供应商信息等。
2.进货管理:入库登记、入库登记查询、入库报表等。
3.库房管理:库存查询、库存盘点、库存报表等。
4.销售管理:销售登记、销售报表及相应的查询等。
5.系统维护:用户登录管理、系统设置和修改密码。
3.2数据库需求
3.2.1需要存储数据信息
实体
1.药品(药品编号,药品名称,药品价格,供应商,药品数量,所在库房);
2.员工(员工编号,员工姓名,性别,年龄,电话);
3.客户(客户VIP号,姓名,性别,年龄,电话,住址);
4.供应商(供货商编号,供应商名称,供应药品名称,供应商电话,供应商地址);
5.库房(库房编号,名称,地址);
6.管理员登录(序号,用户号,密码);
功能
7.销售流水(销售流水号,销售员工姓名,销售药品编号,销售药品名称,销售日期,销售数量,销售单价,销售总金额);
8.进货(进货日期,库房编号,库房名称,药品名称,药品进价,进货数量);
9.库存(库房名称,药品编号,药品名称,库存量);放入零售药品信息里一起管理
10.登录(用户名,密码);
3.2.2分别对应数据库里的二维表信息
1.Drug(Drugnum,Drugname,Drugprice,DrugSup,Drugnumber,Drughouse);
2.Staff(Staffnum,Staffname,Ssex,Sage,Sphone);
3.Consumers(Cnum,Cname,Csex,Cage,Cphone,Caddress);
4.Suppliers(Supnum,Supname,Supdrug,Supphone,Supaddress);
5.House(Housenum,Housename,Houseaddress);
6.Login(num,name,password);
7.Sale(Salenum,Staffname,Drugnum,Drugname,Saledate,Salenumber,Saleprice,Saletotal);
8.Loadin(Datenum,Housenum,Housename,Drugname,Drugpricein,Drugsum);
4 数据库分析
4.1数据字典
4.2数据流图
4.3业务流程图
5 系统设计
5.1数据库设计
5.1.1概念模型设计
6 功能系统模块设计
6.1登录功能
伪代码:
1.创建登录窗口;
2.添加“用户名”和“密码”标签以及两个多行文本框;
3.添加“登录”和“退出”两个按钮;
4.连接数据库,检查用户名和密码;
5.登录失败,报出warning警告;
流程图:
import tkinter as tk
from tkinter import messagebox
import pymysql
from MainPage import MainPage
from PIL import Image, ImageTk
defLanding():
root=tk.Tk()
root.geometry('820x400')
root.title('药店员工登录界面')
image_file = Image.open("D:\\百度下载\\12.jpg")
photo = ImageTk.PhotoImage(image_file)
tk.Label(root,image=photo).pack()
username = tk.StringVar()
password = tk.StringVar()
Lable1 = tk.Label(root, text='账号:', font=('Verdana',13), fg='black')
Lable1.place(relx=0.4, rely=0.4)
entry1 = tk.Entry(root, textvariable=username,width=15, font=('Verdana',10,'bold','italic'))
entry1.place(relx=0.5, rely=0.4)
Lable2 = tk.Label(root, text='密码:', font=('Verdana',13), fg='black')
Lable2.place(relx=0.4, rely=0.5)
entry2 = tk.Entry(root, textvariable=password,show='*',width=15, font=('Verdana',10))
entry2.place(relx=0.5, rely=0.5)defLogin():
db = pymysql.connect(host="localhost", user="root", passwd="12345", db="database")
cur = db.cursor()
sql =f"select * from Login where name='{username}' and password='{password}'"
cur.execute(sql)
db.commit()
data = cur.fetchall()if data !="":
root.destroy()
MainPage()else:
messagebox.showwarning(title='警告', message='登陆失败!请检查账号密码输入是否正确!')
tk.Button(root, text="登录", command=Login).place(relx=0.4,rely=0.7)
tk.Button(root, text='退出', command=quit).place(relx=0.55,rely=0.7)
root.mainloop()if __name__=='__main__':
Landing()
运行效果图
6.2基本操作功能
伪代码:
1.创建主界面窗体;
2.添加“基本操作”菜单;
3.为“基本操作”菜单添加子菜单“零售药品信息”、“员工信息”、“客户信息”、“供应商信息”和“库房信息”;
4.将子菜单“零售药品信息”、“员工信息”、“客户信息”、“供应商信息”和“库房信息”连接数据库,并提供相应的增/删/改/查操作;
流程图:
import tkinter as tk
import Druginfo
import About
import Consumers
import House
import Sale
import Staffinfo
import Suppliersinfo
import Loadin
import Logininfo
import Analyse
from PIL import Image, ImageTk
defMainPage():
top=tk.Tk()
top.title('零售药店管理系统 v0.0.1')
top.geometry('820x400')
image_file = Image.open("D:\\百度下载\\11.jpg")
photo = ImageTk.PhotoImage(image_file)
tk.Label(top,image=photo).pack()
menubar=tk.Menu(top)
menubar1=tk.Menu(menubar)
menubar2=tk.Menu(menubar)
menubar3=tk.Menu(menubar)
menubar4= tk.Menu(menubar)
menubar5=tk.Menu(menubar)
menubar.add_cascade(label='基本操作',menu=menubar1)
menubar1.add_command(label='零售药品信息',command=Druginfo.Drug)
menubar1.add_separator()
menubar1.add_command(label='员工信息', command=Staffinfo.Staff)
menubar1.add_separator()
menubar1.add_command(label='客户信息', command=Consumers.Consumers)
menubar1.add_separator()
menubar1.add_command(label='供应商信息', command=Suppliersinfo.Suppliers)
menubar1.add_separator()
menubar1.add_command(label='库房信息', command=House.House)
menubar.add_cascade(label='系统管理', menu=menubar2)
menubar2.add_command(label='登录管理',command=Logininfo.Login)
menubar.add_cascade(label='财务流通',menu=menubar3)
menubar3.add_command(label='销售记录',command=Sale.Sale)
menubar3.add_separator()
menubar3.add_command(label='进货记录', command=Loadin.Loadin)
menubar.add_cascade(label='数据可视化',menu=menubar4)
menubar4.add_command(label='药品——价格分析',command=Analyse.analyse1)
menubar4.add_separator()
menubar4.add_command(label='药品入库分析',command=Analyse.analyse2)
menubar4.add_separator()
menubar4.add_command(label='进货数量分析',command=Analyse.analyse3)
menubar4.add_separator()
menubar4.add_command(label='进货药品价格分析',command=Analyse.analyse4)
menubar4.add_separator()
menubar4.add_command(label='药品销量分析',command=Analyse.analyse5)
menubar.add_cascade(label='关于', menu=menubar5)
menubar5.add_command(label='帮助', command=About.About)
top['menu']=menubar
top.mainloop()if __name__=='__main__':
MainPage()
运行效果图
有需要完整代码的同学,希望点赞+收藏,再留言,邮箱地址切勿留错!!!
版权归原作者 翻斗花园何英俊 所有, 如有侵权,请联系我们删除。