python写名片管理系统_Python实现名片管理系统

本文实例为大家分享了Python实现名片管理系统的具体代码,供大家参考,具体内容如下

目标

综合应用已经学习过的知识点:

变量

流程控制

函数

模块

系统需求

1. 程序启动,显示名片管理系统欢迎界面,并显示功能菜单

2020214143630466.jpg

2 用户用数字选择不同的功能

3. 根据功能选择,执行不同的功能

4. 用户名片需要记录用户的 姓名、电话、QQ、邮件

5. 如果查询到指定的名片,用户可以选择修改或者 删除 名片

文件准备

新建 cards_main.py 保存主程序功能代码

新建cards_tools.py保存所有名片功能函数

代码

cards_main.py :

# encoding:utf-8

_date_ = "2020/2/8 12:17"

import cards_tools

while True:

# 显示功能菜单

cards_tools.caidan()

xuanze=input("请选择希望操作的功能:")

print("您选择的操作是【%s】" % xuanze)

# 如果用户输入的是1,2,3则是针对名片的操作

if xuanze in ["1","2","3"]:

# 新增名片处理

if xuanze=="1":

cards_tools.zengjia()

# 显示全部名片

elif xuanze=="2":

cards_tools.xianshi()

# 查询和修改名片操作

elif xuanze=="3":

cards_tools.sousuo()

# 如果用户输入的是0则退出系统

elif xuanze=="0":

print("正在退出,期待您再次使用【名片管理系统】!")

break

# 如果用户输入别的内容则提示输入有误

else:

print("您输入的不正确,请重新选择!!!")

cards_tools.py :

# encoding:utf-8

_date_ = "2020/2/8 12:32"

# 记录所有的名片字典

card_list = []

def caidan():

"""显示菜单"""

print("*"*39)

print("欢迎使用【名片管理系统】v1.0")

print("")

print("1.新增名片")

print("2.显示全部")

print("3.查询名片")

print("")

print("0.退出系统")

print("*" * 39)

def zengjia():

"""新增名片"""

print("-" * 39)

print("新增名片")

# 1.提示用户输入名片的详细信息

name = input("请输入姓名:")

phone = input("请输入电话号码:")

qq = input("请输入QQ号码:")

email = input("请输入邮箱地址:")

# 2.使用用户输入的信息建立一个名片字典

card_dict = {"姓名":name,

"电话":phone,

"QQ":qq,

"邮箱":email

}

# 3.将名片字典添加到列表

card_list.append(card_dict)

# print(card_list)

# 4.提示用户添加成功

print("添加%s的名片成功!" % name)

def xianshi():

"""显示所有名片"""

print("-" * 39)

print("显示所有名片")

if len(card_list)==0:

print("当前没有任何名片记录,请使用新增名片功能添加新名片!")

# return可以返回一个函数的执行结果

# 下方的代码不会被执行

# 如果return后面没有任何的内容,表示会返回到调用函数的位置

# 并且不返回任何的结果

return

# 打印表头

for biaotou in["姓名","电话","QQ","邮箱"]:

print(biaotou,end="\t\t")

print("")

# 打印分割线

print("=" * 39)

# 遍历名片列表依次输出字典信息

for i in card_list:

print("%s\t\t%s\t\t%s\t\t%s"%(i["姓名"],

i["电话"],

i["QQ"],

i["邮箱"]))

def sousuo():

"""搜索名片"""

print("-" * 39)

print("搜索名片")

# 1.提示用户输入要搜索的姓名

find_name=input("请输入要搜索的姓名:")

# 2.遍历名片列表,查询要搜索的姓名,如果没有找到,需要提示用户

for i in card_list:

if i["姓名"]==find_name:

print("姓名\t\t电话\t\tQQ\t\t邮箱")

print("="*39)

print("%s\t\t%s\t\t%s\t\t%s" % (i["姓名"],

i["电话"],

i["QQ"],

i["邮箱"]))

# 针对找到的名片记录执行修改和删除的操作

deal_card(i)

break

else:

print("抱歉,没有找到%s,请重新输入!"%find_name)

