详解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 四种数值类型(int,long,float,complex)
Jun 08 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
python实现SOM算法
Feb 23 Python
深入分析python数据挖掘 Json结构分析
Apr 21 Python
利用ctypes获取numpy数组的指针方法
Feb 12 Python
详解用python写一个抽奖程序
May 10 Python
python的turtle库使用详解
May 10 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
用python批量下载apk
Dec 29 Python
一些让Python代码简洁的实用技巧总结
Aug 23 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版网站缓存加快打开速度的方法分享
2012/06/03 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
详谈PHP编码转换问题
2015/07/28 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
Javascript的一种模块模式
2008/03/22 Javascript
Div自动滚动到末尾的代码
2008/10/26 Javascript
javascript window对象属性整理
2009/10/24 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
js Date概念详细介绍
2013/11/22 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
Python学习小技巧之列表项的排序
2017/05/20 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
python八皇后问题的解决方法
2018/09/27 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
通过自学python能找到工作吗
2020/06/21 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
枚举与#define宏的区别
2014/04/30 面试题
财会专业毕业生自荐信
2014/07/09 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
本溪关门山导游词
2015/02/09 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript