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如何实现远程控制电脑(结合微信)
Dec 21 Python
Centos Python2 升级到Python3的简单实现
Jun 21 Python
浅谈终端直接执行py文件,不需要python命令
Jan 23 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
python实现简单登陆系统
Oct 18 Python
Python3几个常见问题的处理方法
Feb 26 Python
Python 200行代码实现一个滑动验证码过程详解
Jul 11 Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
Python-opencv实现红绿两色识别操作
Jun 04 Python
python 实现Harris角点检测算法
Dec 11 Python
python中requests库+xpath+lxml简单使用
Apr 29 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异步执行的详解
2013/06/03 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
Python 解析xml文件的示例
2020/09/29 Python
python Gabor滤波器讲解
2020/10/26 Python
Python中过滤字符串列表的方法
2020/12/22 Python
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
酷瑞网络科技面试题
2012/03/30 面试题
计算机开发个人求职信范文
2013/09/26 职场文书
个人找工作求职简历的自我评价
2013/10/20 职场文书
上课迟到检讨书
2014/01/19 职场文书
《搭石》教学反思
2014/04/07 职场文书
给病人的慰问信
2015/03/23 职场文书
2016年教师节慰问信
2015/12/01 职场文书
python自动计算图像数据集的RGB均值
2021/06/18 Python
浅谈Python从全局与局部变量到装饰器的相关知识
2021/06/21 Python
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL