Python模块化程序设计:水果仓库管理系统实战

闻溪
闻溪
发布时间:2026-10-15| 5人浏览过
原创

本文详解Python模块化程序设计方法,通过构建一个包含添加、查询、删除和列出功能的水果仓库管理系统,展示如何划分功能模块。文章从整体框架到具体函数实现,逐步解析如何利用函数提高代码的可读性与可维护性,并提供了完整的代码示例及注意事项。

关于模块化程序设计

什么是模块化程序设计?

程序设计的核心在于将庞大的系统功能拆解为多个独立的子模块。每个子模块负责实现特定的功能,并通过明确的接口相互协作,共同完成整体业务逻辑。这种设计方式有助于降低系统复杂度,提高代码的复用率和可维护性。

模块化设计程序的方法?

  • 针对复杂程序的开发,通常采用自顶向下的设计策略。首先将大问题分解为若干子问题,再对每个子问题进行细化处理,直至得出可行的解决方案。
  • 在编写具体代码前,应优先构建主程序与子程序的框架,明确软件的整体结构和数据流向。以功能模块为单位进行设计,而非逐行编写代码,这有助于保持逻辑的清晰性。
  • 利用函数是实现程序模块化的关键手段。它不仅能简化程序设计,使逻辑更加直观,还能提升代码的可读性和可维护性。此外,将常用计算或操作封装为通用函数,可实现随时调用,避免重复代码。

本章通过模拟一个水果仓库管理程序,演示模块化程序设计的具体应用。在前面的章节中,所有功能代码均集中在一处,导致结构混乱。本章将使用函数来实现各项功能,采用模块化的设计思路:

  • 划分水果仓库程序的功能模块,使用函数实现相应的功能
  • 首先实现整体框架,然后再细化每个功能细节
  • 最终的程序由多个函数构成,每个函数实现一个单一的功能,整个程序的结构清晰

水果仓库功能简介

编写程序 fruits_warehouse 模拟水果仓库的一个简单管理系统。该仓库包含若干水果,每种水果记录包括名称、重量和日期三项内容。程序提供以下4项基本功能:

  • 添加水果:用户输入水果的名称、重量、日期信息,将信息保存在一个列表中
  • 列出当前所有水果:打印输出当前所有水果的信息
  • 查询水果:用户输入水果的名称,打印输出该水果的信息
  • 删除水果:用户输入水果的名称,删除该水果的信息

通过命令行界面实现以上功能,程序 fruits_warehouse 运行时首先打印一个菜单,如下所示:

1: 添加水果信息
2: 显示所有水果
3: 查询水果信息
4: 删除水果信息
5: 退出
请根据提示的数字 1-5 输入要执行的操作:

所以我们定义一个获取选项的函数,如下:

def get_option():
    print('1: 添加水果信息')
    print('2: 显示所有水果')
    print('3: 查询水果信息')
    print('4: 删除水果信息')
    print('5: 退出')
    option = input('请根据提示输入要执行的操作: 数字 1-5 ')
    return option


get_option()

# >>> 执行结果如下:
# >>> 1: 添加水果信息
# >>> 2: 显示所有水果
# >>> 3: 查询水果信息
# >>> 4: 删除水果信息
# >>> 5: 退出
# >>> 请根据提示的数字 1-5 输入要执行的操作: 

主功能实现与程序入口

总共有5个选项,用户输入对应的数字选择相应的功能,如下表所示:

数字选项对应功能
1 : add_fruit添加水果信息
2:search_all_fruits列出当前所有水果信息
3:query_fruit查询水果信息
4:del_fruit删除水果信息
5:quit退出

编写对应的函数,这里我们先写出函数的定义,暂时使用pass占位,代码如下

def add_fruit():			# 添加水果信息
    pass


def search_all_fruits():	# 列出当前所有水果信息
    pass


def query_fruit():			# 查询水果信息
    pass


def del_fruit():			# 删除水果信息
    pass


def main():					# 主程入口
    pass

接下来我们就实现以下主程入口与获取用户的输入

fruits =[] 					# 创建一个空列表 fruits,fruits 记录所有水果的信息


def get_option():			# 获取用户输入
    print('1: 添加水果信息')
    print('2: 显示所有水果')
    print('3: 查询水果信息')
    print('4: 删除水果信息')
    print('5: 退出')
    option = input('请根据提示输入要执行的操作: 数字 1-5 ')
    return option


