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分别对应数据库里的二维表信息
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']=menubar top.mainloop()if __name__=='__main__': MainPage()
运行效果图
有需要完整代码的同学,希望点赞+收藏,再留言,邮箱地址切勿留错!!!
鉴于好几个铁汁的邮箱都留错了,还是转成网盘吧!
链接:https://pan.baidu.com/s/1UtHRfCE_1EMxvAwVBKtDaQ?pwd=r4pp
提取码:r4pp
来源地址:https://blog.csdn.net/SweeneyH/article/details/125847293