python实现一个函数版的名片管理系统过程解析


Posted in Python onAugust 27, 2019

本案例使用了自定义函数以及对字符串的常见操作、判断语句和循环语句等知识。

要求

必须使用自定义函数,完成对程序的模块化。

名片信息至少包括:姓名、电话、住址。

必须完成的功能:增、删、改、查、退出。

分析

首先呢,我们应该先定义一个全局变量,用于存储所有的名片信息。

cards = [{
  "name": "张三",
  "phone": "10086",
  "address": "山西省",
}, {
  "name": "李四",
  "phone": "10010",
  "address": "北京市",
}] # 定义一个的列表用于存放名片信息,默认里面有张三和李四的信息,方便以后调试用。

完成增加,删除,修改,查找等相关操作的函数(cards是可变类型的全局变量,故在函数中不用加global也可调用),注意:如定义变量 a: int = 0, int只是单纯的提示开发人员它的类型是int,方便调试。

def print_menu():
  """"完成打印功能菜单"""
  print("=" * 20)
  print("  名片管理系统")
  print(" 1:添加一个名片")
  print(" 2:删除一个名片")
  print(" 3:修改一个名片")
  print(" 4:查询一个名片")
  print(" 5:显示所有的名片")
  print(" 6:退出")
  print("=" * 20)


def add_card():
  """完成添加一个名片的功能"""
  new_infor: dict = {
    "name": input("请输入一个名字:"), 
    "phone": input("请输入一个电话:"), 
    "address": input("请输入一个地址:")
  }
  cards.append(new_infor)
  print("添加成功!")


def delete_card():
  del_name = input("请输入要删除的名字:")
  for person in cards:
    if del_name == person["name"]:
      cards.remove(person)
      print("删除成功!")
      break
  else:
    print("找不到要删除的人!")


def update_card():
  name: str = input("请输入要修改的名字(只能通过名字来修改电话和住址):")
  for person in cards:
    if name == person["name"]:
      phone = input("请输入新的的电话(直接回车则不修改):")
      address = input("请输入新的的地址(直接回车则不修改):")
      if phone:
        person["phone"] = phone
      if address:
        person["address"] = address
      print("修改成功")
      break
  else:
    print("找不到要修改的人!")


def find_card():
  """用来查询一个名片"""

  find_name: str = input("请输入要查询的名字(支持模糊查询):")
  flag: int = 1
  for temp in cards:
    # 遍历名片中的所有名字,判断要查找的名字是否存在,不存在则打印查无此人
    if temp["name"].find(find_name) != -1:
      print("%s\t%s\t%s" % (temp["name"], temp["phone"], temp["address"]))
      flag = 0
  if flag:
    print("查无此人")


def show_all():
  print("姓名\t电话\t住址")
  for temp in cards:
    print("%s\t%s\t%s" % (temp["name"], temp["phone"], temp["address"]))

最后完成主函数的功能,并调用主函数

def main():
  """"完成对整个程序的控制"""
  # 打印功能提示
  print_menu()
  while True:
    # 获取用户的选择
    num: str = input("请输入功能序号:")
    # 判断输入的是否为数字
    if not num.isdigit():
      print("请输入数字!")
      continue
    # 转换成数字类型
    num: int = int(num)
    # 增
    if num == 1:
      add_card()
    # 删
    elif num == 2:
      delete_card()
    # 改
    elif num == 3:
      update_card()
    # 查
    elif num == 4:
      find_card()
    elif num == 5:
      show_all()
    elif num == 6:
      break
    else:
      print("请按号输入!")
    print()

# 调用主函数
if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
Dec 14 Python
Python实现计算两个时间之间相差天数的方法
May 10 Python
详解python eval函数的妙用
Nov 16 Python
Python实现mysql数据库更新表数据接口的功能
Nov 19 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
python制作抽奖程序代码详解
Jan 15 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 Python
python获取对象信息的实例详解
Jul 07 Python
python中下标和切片的使用方法解析
Aug 27 #Python
python使用if语句实现一个猜拳游戏详解
Aug 27 #Python
Python socket 套接字实现通信详解
Aug 27 #Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 #Python
手写一个python迭代器过程详解
Aug 27 #Python
浅析Python语言自带的数据结构有哪些
Aug 27 #Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
Aug 27 #Python
You might like
PHP.MVC的模板标签系统(五)
2006/09/05 PHP
建立动态的WML站点(三)
2006/10/09 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
python基础知识小结之集合
2015/11/25 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
python保存文件方法小结
2018/07/27 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
通用员工手册范本
2015/05/14 职场文书
人民的好儿女观后感
2015/06/18 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android