def add_fruit():			# 添加水果信息
    pass


def search_all_fruits():	# 列出当前所有水果信息
    pass


def query_fruit():			# 查询水果信息
    pass


def del_fruit():			# 删除水果信息
    pass


def main():					# 主程入口
    while True:
        option = get_option()

        if option == '1':
            add_fruit()
        elif option == '2':
            search_all_fruits()
        elif option == '3':
            query_fruit()
        elif option == '4':
            ddel_fruit()
        elif option == '5':
            break
        else:
            print('输入错误!请重新输入!')
            
main()

实现添加功能

def add_fruit():                # 添加水果信息
    name = input('name: ')
    weight = input('weight: ')
    date = input('date: ')
    fruit = {'name': name, 'weight': weight, 'date': date}
    fruits.append(fruit)

实现列出所有信息功能

def search_all_fruits():        # 列出当前所有水果信息
    if len(fruits) == 0:
        print('**************')
        print('当前仓库没有水果')
        print('**************')
    else:
        for fruit in fruits:
            print(f'%s,%s,%s' % (fruit['name'], fruit['weight'], fruit['date']))

实现查询信息功能

def query_fruit():              # 查询水果信息
    name = input('name: ')
    if len(fruits) == 0:
        print('***************')
        print('当前仓库没有水果')
        print('***************')
    else:
        for fruit in fruits:
            if fruit['name'] == name:
                print(f'%s,%s,%s' % (fruit['name'], fruit['weight'], fruit['date']))

实现删除信息功能

def del_fruit():                # 删除水果信息
    name = input('name: ')
    if len(fruits) == 0:
        print('***************')
        print('当前仓库没有水果')
        print('***************')
    else:
        for fruit in fruits:
            if fruit['name'] == name:
                fruits.remove(fruit)
                break

完整程序如下

注意:这个完整程序的功能其实并不算完整,只能说是实现了一个基础功能;比如一个场景,当我们要查询、删除的水果并不在 fruits 列表 的时候,这里并没有做校验,只是校验了当前水果列表是否存在水果(长度判断)。

所以大家可以自己动手完善一下。

# coding:utf-8

"""
    @Author:Neo
    @Date:2020/1/14
    @Filename:fruits_warehouse.py
    @Software:Pycharm
"""


fruits = []                     # 创建一个空列表 fruits,fruits 记录所有水果的信息


def get_option():               # 获取用户输入
    print('1: 添加水果信息')
    print('2: 显示所有水果')
    print('3: 查询水果信息')
    print('4: 删除水果信息')
    print('5: 退出')
    option = input('请根据提示 数字 1-5 输入要执行的操作: ')
    return option


def add_fruit():                # 添加水果信息
    name = input('name: ')
    weight = input('weight: ')
    date = input('date: ')
    fruit = {'name': name, 'weight': weight, 'date': date}
    fruits.append(fruit)
    print(fruits)


def search_all_fruits():        # 列出当前所有水果信息
    if len(fruits) == 0:
        print('              ')
        print('**************')
        print('当前仓库没有水果')
        print('**************')
        print('              ')
    else:
        for fruit in fruits:
            print(f'%s,%s,%s' % (fruit['name'], fruit['weight'], fruit['date']))



def query_fruit():              # 查询水果信息
    name = input('name: ')
    if len(fruits) == 0:
        print('              ')
        print('**************')
        print('当前仓库没有水果')
        print('**************')
        print('              ')
    else:
        for fruit in fruits:
            if fruit['name'] == name:
                print(f'%s,%s,%s' % (fruit['name'], fruit['weight'], fruit['date']))


def del_fruit():                # 删除水果信息
    name = input('name: ')
    if len(fruits) == 0:
        print('              ')
        print('**************')
        print('当前仓库没有水果')
        print('**************')
        print('              ')
    else:
        for fruit in fruits:
            if fruit['name'] == name:
                fruits.remove(fruit)
                break


def main():  # 主程入口
    while True:
        option = get_option()

        if option == '1':
            add_fruit()
        elif option == '2':
            search_all_fruits()
        elif option == '3':
            query_fruit()
        elif option == '4':
            del_fruit()
        elif option == '5':
            break
        else:
            print('输入错误!请重新输入!')


main()

以上就是Python学习之模块化程序设计示例详解的详细内容,更多关于Python模块化程序设计的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。