零售药店管理系统 【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 tkfrom tkinter import messageboximport pymysqlfrom MainPage import MainPagefrom PIL import Image, ImageTkdef Landing():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)def Login():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 tkimport Druginfoimport Aboutimport Consumersimport Houseimport Saleimport Staffinfoimport Suppliersinfoimport Loadinimport Logininfoimport Analysefrom PIL import Image, ImageTkdef MainPage():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']=menubartop.mainloop()if __name__=='__main__':MainPage()

运行效果图





有需要完整代码的同学,希望点赞+收藏,再留言,邮箱地址切勿留错!!!
鉴于好几个铁汁的邮箱都留错了,还是转成网盘吧!
链接:https://pan.baidu.com/s/1UtHRfCE_1EMxvAwVBKtDaQ?pwd=r4pp
提取码:r4pp