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 相关文章推荐
在 Django/Flask 开发服务器上使用 HTTPS
Jul 03 Python
Python解析树及树的遍历
Feb 03 Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
python实现简单遗传算法
Mar 19 Python
python爬虫租房信息在地图上显示的方法
May 13 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
Jun 04 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
分享一个pycharm专业版安装的永久使用方法
Sep 24 Python
python反编译教程之2048小游戏实例
Mar 03 Python
python办公自动化之excel的操作
May 23 Python
Python编程super应用场景及示例解析
Oct 05 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
对javascript和select部件的结合运用
2006/10/09 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
php实现的二分查找算法示例
2017/06/20 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
查看大图功能代码jquery版
2013/11/05 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
判断在css加载完毕后执行后续代码示例
2014/09/03 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
python+opencv轮廓检测代码解析
2018/01/05 Python
numpy 声明空数组详解
2019/12/05 Python
Python count函数使用方法实例解析
2020/03/23 Python
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
2016/04/26 HTML / CSS
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
解释一下抽象方法和抽象类
2016/08/27 面试题
大学军训通讯稿
2014/01/13 职场文书
单位介绍信范文
2014/01/18 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
普通大学毕业生自荐信范文
2014/02/23 职场文书
《画风》教学反思
2014/04/16 职场文书
大学新生入学教育方案
2014/05/16 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
县委务虚会发言材料
2014/10/20 职场文书