[proyecto python] sistema de gestión de tarjetas de visita - dificultad: básico con código ejecutable completo

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

    1. Inicie el programa, muestre la interfaz de bienvenida del sistema de administración de tarjetas de presentación y muestre el menú de funciones
    1. El usuario selecciona diferentes funciones con números
    1. De acuerdo con la selección de funciones, realice diferentes funciones
    1. La tarjeta de visita del usuario debe registrar el nombre del usuario , número de teléfono , QQ , correo electrónico
    1. Si se encuentra la tarjeta de visita especificada, el usuario puede optar por modificar o eliminar la tarjeta de visita

paso

  1. edificio del marco
  2. Añadir tarjeta de visita
  3. mostrar todas las tarjetas de visita
  4. consulta tarjeta de visita
  5. Después de que la consulta sea exitosa, modifique y elimine la tarjeta de presentación
  6. 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.
    1. Prepare el archivo , determine el nombre del archivo y asegúrese de que el código se pueda escribir en la posición requerida
    2. Escriba el ciclo de ejecución principal para implementar la entrada y el juicio básicos del usuario

1.1 Preparación de documentos

  1. Nuevo cards_main.pyGuardar 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, mainse inicia a través de este archivo
  2. Crear una funcióncards_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_mainAñ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":
  1. Use para juzgar incontra la listaor , evite usar para concatenar condiciones lógicas complejas
  2. La entrada del usuario no se usa para intconvertir, lo que puede evitar el error de ejecución del programa una vez que la entrada del usuario no es un número

aprobar

  • passEs 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 #de TODO, se utiliza para marcar el trabajo que debe realizarse
# TODO(作者/邮件) 显示系统菜单

1.3 cards_toolsAgregar 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.pyUtilice el módulo importde importación encards_tools
import cards_tools
  • Modifique whileel 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_maintodos los códigos en total han sido desarrollados!

1.5 show_menuFunció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_toolsAgregar una variable de lista en la parte superior del archivo
# 所有名片记录的列表
card_list = []

Aviso

  1. Todas las operaciones relacionadas con tarjetas de presentación deben usar esta lista, por lo que debe definirse en la parte superior del programa.
  2. 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

  1. Solicite al usuario que ingrese la información de la tarjeta de presentación a su vez
  2. Guardar la información de la tarjeta de presentación en un diccionario
  3. Agregar diccionario a la lista de tarjetas
  4. 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 para SHIFT + F6modificar 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 \tvisualizació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 returnpara indicar retorno
  • Si returnno 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

  1. Solicitar al usuario un nombre para buscar
  2. Iterar a través de la lista según el nombre ingresado por el usuario
  3. 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 inputno puede cumplir con los requisitos, entonces defina una nueva función para expandir la función input_card_infodel 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

Shebang07. El símbolo ( #!) en LINUX

  • #!Este símbolo se llama ShebangoSha-bang
  • ShebangPor 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

    1. Úselo whichpara consultar python3la ruta donde se encuentra el intérprete
$ which python3
    1. Modifique el archivo principal de python para ejecutarlo , agregue lo siguiente a la primera línea
#! /usr/bin/python3
    1. Modifique los permisos de archivo del archivo principal de python y aumente los permisos de ejecución
$ chmod +x cards_main.py
    1. Ejecutar el programa cuando sea necesario
./cards_main.py

Reproducción completa del código

  1. 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("您输入的不正确,请重新选择")
  1. 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
	

Supongo que te gusta

Origin blog.csdn.net/MengYa_Dream/article/details/131847526
Recomendado
Clasificación