社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
以下就是一个名片管理系统的具体功能:有添加名片,显示已添加的名片,搜索名片这几个功能,并且中间能够提供差异化处理,例如查找名片的时候可以根据不同的信息去查找,也可以综合所有信息查找。下面我将具体介绍整个系统是如何搭建起来的。
当我们要完成一个项目的时候,第一件事应该就是有一个总体的规划,就像是我们高中写作文的时候,老师不是都让我们先列个提纲的嘛,有了提纲,就有了写作的方向。完成一个Python项目也是一样,要先有一个大体的框架,这个程序我们要实现什么功能,有什么功能,每个功能要怎么来完成,需要什么辅助的东西,包啊,插件啊,数据库啊等等。万丈高楼平地起,如果不事先有个规划,到真正做起来的时候一定会手忙脚乱。特别是当你走上了工作的岗位,开发大型的复杂的项目的时候,一上来就直接敲代码是绝对不行的。
就这个名片管理系统得话:首先展示在用户眼中应该是最开始的这个界面,后续所有的操作都是在这个的基础上完成的。新增名片是一个模块,显示全部是一个模块,搜索名片也是一个模块,也就是一个函数,用户想执行什么操作,就调用那个模块的函数来完成,这就是一个大体的框架,后面我们就需要根据不同的模块来编写具体的代码。
这就是一个主函数的代码,我们所要执行的具体功能都封装在cards_tools模块中。
import cards_tools
# 无限循环,由用户主动决定什么时候退出循环
while True:
# 显示功能菜单
cards_tools.show_menu()
action_str = input("请选择希望执行的操作: ")
print("您选择的操作是【%s】" % action_str)
# 1,2,3针对名片的操作
if action_str in ["1", "2", "3"]:
# 新增名片
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("欢迎再次使用【名片管理系统】")
break
# 如果在开发程序时,不希望立刻编写分支内部的代码
# 可以使用 pass 关键字,表示一个占位符,能过保证程序的代码结构正确
# 程序执行时,pass关键字不会执行任何的操作
# 其他内容输入错误,需要提示用户
else:
print("您输入的不正确,请重新选择")
在主界面显示欢迎信息。代码如下:
def show_menu():
"""显示菜单"""
print("*" * 50)
print("欢迎使用【名片管理系统】v1.0")
print("")
print("1.新增名片")
print("2.显示全部")
print("3.搜索名片")
print("")
print("0.退出系统")
print("*" * 50)
新添加一个人的名片,需要哪些信息呢?姓名,电话,QQ账号,邮箱地址。我们把每个单独的信息作为一个字符串,然后一个人的所有信息放在一个字典中,所有人的信息放在一个列表中,这样是不是显得很有条理,后面处理起来也更加的方便。
def new_card():
"""新增名片"""
print("-" * 50)
print("新增名片")
# 1.提示用户输入名片的详细信息
name_str = input("请输入姓名: ")
phone_str = input("请输入电话: ")
qq_str = input("请输入QQ: ")
email_str = input("请输入邮箱: ")
# 2.使用用户输入的信息建立一个名片字典
card_dict = {"name": name_str,
"phone": phone_str,
"qq": qq_str,
"email": email_str}
# 3.将名片字典添加到列表中
card_list.append(card_dict)
# print(card_list)
# 4.提示用户添加成功
print("添加%s的明片成功!" % name_str)
按照姓名,电话,QQ,邮箱的顺序依次显示每一个人的信息。
ef show_all():
"""显示所有名片"""
print("-" * 50)
print("显示所有名片")
# 判断是否存在名片记录,如果没有,提示用户并且返回
if len(card_list) == 0:
print("当前没有任何名片记录,请使用新增功能添加名片! ")
# return 可以返回一个函数的执行结果
# 下方的代码不会被执行
# 如果return 后面没有任何的内容,表示会返回到调用函数的位置
# 并且不返回任何的结果
return
# 打印表头
for name in ["姓名", "电话", "QQ", "邮箱"]:
print(name, end="tt")
print("")
# 打印分隔线
print("=" * 50)
# 遍历名片列表依次输出所有信息
for card_dict in card_list:
print("%stt%stt%stt%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
搜索名片这里特别需要注意的是:如果用户不知道姓名,只知道邮箱,该怎么去搜索呢?我们在搜索模块里面设计了一个新的输入函数,如果用户输入为空,就是直接回车得话,直接跳到下一个信息选项,目前只能搜索不相同的信息,后面我会继续改进,这个地方是我新加入的,可能会有bug。
def search_card():
"""搜索名片"""
print("-" * 50)
print("搜索名片")
# 1.提示用户输入要搜索的姓名
find_name = input_search_info("请输入要搜索的姓名: ")
find_phone = input_search_info("请输入要搜索的电话: ")
find_qq = input_search_info("请输入要搜索的qq: ")
find_email = input_search_info("请输入要搜索的邮箱: ")
# 2.遍历名片列表,查询要搜索的姓名,如果没有找到,需要提示用户
for card_dict in card_list:
search("name", find_name)
search("phone", find_phone)
search("qq", find_qq)
search("email", find_email)
def input_search_info(tip_message):
result_str = input(tip_message)
if len(result_str) > 0:
return result_str
else:
pass
def search(infomation, find_info):
for card_dict in card_list:
if card_dict[infomation] == find_info:
print("姓名tt电话ttQQtt邮箱")
print("=" * 50)
print("%stt%stt%stt%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
# 针对找到的名片记录执行修改和删除的操作
deal_card(card_dict)
break
这里是对查找到的名片进行增删改除的操作,同样需要注意的是如果用户不想改直接按回车的问题。
def deal_card(find_dict):
"""
处理查找到的名片
:param find_dict: 查找到的名片
"""
action_str = input("请选择要执行的操作"
" [1] 修改 [2] 删除 [0] 返回上级菜单")
if action_str == "1":
find_dict["name"] = input_card_info(find_dict["name"], "姓名: ")
find_dict["phone"] = input_card_info(find_dict["phone"], "电话: ")
find_dict["qq"] = input_card_info(find_dict["qq"], "QQ: ")
find_dict["email"] = input_card_info(find_dict["email"], "邮箱: ")
print("修改名片成功!")
if action_str == "2":
card_list.remove(find_dict)
print("删除名片成功!")
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
以上就是一个完整的名片管理系统所需要的所有功能了!
刚看了我们院17级辅导员恕姐的日志,然后思考了一下自己的人生,面临考研就业的我们真的需要提升自己啊!在我们面前的时间不多了,真的需要好好努力了!
我前面的博客已经说了,我是看it黑马的教程学的Python,所以其中的很多代码都有借鉴,当然我自己也有一些改进的地方,纯属自己记录自己的学习历程,没有剽窃之意!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!