详解Python做一个名片管理系统


Posted in Python onMarch 14, 2019

名片管理系统有两个模块组成:cards_main.py cards_tools.py一个是主程序,另一个是封装增删改查函数的被调用程序

代码如下

cards_main.py

#! /usr/bin/python
# -*- coding:utf-8 -*-
import cards_tools

# 无限循环,用户决定什么时候退出循环!
while True:
 # TODO(作者) 显示功能菜单
 # TODO 提醒要做的事情
 cards_tools.show_menu()

 action_str = raw_input('请选择希望执行的操作:')
 print '您选择的操作是【%s】' %action_str

 # 1,2,3针对名片的操作
 if action_str in ['1', '2', '3']:
  pass
  #新增名片
  if action_str == '1':
   cards_tools.new_card()
  #显示全部
  elif action_str == '2':
   cards_tools.show_all()
  #查询名片
  elif action_str == '3':
   cards_tools.search_card()

 # 0 退出系统
 elif action_str == '0':
  print '欢迎再次使用名片系统'
  #如果暂时不想写分支代码
  #可以用pass
  break
 # 其他内容错误,提示用户
 else:
  print '您输入的不正确,请重新选择'

cards_tools.py

cards_tools.py

# -*- coding:utf-8 -*-

#用列表记录所有名片字典
card_list = []


def show_menu():

 """显示菜单"""
 print '*'*50
 print '欢迎使用【名片管理系统 v1.0】'
 print ''
 print '1. 新增名片'
 print '2. 显示全部'
 print '3. 搜索名片'
 print '0. 退出系统'
 print '*'*50


def new_card():

 """新增名片"""
 print '新增名片'
 # 1. 提示用户输入名片的详细信息
 name_str = raw_input('请输入姓名:')
 phone_str = raw_input('请输入电话:')
 qq_str = raw_input('请输入QQ:')
 email_str = raw_input('请输入邮箱:')

 # 2. 使用用户输入信息建立一个字典
 card_dic = {'name': name_str,
    'phone': phone_str,
    'qq': qq_str,
    'email': email_str
 }

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

 # 4. 提示用户添加成功
 print '用户 %s 添加成功' %name_str


def show_all():

 """展示所有名片"""
 print '展示所有名片'

 # 如果没有任何名片
 if len(card_list) == 0:
  print '当前没有任何名片'

  # return可以返回结果给函数
  # 也可以直接结束函数
  # return后的代码不执行
  return

 # 打印表头
 for head in ['姓名', '电话','QQ', '邮箱']:
  print '%s\t\t' % head,
 print ''

 for card_dic in card_list:
  print '%s\t\t%s\t\t%s\t\t%s\t\t' % (card_dic['name'], card_dic['phone'], card_dic['qq']
           , card_dic['email'])
 print ''


def search_card():

 """搜索名片"""
 print '搜索名片'

 # 1. 提示用户要搜索的姓名
 find_name = raw_input('请输入你要搜索的姓名:')

 # 2. 遍历列表进行查询,如果没有则提示用户
 for card_dic in card_list:
  if card_dic['name'] == find_name:
   print '找到了 %s' % find_name
   print '%s\t\t%s\t\t%s\t\t%s\t\t' % (card_dic['name'], card_dic['phone'], card_dic['qq']
            , card_dic['email'])

   # 针对找到的记录进行修改和删除
   deal_card(card_dic)
   break
 else:
  print '没有找到 %s' % find_name


def deal_card(find_dic):

 """
 处理找到的名片,进行修改和删除
 :param find_dic: 找到的字典名片
 """
 print find_dic

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

 if action_str == '1':

  input_card_info(find_dic['name'], '姓名:')
  input_card_info(find_dic['phone'], '电话:')
  input_card_info(find_dic['qq'], 'QQ:')
  input_card_info(find_dic['email'], '邮箱:')

  print '修改名片成功'

 elif action_str == '2':
  card_list.remove(find_dic)
  print '删除名片成功'


def input_card_info(dic_value, tip_message):
 """输入名片信息

 :param dic_value:字典原有值
 :param tip_message:输入的提示文字
 :return :返回修改后的值,如果没有输入则返回原值
 """
 result_str = raw_input(tip_message)
 # if len(result_str) > 0:
 #  return result_str
 # # 3. 如果用户没有输入,则用原来的值
 # else:
 #  return dic_value
 if len(result_str) > 0:
  dic_value = result_str
 else:
  dic_value = dic_value

以上所述是小编给大家介绍的Python如何做一个名片管理系统详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python Web框架Pylons中使用MongoDB的例子
Dec 03 Python
python学习之第三方包安装方法(两种方法)
Jul 30 Python
Python3实现购物车功能
Apr 18 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
python使用requests.session模拟登录
Aug 09 Python
Python 日期的转换及计算的具体使用详解
Jan 16 Python
python画图常规设置方式
Mar 05 Python
Python IDE环境之 新版Pycharm安装详细教程
Mar 05 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
在Python中使用Neo4j的方法
Mar 14 #Python
浅谈Python中eval的强大与危害
Mar 13 #Python
详解python中init方法和随机数方法
Mar 13 #Python
Python使用sqlalchemy模块连接数据库操作示例
Mar 13 #Python
python ---lambda匿名函数介绍
Mar 13 #Python
Python实现的列表排序、反转操作示例
Mar 13 #Python
Python实现的调用C语言函数功能简单实例
Mar 13 #Python
You might like
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
图解上海144收音机
2021/03/02 无线电
服务器web工具 php环境下
2010/12/29 PHP
php编程每天必学之表单验证
2016/03/01 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
2011/03/25 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
angularjs中的单元测试实例
2014/12/06 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
javascrpt密码强度校验函数详解
2020/03/18 Javascript
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
Python3远程监控程序的实现方法
2019/07/15 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
python脚本后台执行方式
2019/12/21 Python
Python classmethod装饰器原理及用法解析
2020/10/17 Python
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
四年大学生活的个人自我评价
2013/12/11 职场文书
军训自我鉴定100字
2014/02/13 职场文书
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript