Python综合应用:名片管理系统开发详解

唐可
唐可
发布时间:2026-10-14| 6人浏览过
原创

本文通过Python综合应用案例,详细讲解如何开发一个名片管理系统。内容涵盖变量、流程控制、函数和模块的综合使用,包括系统框架搭建、新增、查询、修改和删除名片功能的实现,以及如何通过Shebang使脚本可直接运行。

本文通过Python综合应用案例,详细讲解如何开发一个名片管理系统。

本案例综合运用了以下Python核心知识点:

  • 变量
  • 流程控制
  • 函数
  • 模块

开发名片管理系统

  1. 程序启动后,首先显示系统欢迎界面及功能菜单。

**************************************************
欢迎使用【名片管理系统】V1.0

1. 新建名片
2. 显示全部
3. 查询名片

0. 退出系统
**************************************************
    1. 用户通过输入数字选择所需功能。
    1. 程序根据用户的选择执行相应的功能逻辑。
    1. 名片数据需包含姓名、电话、QQ和邮件四个字段。
    1. 若查询到指定名片,用户可选择修改或删除该名片。

开发步骤

  1. 框架搭建
  2. 新增名片
  3. 显示所有名片
  4. 查询名片
  5. 查询成功后进行名片的修改或删除操作
  6. 配置Python脚本使其可直接运行

目标

  • 搭建名片管理系统 框架结构
    1. 准备文件并确定文件名,确保代码能在指定位置正确编写。
    2. 编写主运行循环,实现基本的用户输入接收与逻辑判断。

1.1 文件准备

  1. 新建 cards_main.py 保存主程序功能代码。
    • 程序的入口文件。
    • 每次启动名片管理系统时,均通过 main 文件作为入口启动程序。
  2. 新建 cards_tools.py 保存所有名片功能函数
    • 将名片的新增、查询、修改、删除等功能分别封装在独立的函数中。

1.2 编写主运行循环

  • 在 cards_main 文件中添加一个无限循环。

while True:

  # TODO(小明) 显示系统菜单

  action = input("请选择操作功能:")

  print("您选择的操作是:%s" % action)

  # 根据用户输入决定后续的操作
  if action in ["1", "2", "3"]:
    pass
  elif action == "0":
    print("欢迎再次使用【名片管理系统】")

    break
  else:
    print("输入错误,请重新输入")

字符串判断


if action in ["1", "2", "3"]:

if action == "1" or action == "2" or action == "3":
  1. 使用 in 关键字针对列表进行判断,避免使用 or 拼接复杂的逻辑条件。
  2. 未对用户输入进行 int 转换,可防止用户输入非数字内容时导致程序运行错误。

pass

  • pass 是一个空语句,不执行任何操作,通常用作占位语句。
  • 用于保持程序结构的完整性。

无限循环

  • 在开发软件时,若不希望程序执行后立即退出。
  • 可在程序中增加一个无限循环。
  • 由用户决定退出程序的时机。

TODO 注释

  • 在 # 后加上 TODO,用于标记需要后续完成的工作。

# TODO(作者/邮件) 显示系统菜单

1.3 在 cards_tools 中增加四个新函数


def show_menu():

  """显示菜单
  """
  pass

def new_card():

  """新建名片
  """
  print("-" * 50)
  print("功能:新建名片")


def show_all():

  """显示全部
  """
  print("-" * 50)
  print("功能:显示全部")


def search_card():

  """搜索名片
  """
  print("-" * 50)
  print("功能:搜索名片")

1.4 导入模块

  • 在 cards_main.py 中使用 import 导入 cards_tools 模块。

import cards_tools

修改 while 循环的代码如下:


import cards_tools

while True:

  cards_tools.show_menu()

  action = input("请选择操作功能:")

  print("您选择的操作是:%s" % action)

  # 根据用户输入决定后续的操作
  if action in ["1", "2", "3"]:

    if action == "1":
      cards_tools.new_card()

    elif action == "2":
      cards_tools.show_all()

    elif action == "3":
      cards_tools.search_card()

  elif action == "0":
    print("欢迎再次使用【名片管理系统】")

    break
  else:
    print("输入错误,请重新输入:")

至此,cards_main 中的所有代码全部开发完毕!

1.5 完成 show_menu 函数


def show_menu():

  """显示菜单
  """
  print("*" * 50)
  print("欢迎使用【菜单管理系统】V1.0")
  print("")
  print("1. 新建名片")
  print("2. 显示全部")
  print("3. 查询名片")
  print("")
  print("0. 退出系统")
  print("*" * 50)

程序用于处理数据,而变量用于存储数据。

  • 使用字典记录每一张名片的详细信息。

  • 使用列表统一记录所有名片字典。 定义名片列表变量

  • 在 cards_tools 文件的顶部增加一个列表变量。


# 所有名片记录的列表
card_list = []

注意

  1. 所有名片相关操作均需使用该列表,因此应定义在程序顶部。
  2. 程序刚运行时没有数据,因此初始化为空列表。

3.1 功能分析

  1. 提示用户依次输入名片信息。
  2. 将名片信息保存到一个字典中。
  3. 将字典添加到名片列表。
  4. 提示名片添加完成。