def deal_card(find_dict):

"""

处理查找到的名片

:param find_dict:查找到的名片

"""

# print(find_dict)

action_str = input("请选择要执行的操作1.修改 2.删除 0.返回上级菜单:")

if action_str=="1":

find_dict["姓名"]=input_card_info(find_dict["姓名"],"请输入要修改的姓名:")

find_dict["电话"] = input_card_info(find_dict["电话"],"请输入要修改的电话:")

find_dict["QQ"] = input_card_info(find_dict["QQ"],"请输入要修改的QQ:")

find_dict["邮箱"] = input_card_info(find_dict["邮箱"],"请输入要修改的邮箱:")

print("修改名片成功!")

elif action_str=="2":

card_list.remove(find_dict)

print("删除【%s】名片成功!" %find_dict["姓名"])

def input_card_info(dict_value,tip_message ):

"""

输入名片信息

:param dict_value:字典中原有值

:param tip_message: 输入的提示文字

:return: 如果用户输入了内容,就返回内容,否则返回字典中原有值

"""

# 1.提示用户输入内容

result_str = input(tip_message)

# 2.针对用户输入进行判断,如果用户输入了内容,直接返回结果

if len(result_str)>0:

return result_str

# 3.如果用户没有输入内容,返回“字典中的原有值”

else:

return dict_value

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持python博客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员面试金典 - 面试题 17.24. 最大子矩阵(转成一维最大子序和 DP)

文章目录1. 题目2. 解题2.1 前缀和(超时)2.2 动态规划1. 题目 给定一个正整数和负整数组成的 N M 矩阵,编写代码找出元素总和最大的子矩阵。 返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号&…

解决mysql表被crash的一次维护始末

有客户反馈BOSS系统无法查询到6月28日以后的话单纪录,查询数据库后发现在执行对原始话单表执行查询时候偶尔出现 Table ***** is marked as crashed and should be repaired. 确定计费无误后决定在下班后执行对表的修复…

ICLR盲审阶段就被评审赞不绝口的论文:会是Transformer架构的一大创新吗?

编|杜伟、陈萍源|机器之心首次!无残差连接或归一化层,也能成功训练深度transformer。尽管取得了很多显著的成就,但训练深度神经网络(DNN)的实践进展在很大程度上独立于理论依据。大多数成功的现…

python自带的shell、其性能优于ipython_python3.4 shell

实验1 目的和要求(1) (2) (3) (4) (5) (6) (7) 开始 python 编程 了解什么是 python? 了解 python 的特性 学习下载和安装 python 学习执行 python ...... (2) 了解 python 的特性 (3) 学习下载和安装 python (4) 学习执行 python 命令和脚本文件的方法 (5) 学习 python 语音的…

程序员面试金典 - 面试题 08.13. 堆箱子(DP)

1. 题目 堆箱子。给你一堆n个箱子,箱子宽 wi、深 di、高 hi。 箱子不能翻转,将箱子堆起来时,下面箱子的宽度、高度和深度必须大于上面的箱子。 实现一种方法,搭出最高的一堆箱子。箱堆的高度为每个箱子高度的总和。 输入使用数组…

一篇文章带你了解国企程序员(超详细)

源|Hollis、国企程序锅最近互联网大厂裁员不断,今天为大家带来了一篇超详细国企程序员攻略。文章目录入职国企心得体会一、入职前二、入职后三、工作开发内容四、钱总结:北京户口相关问题一、北京户口咋获得?二、北京户口有啥用&a…

Delphi作为客户端调用.Net写的WCF服务端?

这方面的文章太少了,查了半天也只看到一两篇,关键点 1.wcf的Binding要配成 basicHttpBinding,否则Delphi无法通过WebService的方式调用服务 2.Delphi IDE中的导入WSDL和安装目录下的wsdlimp.exe都无法正确识别WCF消息,需要到网上下…

html表单代码例子_关于React的这些细节,你知道吗?-表单

