Aplicación completa: sistema de gestión de tarjetas de visita
Notas básicas del proyecto python del programador de Dark Horse
Objetivo
- variable
- control de procesos
- función
- módulo
requisitos del sistema
-
- Inicie el programa, muestre la interfaz de bienvenida del sistema de administración de tarjetas de presentación y muestre el menú de funciones
-
- El usuario selecciona diferentes funciones con números
-
- De acuerdo con la selección de funciones, realice diferentes funciones
-
- La tarjeta de visita del usuario debe registrar el nombre del usuario , número de teléfono , QQ , correo electrónico
-
- Si se encuentra la tarjeta de visita especificada, el usuario puede optar por modificar o eliminar la tarjeta de visita
paso
- edificio del marco
- Añadir tarjeta de visita
- mostrar todas las tarjetas de visita
- consulta tarjeta de visita
- Después de que la consulta sea exitosa, modifique y elimine la tarjeta de presentación
- Permitir que los programas de Python se ejecuten directamente
01. Construcción del marco
Objetivo
- Construir la estructura del marco del sistema de gestión de tarjetas de visita.
- Prepare el archivo , determine el nombre del archivo y asegúrese de que el código se pueda escribir en la posición requerida
- Escriba el ciclo de ejecución principal para implementar la entrada y el juicio básicos del usuario
1.1 Preparación de documentos
- Nuevo
cards_main.py
Guardar el código de función del programa principal- entrada de programa
- Cada vez que se inicia el sistema de gestión de tarjetas de visita,
main
se inicia a través de este archivo
- Crear una función
cards_tools.py
para guardar todas las tarjetas de visita- Encapsule funciones como agregar , consultar , modificar y eliminar tarjetas de presentación en diferentes funciones
1.2 Escribir el bucle de ejecución principal
cards_main
Añadir un bucle infinito a
while True:
# TODO(小明) 显示系统菜单
action = input("请选择操作功能:")
print("您选择的操作是:%s" % action)
# 根据用户输入决定后续的操作
if action in ["1", "2", "3"]:
pass
elif action == "0":
print("欢迎再次使用【名片管理系统】")
break
else:
print("输入错误,请重新输入")
juicio de cadena
if action in ["1", "2", "3"]:
if action == "1" or action == "2" or action == "3":
- Use para juzgar
in
contra la listaor
, evite usar para concatenar condiciones lógicas complejas - La entrada del usuario no se usa para
int
convertir, lo que puede evitar el error de ejecución del programa una vez que la entrada del usuario no es un número
aprobar
pass
Es una declaración vacía que no hace nada y generalmente se usa como una declaración de marcador de posición.- es mantener la integridad de la estructura del programa
Bucle infinito
- Al desarrollar software, si no desea que el programa se cierre inmediatamente después de la ejecución
- Se puede agregar un bucle infinito al programa
- Depende del usuario decidir cuándo salir del programa.
COMENTARIOS POR HACER
- Seguido
#
deTODO
, se utiliza para marcar el trabajo que debe realizarse
# TODO(作者/邮件) 显示系统菜单
1.3 cards_tools
Agregar cuatro nuevas funciones en
def show_menu():
"""显示菜单
"""
pass
def new_card():
"""新建名片
"""
print("-" * 50)
print("功能:新建名片")
def show_all():
"""显示全部
"""
print("-" * 50)
print("功能:显示全部")
def search_card():
"""搜索名片
"""
print("-" * 50)
print("功能:搜索名片")
1.4 Importación de módulos
cards_main.py
Utilice el móduloimport
de importación encards_tools
import cards_tools
- Modifique
while
el código para el ciclo de la siguiente manera:
import cards_tools
while True:
cards_tools.show_menu()
action = input("请选择操作功能:")
print("您选择的操作是:%s" % action)
# 根据用户输入决定后续的操作
if action in ["1", "2", "3"]:
if action == "1":
cards_tools.new_card()
elif action == "2":
cards_tools.show_all()
elif action == "3":
cards_tools.search_card()
elif action == "0":
print("欢迎再次使用【名片管理系统】")
break
else:
print("输入错误,请重新输入:")
Hasta ahora: ¡
cards_main
todos los códigos en total han sido desarrollados!
1.5 show_menu
Función de finalización
def show_menu():
"""显示菜单
"""
print("*" * 50)
print("欢迎使用【菜单管理系统】V1.0")
print("")
print("1. 新建名片")
print("2. 显示全部")
print("3. 查询名片")
print("")
print("0. 退出系统")
print("*" * 50)
02. Almacene la estructura de los datos de la tarjeta de visita
Los programas se utilizan para procesar datos y las variables se utilizan para almacenar datos.
- Use un diccionario para registrar los detalles de cada tarjeta de presentación
- Use la lista para registrar uniformemente todos los diccionarios de tarjetas de presentación
[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-0do78vbR-1689908530510)(./images/015/001_Lista global del sistema de gestión de tarjetas de visita) .png)]
Definir variable de lista de tarjetas de visita
cards_tools
Agregar una variable de lista en la parte superior del archivo
# 所有名片记录的列表
card_list = []
Aviso
- Todas las operaciones relacionadas con tarjetas de presentación deben usar esta lista, por lo que debe definirse en la parte superior del programa.
- Cuando el programa se ejecuta, no hay datos , por lo que es una lista vacía
03. Añadir tarjeta de visita
3.1 Análisis de funciones
- Solicite al usuario que ingrese la información de la tarjeta de presentación a su vez
- Guardar la información de la tarjeta de presentación en un diccionario
- Agregar diccionario a la lista de tarjetas
- Solicitar que se agregue la tarjeta de presentación
3.2 Implementar el método new_card
- Siga los pasos para implementar el código.
def new_card():
"""新建名片
"""
print("-" * 50)
print("功能:新建名片")
# 1. 提示用户输入名片信息
name = input("请输入姓名:")
phone = input("请输入电话:")
qq = input("请输入 QQ 号码:")
email = input("请输入邮箱:")
# 2. 将用户信息保存到一个字典
card_dict = {
"name": name,
"phone": phone,
"qq": qq,
"email": email}
# 3. 将用户字典添加到名片列表
card_list.append(card_dict)
print(card_list)
# 4. 提示添加成功信息
print("成功添加 %s 的名片" % card_dict["name"])
Sugerencia: en
PyCharm
, puede usar paraSHIFT + F6
modificar el nombre de la variable de manera uniforme
04. Mostrar todas las tarjetas de visita
4.1 Análisis de funciones
- Recorra la lista de tarjetas de visita y muestre la información de cada diccionario en secuencia
4.2 Implementación del código básico
def show_all():
"""显示全部
"""
print("-" * 50)
print("功能:显示全部")
for card_dict in card_list:
print(card_dict)
- ¡El efecto de visualización no es bueno!
4.3 Añadir título y \t
visualización de uso
def show_all():
"""显示全部
"""
print("-" * 50)
print("功能:显示全部")
# 打印表头
for name in ["姓名", "电话", "QQ", "邮箱"]:
print(name, end="\t\t")
print("")
# 打印分隔线
print("=" * 50)
for card_dict in card_list:
print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
4.4 Aumentar el juicio de que no hay registro de tarjeta de visita
def show_all():
"""显示全部
"""
print("-" * 50)
print("功能:显示全部")
# 1. 判断是否有名片记录
if len(card_list) == 0:
print("提示:没有任何名片记录")
return
Aviso
- Usar en una función
return
para indicar retorno - Si
return
no hay contenido después, solo significa que la función no ejecutará códigos posteriores hasta este punto.
05. Consulta tarjeta de visita
5.1 Análisis de funciones
- Solicitar al usuario un nombre para buscar
- Iterar a través de la lista según el nombre ingresado por el usuario
- Después de buscar la tarjeta de visita especificada, realice operaciones posteriores
5.2 Implementación del código
- Realización de la función de consulta
def search_card():
"""搜索名片
"""
print("-" * 50)
print("功能:搜索名片")
# 1. 提示要搜索的姓名
find_name = input("请输入要搜索的姓名:")
# 2. 遍历字典
for card_dict in card_list:
if card_dict["name"] == find_name:
print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱")
print("-" * 40)
print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
print("-" * 40)
# TODO(小明) 针对找到的字典进行后续操作:修改/删除
break
else:
print("没有找到 %s" % find_name)
- Agregar función de operación de tarjeta de visita: modificar / eliminar / volver al menú principal
def deal_card(find_dict):
"""操作搜索到的名片字典
:param find_dict:找到的名片字典
"""
print(find_dict)
action_str = input("请选择要执行的操作 "
"[1] 修改 [2] 删除 [0] 返回上级菜单")
if action == "1":
print("修改")
elif action == "2":
print("删除")
06. Modificación y supresión
6.1 Eliminar tarjeta de visita después de una consulta exitosa
- Dado que los registros del diccionario encontrados ya están guardados en la lista
- Para eliminar un registro de tarjeta de visita, simplemente elimine el diccionario correspondiente en la lista
elif action == "2":
card_list.remove(find_dict)
print("删除成功")
6.2 Modificar tarjeta de identificación
- Dado que los registros del diccionario encontrados ya están guardados en la lista
- Para modificar el registro de la tarjeta de presentación, solo necesita modificar los datos de cada par clave-valor en el diccionario correspondiente en la lista
if action == "1":
find_dict["name"] = input("请输入姓名:")
find_dict["phone"] = input("请输入电话:")
find_dict["qq"] = input("请输入QQ:")
find_dict["email"] = input("请输入邮件:")
print("%s 的名片修改成功" % find_dict["name"])
Modificar el refinamiento de la tarjeta de presentación
- Si el usuario no desea modificar algún contenido de la tarjeta de presentación al utilizarla , ¿qué debe hacer? —— Dado que la función proporcionada por el sistema
input
no puede cumplir con los requisitos, entonces defina una nueva función para expandir la funcióninput_card_info
del sistemainput
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
Shebang
07. El símbolo ( #!
) en LINUX
#!
Este símbolo se llamaShebang
oSha-bang
Shebang
Por lo general , se usa al comienzo de la primera líneaUnix
de un script del sistema.- Especifique el intérprete para ejecutar este archivo de script
Pasos para usar Shebang
-
- Úselo
which
para consultarpython3
la ruta donde se encuentra el intérprete
- Úselo
$ which python3
-
- Modifique el archivo principal de python para ejecutarlo , agregue lo siguiente a la primera línea
#! /usr/bin/python3
-
- Modifique los permisos de archivo del archivo principal de python y aumente los permisos de ejecución
$ chmod +x cards_main.py
-
- Ejecutar el programa cuando sea necesario
./cards_main.py
Reproducción completa del código
- card_main.py
# #! python解释器
import card_tools
while True:
# 显示功能菜单
card_tools.show_menu()
action_str = input("请选择希望执行的操作: ")
print("您选择的操作是【%s】" % action_str)
if action_str in ["1", "2", "3"]:
if action_str == "1":
card_tools.new_card()
if action_str == "2":
card_tools.show_all()
if action_str == "3":
card_tools.search_card()
pass
elif action_str == "0":
print("欢迎再次使用【名片管理系统】")
break
# pass
else:
print("您输入的不正确,请重新选择")
- card_tools.py
card_list = []
def show_menu():
"""显示菜单"""
print("*"*50)
print("欢迎使用【名片管理系统V1.0】")
print(" ")
print("1.新增名片")
print("2.显示全部")
print("3.搜索名片")
print(" ")
print("0.退出系统")
print("*" * 50)
def new_card():
"""新增名片"""
print("-" * 50)
print("新增名片")
name_str = input("请输入姓名:")
phone_str = input("请输入电话:")
qq_str = input("请输入QQ:")
email_str = input("请输入邮箱:")
card_dict = {
"name": name_str,
"phone": phone_str,
"qq": qq_str,
"email": email_str
}
card_list.append(card_dict)
print("添加 %s 的名片成功!" % name_str)
def show_all():
"""显示所有名片"""
print("-" * 50)
print("显示所有名片")
if len(card_list) == 0:
print("当前没有任何名片记录,请使用新增功能添加名片!")
return
for name in ["姓名", "电话", "QQ", "邮箱"]:
print(name, end = "\t\t")
print(" ")
print("="*50)
for card_dict in card_list:
print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"], card_dict["phone"], card_dict["qq"], card_dict["email"]))
def search_card():
"""搜索名片"""
print("-" * 50)
print("搜索名片")
find_name = input("请输入要查找的姓名:")
for card_dict in card_list:
if card_dict["name"] == find_name:
print("找到了")
for name in ["姓名", "电话", "QQ", "邮箱"]:
print(name, end = "\t\t")
print(" ")
print("=" * 50)
print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"], card_dict["phone"], card_dict["qq"], card_dict["email"]))
deal_card(card_dict)
break
else:
print("抱歉,没有找到 %s 的信息!" % find_name)
def deal_card(find_dict):
# print(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("修改名片成功!")
elif action_str == "2":
card_list.remove(find_dict)
print("删除名片成功")
def input_card_info(dict_value, tip_message):
result_str = input(tip_message)
if len(result_str) > 0:
return result_str
else:
return dict_value