名片管理系统v1.1

主执行文件cardsMain.py
#! /usr/bin/python3
# -*- conding:utf-8 -*-
# @Time: 2017/12/15 19:46
# @Author:Luke
import bcms.cardsTools
# 无限循环,由用户主动决定退出
while True:
bcms.cardsTools.showMenu()
# 显示功能菜单

# 让用户输入一个操作
actionStr = input("请选择希望执行的操作:")
print("您选择的操作是【%s】" % actionStr)

# 1,2,3 针对名片的操作
if actionStr in ["1","2","3"]:

# 1.新增名片
if actionStr == "1":
bcms.cardsTools.creatCard()
# 2.显示全部
elif actionStr == "2":
bcms.cardsTools.showCards()
# 3.查询名片
elif actionStr == "3":
bcms.cardsTools.searchCard()
# 0 退出系统
elif actionStr == "0":
print("欢迎再次使用【名片管理系统】")
break
# 如果开发程序,不希望立即编写分支内部的代码
# 可以使用pass,表示一个占用符,能够保证程序的代码结构正确!
# 程序运行时,pass 不会执行任何操作
# pass
# other其他内容输入错误,需要提示用户
else:
print("您输入的不正确,请重新选择!")

调用文件cardsTools.py
#! /usr/bin/python3
# -*- conding:utf-8 -*-
# @Time: 2017/12/15 19:46
# @Author:Luke
cardList = []


def showMenu():
"""
显示菜单信息
"""
print("*" * 50)
print("欢迎使用【名片管理系统】v1.0")
print("")
print("1.新增名片")
print("2.显示全部")
print("3.查询名片")
print("")
print("0.退出系统")
print("*" * 50)


def creatCard():
"""
新增名片
"""
print("-" * 50)
print("新增名片")

# 1.提示用户输入名片的详细信息
nameStr = input("请输入姓名:")
phoneStr = input("请输入电话号码:")
qqStr = input("请输入QQ号码:")
emailStr = input("请输入电子邮箱:")

# 2.使用用户输入的信息建立一个名片字典
cardDict = {"name":nameStr,
"phone":phoneStr,
"qq":qqStr,
"email":emailStr}

# 3.讲名片字典添加到列表中
cardList.append(cardDict)

# 4.提示用户添加成功
print("成功添加 %s 的名片!" % nameStr)


def showCards():
"""
显示所有名片
"""
print("-" * 50)
print("显示所有名片")
if len(cardList) == 0:
print("名片系统为空,请添加名片!")
# return 可以返回一个函数的执行结果,下方的代码不会被执行
# 如果return后面没有任何内容,表示会返回到调用函数的位置,并且不返回任何结果
return
# 打印表头
for name in ["姓名","电话号码","QQ号码","电子邮箱"]:
print(name,end="\t\t")
print("")
# 打印分割线
print("=" * 50)
for cardDict in cardList:
print("%s\t\t%s\t\t%s\t\t%s" % (cardDict["name"],
cardDict["phone"],
cardDict["qq"],
cardDict["email"]))


def searchCard():
"""
搜索名片
"""
print("-" * 50)
print("查询名片")
# 1.提示用户输入要搜索的姓名
findName = input("请输入要搜索的姓名:")
# 2.遍历名片列表,查询要搜索的姓名,如果没有找到,需要提示用户没有找到
for cardDict in cardList:
if findName == cardDict["name"]:
print("找到 %s 这个用户" % findName)
print("姓名\t\t电话号码\t\tQQ号码\t\t电子邮箱")
print("=" * 50)
print("%s\t\t%s\t\t%s\t\t%s" % (cardDict["name"],
cardDict["phone"],
cardDict["qq"],
cardDict["email"]))
# 针对找到的名片记录执行修改和删除的操作
dealCard(cardDict)
break
else:
print("非常抱歉!没有找到 %s 这个名片记录" % findName)


def dealCard(findDict):
"""
处理名片记录,修改和删除名片
:param findDict: 查找到的名片
"""
print(findDict)
actionStr = input("请选择要执行的操作 "
"[1] 修改 [2] 删除 [0] 返回主菜单")
if actionStr == "1":
# 修改名片,调用input_card_info函数对用户输入做判断
findDict["name"] = input_card_info(findDict["name"],"请输入姓名:")
findDict["phone"] = input_card_info(findDict["phone"],"请输入电话号码:")
findDict["qq"] = input_card_info(findDict["qq"],"请输入QQ号码:")
findDict["email"] = input_card_info(findDict["email"],"请输入电子邮箱:")
print("修改名片成功!")

elif actionStr == "2":
# 删除名片
cardList.remove(findDict)
print("删除名片 %s 成功" % findDict["name"])


def input_card_info(dictValue,tipMessage):
"""
对用户输入的值做判断
:param dictValue:字典中原有的值
:param tipMessage: 用户输入的值
:return: 如果用户输入内容就返回输入的内容,如果回车没有输入内容就返回原有的值
"""
# 1.提示用户输入内容
result_str = input(tipMessage)
# 2.针对用户输入的进行判断,如果用户输入了内容,直接返回结果
if len(result_str) > 0:
return result_str
# 3.如果用户没有输入内容,返回 ‘字典中原有的值’
else:
return dictValue
posted @ 2017-12-15 23:22  煜轩  阅读(270)  评论(0编辑  收藏  举报