在 React 里,HTML 表单元素的工作方式和其他的 DOM 元素有些不同,这是因为表单元素通常会保持一些内部的 state。例如这个纯 HTML 表单只接受一个名称:此表单具有默认的 HTML 表单行为,即在用户提交表单后浏览到新页面。如果你在 …

程序员面试金典 - 面试题 17.23. 最大黑方阵(DP)

1. 题目 给定一个方阵,其中每个单元(像素)非黑即白。 设计一个算法,找出 4 条边皆为黑色像素的最大子方阵。 返回一个数组 [r, c, size] ,其中 r, c 分别代表子方阵左上角的行号和列号,size 是子方阵的边长。 若有多个满足条件的…

js的oop方式和this指针问题

js的oop其实很简单,function本身就充当了类和构造函数的角色。然后通过传给构造函数的参数,完成类属性的赋值,从而实际化不同的对象。可是,js的oop也有很让人头疼的地方,其中之一就是this的指向。在js中,普…

史诗级学术骗局!一博士狂编 200 多篇论文,被揭发后畏罪自杀....

源|募格学术一博士狂编200多篇论文,被揭发后畏罪自杀,可他造成的撤稿影响直至今日还在继续,更有人称其的造假为科学史上最大的学术骗局之一。狂编200多篇论文发表,这个博士有点狠在著名学术打假网站 Retraction Watch …

docker安装_Docker安装

简介:Docker是一个供开发人员和系统管理员通过容器的方式构建、运行和共享应用程序的平台,通过容器的方式部署应用(打包成标准化单元,类似于一个集装箱),具有安全、灵活、轻量、松耦合、可移植、可扩展等特点。概念:仓…

LeetCode 1139. 最大的以 1 为边界的正方形(DP)

1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0。 示例 1: 输入:grid [[1,1,1],[1,0,1],[1,1,1]] 输出&…

大幅超越DALL·E 2和Imagen,斯坦福发布RA-CM3模型,融合检索与生成

文|QvQ最近,DALL-E和CM3等模型在多模态任务尤其是图文理解上表现出色。然而,这些模型似乎需要将所有学到的知识存储都存储在模型参数中,这就不得不需要越来越大的模型和训练数据来获取更多的知识,俨然将bigger and bet…

什么是域名服务器(DNS)

问题:什么是域名服务器?域名服务器是什么意思? 域名服务器即DNS,全称是Domain Name Server,一种程序,它保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。…

python判断正负的函数_Python |在计算操作的函数内将负数转换为正数?

我一直在寻找将负数转换为正数,我发现了一些东西,但没有成功.. 这是一个来自在线Python页面的练习,我正在学习Python。 我希望你明白这一点。 这是去洛杉矶旅行,我用功能计算钱,但现在有一个问题,我“从洛杉…

LeetCode 1325. 删除给定值的叶子节点(递归)

1. 题目 给你一棵以 root 为根的二叉树和一个整数 target ,请你删除所有值为 target 的 叶子节点 。 注意,一旦删除值为 target 的叶子节点,它的父节点就可能变成叶子节点; 如果新叶子节点的值恰好也是 target ,那么…

[翻译] python Tutorial 之一

声明:本文做为IronPython-2.0 B3的Tutorial 中文译文,内容全部来自其英文原文,其中本人认为存在疑问的或翻译不当之处会用原文中的内容加以标记,且本文内容完全用于研 究和学习IronPython 之用,限于本人英文翻译功底有…

用python控制钉钉软件_Python—实现钉钉后台开发

二、实现钉钉免登流程 免登流程分四步:1、前端获取钉钉免登授权码code;2、后端获取access_token;3、使用授权码code和access_token换取用户userid;4、通过access_token和userid换取用户详情userinfo。 前端获取授权码code。// 获取…

LeetCode 1123. 最深叶节点的最近公共祖先(递归比较子树高度)

1. 题目 给你一个有根节点的二叉树,找到它最深的叶节点的最近公共祖先。 回想一下: 叶节点 是二叉树中没有子节点的节点树的根节点的 深度 为 0,如果某一节点的深度为 d,那它的子节点的深度就是 d1如果我们假定 A 是一组节点 S…