網站首頁 編程語言 正文
關于模塊化程序設計
什么是模塊化程序設計?
程序設計的模塊化指的是在進行程序設計時,把一個大的程序功能劃分為若干個小的程序模塊。每一個小程序模塊實現一個確定的功能,并且在這些小程序模塊實現的功能之間建立必要的聯系,通過各個小模塊之間的互相協作完成整個大功能實現的方法。
模塊化設計程序的方法?
- 一般在針對實現比較復雜程序的情況下,采用的是自上而下的方法。將復雜的場景劃分為幾個部分,每一個部門再進行針對性的細化,直到分解為比較好的解決方案為止。
- 采用模塊化設計程序,并不是一開始就逐條的編寫程序代碼,而是首先用主程序、子程序等框架把軟件的主要結構和流程描述出來,以功能劃分的模塊為單位進行程序設計。
- 利用函數,不僅可以實現程序的模塊化,使得程序設計更加簡單和直觀,從而提高了程序的易讀性和可維護性,而且還可以把程序中經常用到的一些計算或操作編寫成通用函數,以供隨時調用。
該章節模擬一個水果倉庫管理程序。在前面章節中,程序的各項功能代碼全部集中在一個代碼段中,程序的結構不清晰。該章節使用函數來實現程序,采用模塊化的程序設計方法:
- 劃分 水果倉庫 程序的功能模塊,使用函數實現相應的功能
- 首先實現整體框架,然后再細化每個功能細節
- 最終的程序由多個函數構成,每個函數實現一個單一的功能,整個程序的結構清晰
水果倉庫功能簡介
編寫程序 fruits_warehouse 模擬 水果倉庫 的一個簡單管理系統,水果倉庫 包含若干水果,每種水果包括:名稱、重量、日期 3 項內容。程序提供 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()
原文鏈接:https://blog.csdn.net/weixin_42250835/article/details/123318721
相關推薦
- 2022-12-07 Golang源碼分析之golang/sync之singleflight_Golang
- 2022-04-05 C#反射調用拓展類方法實例代碼_C#教程
- 2022-12-21 Android?O對后臺Service限制詳解_Android
- 2022-04-19 C#多線程系列之多線程鎖lock和Monitor_C#教程
- 2022-08-02 使用shell讀取ini文件方法步驟_linux shell
- 2022-12-27 React生命周期函數圖解介紹_React
- 2022-10-31 Golang中map數據類型的使用方法_Golang
- 2022-04-10 用python實現文件備份_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支