3.2 实现 new_card 方法

  • 根据步骤实现代码。

def new_card():

  """新建名片
  """
  print("-" * 50)
  print("功能:新建名片")

  # 1. 提示用户输入名片信息
  name = input("请输入姓名:")
  phone = input("请输入电话:")
  qq = input("请输入 QQ 号码:")
  email = input("请输入邮箱:")

  # 2. 将用户信息保存到一个字典
  card_dict = {"name": name,
         "phone": phone,
         "qq": qq,
         "email": email}

  # 3. 将用户字典添加到名片列表
  card_list.append(card_dict)

  print(card_list)
  
  # 4. 提示添加成功信息
  print("成功添加 %s 的名片" % card_dict["name"])

技巧:在 PyCharm 中,可使用 SHIFT + F6 统一修改变量名。

4.1 功能分析

  • 循环遍历名片列表,顺序显示每一个字典的信息。

4.2 基础代码实现


def show_all():

  """显示全部
  """
  print("-" * 50)
  print("功能:显示全部")

  for card_dict in card_list:

    print(card_dict)
    
  • 显示效果不佳。

4.3 增加标题和使用 \t 显示


def show_all():
  """显示全部
  """
  print("-" * 50)
  print("功能:显示全部")

  # 打印表头
  for name in ["姓名", "电话", "QQ", "邮箱"]:
    print(name, end="\t\t")

  print("")

  # 打印分隔线
  print("=" * 50)

  for card_dict in card_list:

    print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                    card_dict["phone"],
                    card_dict["qq"],
                    card_dict["email"]))

4.4 增加没有名片记录的判断


def show_all():
  """显示全部
  """
  print("-" * 50)
  print("功能:显示全部")

  # 1. 判断是否有名片记录
  if len(card_list) == 0:
    print("提示:没有任何名片记录")

    return

注意

  • 在函数中使用 return 表示返回。
  • 若在 return 后未跟任何内容,仅表示该函数执行到此不再执行后续代码。

5.1 功能分析

  1. 提示用户输入要搜索的姓名。
  2. 根据用户输入的姓名遍历列表。
  3. 搜索到指定名片后,再执行后续操作。

5.2 代码实现

  • 查询功能实现

def search_card():

  """搜索名片
  """
  print("-" * 50)
  print("功能:搜索名片")

  # 1. 提示要搜索的姓名
  find_name = input("请输入要搜索的姓名:")

  # 2. 遍历字典
  for card_dict in card_list:

    if card_dict["name"] == find_name:

      print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱")
      print("-" * 40)
      
      print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
        card_dict["name"],
        card_dict["phone"],
        card_dict["qq"],
        card_dict["email"]))

      print("-" * 40)
      
      # TODO(小明) 针对找到的字典进行后续操作:修改/删除

      break
  else:
    print("没有找到 %s" % find_name)

增加名片操作函数:修改/删除/返回主菜单


def deal_card(find_dict):

  """操作搜索到的名片字典

  :param find_dict:找到的名片字典
  """
  print(find_dict)

  action_str = input("请选择要执行的操作 "
            "[1] 修改 [2] 删除 [0] 返回上级菜单")

  if action == "1":
    print("修改")
  elif action == "2":
    print("删除")

6.1 查询成功后删除名片

  • 由于找到的字典记录已在列表中保存。
  • 要删除名片记录,只需将列表中对应的字典删除即可。

  elif action == "2":
    card_list.remove(find_dict)

    print("删除成功")

由于找到的字典记录已在列表中保存。

  • 要修改名片记录,只需将列表中对应的字典中每个键值对的数据修改即可。

  if action == "1":

    find_dict["name"] = input("请输入姓名:")
    find_dict["phone"] = input("请输入电话:")
    find_dict["qq"] = input("请输入QQ:")
    find_dict["email"] = input("请输入邮件:")

    print("%s 的名片修改成功" % find_dict["name"])

修改名片细化

  • 若用户在使用时,某些名片内容不想修改,应如何处理?—— 既然系统提供的 input 函数不能满足需求,则新定义一个函数 input_card_info 对系统的 input 函数进行扩展。

def input_card_info(dict_value, tip_message):

  """输入名片信息

  :param dict_value: 字典原有值
  :param tip_message: 输入提示信息
  :return: 如果输入,返回输入内容,否则返回字典原有值
  """
  # 1. 提示用户输入内容
  result_str = input(tip_message)

  # 2. 针对用户的输入进行判断,如果用户输入了内容,直接返回结果
  if len(result_str) > 0:

    return result_str
  # 3. 如果用户没有输入内容,返回 `字典中原有的值`
  else:

    return dict_value

  • #! 符号叫做 Shebang 或者 Sha-bang
  • Shebang 通常在 Unix 系统脚本的第一行开头使用。
  • 指明执行这个脚本文件的解释程序。

使用 Shebang 的步骤

    1. 使用 which 查询 python3 解释器所在路径。

$ which python3

修改要运行的主 python 文件,在第一行增加以下内容。


#! /usr/bin/python3

修改主 python 文件的文件权限,增加执行权限。


$ chmod +x cards_main.py

在需要时执行程序即可。


./cards_main.py

关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《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 算法库。