详解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 PyTorch预训练示例
Feb 11 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
Dec 12 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
Python控制键盘鼠标pynput的详细用法
Jan 28 Python
用pycharm开发django项目示例代码
Jun 13 Python
python的sorted用法详解
Jun 25 Python
python中web框架的自定义创建
Sep 08 Python
Python: 传递列表副本方式
Dec 19 Python
python序列化与数据持久化实例详解
Dec 20 Python
Python实现猜年龄游戏代码实例
Mar 25 Python
Python编写单元测试代码实例
Sep 10 Python
python语言中pandas字符串分割str.split()函数
Aug 05 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
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
实例讲解php实现多线程
2019/01/27 PHP
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
js实现简单的倒计时
2021/01/28 Javascript
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
python plotly画柱状图代码实例
2019/12/13 Python
tornado+celery的简单使用详解
2019/12/21 Python
Python实现汇率转换操作
2020/05/03 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
职业规划书如何设计?
2014/01/09 职场文书
财经学院自荐信范文
2014/02/02 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
小学语文业务学习材料
2014/06/02 职场文书
视光学专业自荐信
2014/06/24 职场文书
学位证书委托书
2014/09/30 职场文书
文体活动总结
2015/02/04 职场文书
国庆节慰问信
2015/02/15 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
德生2P3收音机开箱评测
2022/04/30 无线电