花店花品信息管理系统开发实战:Python实现简易门店管理系统

花店花品信息管理系统开发实战:Python实现简易门店管理系统

在零售行业中,门店的商品信息管理是核心环节之一。本文将以花店场景为例,详细讲解如何使用Python开发一款轻量级的花品信息管理系统,实现用户登录验证、花品信息的增删改查、排序与折扣设置等核心功能,帮助初学者理解Python基础语法、数据结构及函数式编程的应用。

一、系统设计思路

本系统采用Python原生语法开发,无第三方框架依赖,核心设计思路如下:

  1. 数据存储:使用列表嵌套字典的方式存储用户信息和花品信息,结构清晰且易于操作;
  2. 功能拆分:将登录、显示、新增、删除、修改、排序、查询等功能拆分为独立函数,遵循"单一职责"原则;
  3. 交互逻辑:通过控制台交互实现用户操作,采用循环结构保证程序持续运行,同时增加输入校验提升用户体验。

二、核心功能实现解析

2.1 数据初始化

首先定义用户信息和花品信息的基础数据结构,列表用于存储多条数据,字典用于描述单条数据的属性:

python 复制代码
# 用户数据(用户名、密码、姓名)
user1 = {"用户名": "admin", "密码": "123", "姓名": "店长"}
userlist = [user1]

# 花品数据(编号、名称、价格、折扣)
commodity1 = {"编号": "1", "名称": "向日葵", "价格":20.0, "折扣": 9.0}
commodity2 = {"编号": "2", "名称": "郁金香", "价格":32.0, "折扣": 8.5}
commodity3 = {"编号": "3", "名称": "康乃馨", "价格":42.0, "折扣": 8.8}
commodity4 = {"编号": "4", "名称": "满天星", "价格":25.0, "折扣": 9.0}
commoditylist = [commodity1, commodity2, commodity3, commodity4]

2.2 登录验证功能

登录功能是系统的安全入口,实现了以下核心逻辑:

  • 最多3次密码错误尝试,超过则锁定用户;
  • 遍历用户列表校验账号密码,匹配成功则登录;
  • 返回登录状态,作为后续功能访问的前置条件。
python 复制代码
def login():
    msg = "失败"
    count = 0
    while True:
        print("********************************************")
        print("*           欢迎使用花店信息管理系统            *")
        print("*********************************************")
        print("请先登录!")
        uname = input("请输入账号:")
        upwd = input("请输入密码:")
        for user in userlist:
            if uname == user["用户名"] and upwd == user["密码"]:
                print("登录成功,欢迎你", user["姓名"])
                msg = "成功"
                break
        if msg == "失败":
            count += 1
            if count < 3:
                print("用户名密码错误!请重新登录", "输入第", count, "次")
            else:
                print("用户已锁定!")
                break
        else:
            break
    return msg

2.3 花品信息核心操作

(1)显示花品列表

遍历花品列表,格式化输出所有花品的编号、名称、价格、折扣信息,为用户提供直观的数据展示:

python 复制代码
def showProduct():
    print("----------花品信息----------")
    print("-编号----名称----价格----折扣-")
    for commodity in commoditylist:
        print("-" + commodity["编号"] + "----" + commodity["名称"] + "-----" + str(commodity["价格"]) + "-----" + str(
            commodity["折扣"]))
    print("----------------------------")
(2)新增花品信息

自动生成新花品编号(基于现有最大编号+1),接收用户输入的名称和价格,默认折扣为0,新增后自动刷新显示列表:

python 复制代码
def addProduct():
    list1 = []
    for num in commoditylist:
        list1.append(int(num["编号"]))
    num = str(max(list1) + 1)
    print("----------添加新花品----------")
    mc = input("请输入花品名称:")
    jg = float(input("请输入花品价格:"))
    zk = 0
    newProduct = {"编号": num, "名称": mc, "价格": jg, "折扣": zk}
    commoditylist.append(newProduct)
    print("商品" + mc + "添加成功")
    print("-------------------------------")
    showProduct()
(3)删除花品信息

支持按编号删除花品,增加输入校验:若编号不存在,提供"取消/继续"选项,提升交互友好性:

python 复制代码
def delproduct():
    showProduct()
    while True:
        msg = 0
        num = input("请输入要删除花品的编号")
        for product in commoditylist:
            if num == product["编号"]:
                print("商品", product["名称"], "正在删除")
                commoditylist.remove(product)
                print("删除成功!")
                msg = 1
                break
        if msg == 0:
            print("输入的花品编号不正确,请重新输入")
            jx = input("取消输入请按1,继续请按2")
            if jx == "1":
                break
            elif jx == "2":
                continue
            else:
                print("输入错误请重新输入")
        else:
            showProduct()
            break
(4)折扣与价格修改

分别实现按名称修改折扣、按编号修改价格的功能,逻辑与删除功能类似,核心是通过遍历列表找到目标花品并更新对应属性:

python 复制代码
# 设置花品折扣
def setDiscount():
    while True:
        mag = 0
        name = input("请输入要更改折扣的花品名称")
        for x in commoditylist:
            if name == x["名称"]:
                zk = float(input("请输入要设置产品的折扣:"))
                x["折扣"] = zk
                print(x["名称"] + "的折扣为:" + str(zk))
                mag = 1
                break
        if mag == 0:
            print("输入的花品名称不存在,请重新输入")
            jx = input("取消输入请按1,继续请按2")
            if jx == "1":
                break
            elif jx == "2":
                continue
            else:
                print("输入错误请重新输入")
        else:
            showProduct()
            break

# 修改花品价格
def setPrice():
    while True:
        mag = 0
        num = input("请输入要更改价格的花品编号")
        for x in commoditylist:
            if num == x["编号"]:
                jg = float(input("请输入要设置产品价格"))
                x["价格"] = jg
                print(x["名称"] + "的价格为:" + str(jg))
                mag = 1
                break
        if mag == 0:
            print("输入的花品编号不存在,请重新输入")
            jx = input("取消输入请按1,继续请按2")
            if jx == "1":
                break
            elif jx == "2":
                continue
            else:
                print("输入错误请重新输入")
        else:
            showProduct()
            break
(5)价格排序与信息查询
  • 价格排序:支持升序/降序两种方式,先提取所有价格去重后排序,再按排序后的价格匹配花品并输出;
  • 信息查询:支持按编号或名称查询,找到目标花品后立即输出并返回,未找到则提示无匹配信息。
python 复制代码
# 价格排序
def sort():
    choice = int(input("请选择升序或者降序(1、升序 2、降序)"))
    clist = []
    for commodity in commoditylist:
        clist.append(commodity["价格"])
    clist = list(set(clist))
    if choice == 1:
        newlist = sorted(clist)
        for price in newlist:
            for product in commoditylist:
                if price == product["价格"]:
                    print("-" + product["编号"] + "----" + product["名称"] + "-----" + str(
                        product["价格"]) + "-----" + str(product["折扣"]))
    if  choice == 2:
        newlist = sorted(clist, reverse=True)
        for price in newlist:
            for product in commoditylist:
                if price == product["价格"]:
                    print("-" + product["编号"] + "----" + product["名称"] + "-----" + str(
                        product["价格"]) + "-----" + str(product["折扣"]))

# 花品查询
def searchProduct():
    choice = int(input("请选择查询方式(1、编号 2、花品名称)"))
    if choice == 1:
        num = input("请输入要查询的花品编号")
        for product in commoditylist:
            if num == product["编号"]:
                print("-" + product["编号"] + "----" + product["名称"] + "-----" + str(
                    product["价格"]) + "-----" + str(product["折扣"]))
                return
        print("未找到该编号对应的花品信息")
    elif choice == 2:
        name = input("请输入要查询的花品名称")
        for product in commoditylist:
            if name == product["名称"]:
                print("-" + product["编号"] + "----" + product["名称"] + "-----" + str(
                    product["价格"]) + "-----" + str(product["折扣"]))
                return
        print("未找到该花品名称对应的花品信息")
    else:
        print("输入有误,请重新输入")

2.4 主菜单与程序入口

通过双层循环实现程序的持续运行:外层循环控制登录流程,登录成功后进入内层循环(主菜单),用户选择对应功能编号执行操作,输入8则退出系统。

python 复制代码
while True:
    result = login()
    if result == "成功":
        while True:
            print("---------------主菜单---------------")
            print("-1、显示所有花品信息")
            print("-2、增加花品信息")
            print("-3、删除花品")
            print("-4、更改花品折扣")
            print("-5、更改花品价格")
            print("-6、根据价格排序花品")
            print("-7、根据编号或者花品名字查询花品")
            print("-8、退出")
            choice = int(input("请输入您的选项(1-8)"))
            if choice == 1:
                showProduct()
            elif choice == 2:
                addProduct()
            elif choice == 3:
                delproduct()
            elif choice == 4:
                setDiscount()
            elif choice == 5:
                setPrice()
            elif choice == 6:
                sort()
            elif choice == 7:
                searchProduct()
            elif choice == 8:
                print("------------系统已退出")
                break
            else:
                print("没有此功能请重新输入")
                continue

三、系统运行流程

  1. 启动程序后,首先进入登录界面,用户输入账号密码(默认admin/123);
  2. 登录成功后显示主菜单,用户输入1-8的数字选择对应功能;
  3. 执行对应功能(如新增、删除、修改)后,自动刷新花品列表或返回操作结果;
  4. 输入8则退出系统,若登录失败超过3次则锁定用户并退出。

四、扩展与优化方向

本系统作为基础版本,可从以下方向优化升级:

  1. 数据持久化:将列表数据存储到文件(如JSON、CSV)或数据库(如MySQL、SQLite),避免程序重启后数据丢失;
  2. 用户管理:增加用户注册、密码修改、权限分级(如店长/店员)功能;
  3. 输入校验增强:对价格、折扣等数值型输入增加范围校验(如折扣0-10,价格大于0);
  4. 界面优化:使用Tkinter、PyQt等库开发图形化界面,提升操作体验;
  5. 功能扩展:增加订单管理、库存统计、销售报表等功能,完善门店管理体系。

五、总结

本文通过花店花品信息管理系统的开发案例,讲解了Python列表、字典、函数、循环、条件判断等基础语法的综合应用。该系统虽简易,但覆盖了数据存储、交互逻辑、功能拆分等核心开发思想,适合Python初学者入门学习。通过对系统的扩展优化,可进一步掌握文件操作、数据库连接、GUI开发等进阶技能,为开发更复杂的应用打下基础。

相关推荐
witAI2 小时前
手机生成剧本杀软件2025推荐,创新剧情设计工具助力创作
人工智能·python
white-persist2 小时前
【vulhub weblogic CVE-2017-10271漏洞复现】vulhub weblogic CVE-2017-10271漏洞复现详细解析
java·运维·服务器·网络·数据库·算法·安全
派大星~课堂2 小时前
【力扣-138. 随机链表的复制 ✨】Python笔记
python·leetcode·链表
王忘杰2 小时前
0基础CUDA炼丹、增加断点保存,从零开始训练自己的AI大模型 87owo/EasyGPT Python CUDA
开发语言·人工智能·python
数据知道2 小时前
claw-code 源码详细分析:`reference_data` JSON 快照——大型移植里「对照底稿」该怎么治理与演进?
linux·python·ubuntu·json·claude code
好家伙VCC2 小时前
**发散创新:基于以太坊侧链的高性能去中心化应用部署实战**在区块链生态中,*
java·python·去中心化·区块链
TON_G-T2 小时前
useEffect为什么会触发死循环
java·服务器·前端
瞭望清晨2 小时前
Python多进程使用场景
开发语言·python
tHeya06II3 小时前
涵盖 Cursor、Claude Code、Skills
java·服务器