Sistema de gestión de tarjetas de visita: proyecto de entrada de Python

declaración

Este proyecto tiene como objetivo comenzar con python. Este proyecto es la integración de todo el conocimiento básico de python. El contenido puede ser un poco engorroso y la explicación es relativamente detallada. Espero que pueda leerlo detenidamente y luego escribirlo. de nuevo para consolidar los cimientos

pantalla de función

Interfaz principal
inserte la descripción de la imagen aquí
Consultar todas las tarjetas de visita
inserte la descripción de la imagen aquí
, modificar y eliminar
inserte la descripción de la imagen aquí

Preparación antes del desarrollo

Debido a que el sistema tiene muchas funciones, sería feo mostrarlo en un archivo Aquí usamos múltiples archivos para mostrar y usamos el método de llamar archivos para realizar las funciones del sistema. Aquí creé dos archivos python, uno es cards_main.py principalmente como un archivo que muestra el sistema y las funciones, y el otro es cards_tool.py como un archivo de herramientas para el archivo principal.

Construcción del marco del sistema

Al desarrollar este proyecto, lo primero que tenemos que hacer es escribir el marco del programa, solo después de que el marco esté construido puede estar listo para nuestras funciones de desarrollo posteriores. En primer lugar, primero determinamos las funciones del sistema de administración de tarjetas de presentación:
cuando ingresamos al sistema, el sistema nos permitirá ingresar la operación que queremos realizar, aquí usamos números en su lugar:
cuando ingresamos 1, el sistema permitirá nosotros para agregar una tarjeta de presentación;
cuando ingresamos 2, el sistema mostrará todas las tarjetas de presentación;
al ingresar 3, el sistema mostrará la tarjeta de presentación de consulta;
al ingresar 0, el sistema saldrá del sistema.
Después de la ejecución, el sistema regresará a la interfaz principal, permitiendo que el usuario vuelva a ingresar, luego agregaremos funciones como la eliminación de tarjetas de presentación y la modificación de tarjetas de presentación.
Aquí primero observamos el marco general del sistema de administración de tarjetas de presentación:
la siguiente imagen es el archivo de cards_main.py

# cards_main.py

# 导入cards_tool文件
import cards_tool
# while True 会不停循环,除非输入0,break退出循环
while True:
	# 导入cards_tool.py 文件里的show_menu功能
    cards_tool.show_menu()
	
    action_str = input('请选择希望执行的操作:')

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

    # 如果在开发程序时,不希望立刻编写内部分支结构的代码,可以用pass
    # 1,2,3 争对名片的操作
    if action_str in ['1', '2', '3']:
        
        # 新增名片
        if action_str == '1':
            cards_tool.new_card()

        # 显示全部名片
        elif action_str == '2':
            cards_tool.show_all()

        # 查询名片
        elif action_str == '3':
            cards_tool.search_card()

    # 0 退出系统
    elif action_str == '0':

        print('欢迎再次使用【名片管理系统】')
        break

    # 其他内容输入错误,提示用户
    else:
        print("您输入的不正确,请重新选择")


Aquí, dado que queremos que el sistema regrese a la interfaz principal después de cada ejecución, necesitamos usar el bucle while, mientras que True seguirá en bucle, a menos que ingresemos break para salir del bucle, que es exactamente el efecto que queremos, confirme el bucle Después de eso, usaremos el anidamiento de if y elif para completar la coincidencia de números y funciones de entrada posteriores.

La siguiente figura es el contenido del archivo cards_tool.py
Cree una función show_menu() para mostrar la página principal
Cree una función new_card() para crear una nueva tarjeta de presentación
Cree una función para mostrar todas las tarjetas de presentación show_all()
Cree una función para buscar para tarjetas de visita search_card()

# cards_tool.py

# 主要作为显示系统主页面的功能
def show_menu():
    """显示菜单"""
    print('*' * 50)
    print('欢迎使用【名片管理系统】')
    print("")
    print("1. 新增名片")
    print("2. 显示全部")
    print("3. 搜索名片")
    print("")
    print("0. 退出系统")
    print('*' * 50)

# 新增名片
def new_card():
    """新增名片"""
    print('-' * 50)
    print("新增名片")


# 显示所有名片
def show_all():
    """显示所有名片"""
    print('-' * 50)
    print("显示所有名片")


# 搜索名片
def search_card():
    """搜索名片"""
    print('-' * 50)
    print("搜索名片")

El marco del sistema está casi desarrollado en este punto, y luego se centrará principalmente en el desarrollo de funciones, es decir, principalmente hará un escándalo en el archivo cards_tool.py para mejorar cada archivo de función.

Nota:
1. Aquí utilizo el método de importar show_menu() en el archivo cards_tool.py para realizar la función de mostrar el menú principal.
2. El método para importar la función en el archivo es el nombre de archivo directo. La función está bien, por ejemplo: cards_tool.new_card()

Estructura para guardar datos de tarjetas de visita

Para guardar los datos de la tarjeta de presentación, podemos usar una lista para guardar la tarjeta de presentación. Podemos usar un diccionario para guardar el contenido de la tarjeta de presentación. Más tarde, podemos usar directamente card_list para realizar todas las operaciones. La siguiente figura es cards_tool
.

# cards_tool.py
# 记录所有名片字典
card_list = []

Nota: card_list[] debe definirse en la parte superior del archivo, porque python es un lenguaje interpretado e interpretará el código de arriba a abajo.

Añadir función de tarjeta de visita

La siguiente figura es la función new_card() en el archivo cards_tool.py

# 新增名片功能
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)

Después de leer todos los códigos, analicemos las funciones correspondientes de los códigos:
1. Primero almacene la información del usuario, debemos pensar en el almacenamiento del diccionario y luego usar listas para almacenar los diccionarios. Por esta razón, hemos creado card_list y card_dict
2 Solicite al usuario que ingrese una tarjeta de presentación Para obtener información detallada, use input() para resolver
3. Use la información ingresada por el usuario para crear un diccionario de tarjetas de presentación
4. Agregue el diccionario de tarjetas de presentación a la lista
5. Finalmente, genere el list directamente para ver la información que acaba de ingresar

Mostrar todas las características de la tarjeta

La siguiente figura es la función show_all() en el archivo cards_tool.py

# 显示所有名片功能
def show_all():
    """显示所有名片"""
    print('-' * 50)
    print("显示所有名片")

    # 判断是否存在名片记录,如果没有,提示用户并返回
    if len(card_list) == 0:
        print("当前没有任何的名片记录,请使用新增功能添加名片!")
        
        # return下方的代码不会被执行
        # 如果return 后面没有任何内容,就会返回到调用函数的位置
        return

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        # 让输出更美观可以用类似表格的形式输出,用end="" 使name输出后不换行
        # \t的作用是为了让表头之间增加两个制表符的距离,更美观
        print(name, end="\t\t")

    # 这个print是作为换行的作用,换行后输出结果
    print('')

    # 打印分割线
    print("=" * 70)

Esta función es más complicada, vamos a explicarla paso a paso:
1. Cuando no haya datos en la lista de tarjetas de visita, envíe "Actualmente no hay ningún registro de tarjeta de visita, utilice la nueva función para agregar tarjetas de visita". no genera el siguiente contenido del encabezado de impresión, esta vez necesitamos usar return, return no solo se puede usar como un valor de retorno, si no hay un valor de retorno, saltará directamente a la posición donde se define la función, y la mayoría cosa importante: python no ejecutará el código detrás de return .

2. Para hacer que la tarjeta de presentación de salida sea más hermosa, la forma del resultado de salida se puede convertir en un formato de tabla. La función de end="" es mantener los cuatro encabezados de nombre, teléfono, QQ y correo electrónico en una línea recta sin saltos de línea.\ t es la distancia de una pestaña, puede usar la distancia de dos pestañas, que es más hermosa.

3. print("") es cambiar la línea, de modo que el resultado de salida esté debajo del encabezado.

Función de consulta de tarjeta de visita

La siguiente figura es la función show_all() en el archivo cards_tool.py

# 搜索名片功能
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\tQQ\t\t邮箱")
            print('=' * 60)
            print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
                                            card_dict["phone"],
                                            card_dict["QQ"],
                                            card_dict["email"]))

            break

    else:
        print("抱歉,没有找到 %s" % find_name)

La búsqueda de tarjetas de presentación es relativamente simple, es decir, si se encuentra el nombre buscado, se generará y se generará la información. El formato de salida puede referirse a la función de mostrar todas las tarjetas de presentación. Si no hay nombre, aparecerá salida no encontrada.

Este es el final del sistema básico de gestión de tarjetas de visita aquí. Lo siguiente es principalmente para mejorar el sistema, agregar, modificar y eliminar funciones.

Eliminar y editar tarjetas de visita

# 删除和修改名片
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):

    # 1.提示用户输入内容
    result_str = input(tip_message)

    # 2.针对用户的输入内容进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
        return result_str

    # 3.如果用户没有输入内容,返回字典中原有的值
    else:
        return dict_value

Para eliminar y modificar una tarjeta de visita, me baso en consultar la tarjeta de visita. En primer lugar, primero determinamos las funciones detalladas de modificar y eliminar la tarjeta de visita: 1. Después de consultar la tarjeta de visita, podemos eliminar toda la empresa
. Tarjeta
2. Después de consultar la tarjeta de visita, podemos modificar el valor que queremos Modificar, si no desea modificar, tome el valor original directamente

Después de determinar la función, ahora completaremos la función anterior

1. Debido a que se basa en la función de consulta, insertamos una función en la función de consulta y luego definimos la función.
Nota: Aquí puede usarla primero en una función y luego definirla fuera de la función.
inserte la descripción de la imagen aquí
Aquí primero la pasamos a la función que queremos modificar, o eliminar el diccionario, y luego aceptarlo y modificarlo en la función deal_card()

2. Ejecutemos primero la función de eliminación. La eliminación es relativamente simple. Si elegimos eliminar, podemos usar directamente la función remove() para eliminar

3. Para la función de modificación, lo que describimos es que puede modificar el valor que desea modificar. Si no desea modificarlo, puede tomar directamente el valor original,
por lo que no debe usar input() directamente para ingrésalo, esto hará que el contenido que no quieras modificar se tenga que dar de nuevo Le asigna un valor. Entonces ahora deberíamos pensar: si no ingreso, aceptará directamente el valor en el diccionario original, si lo ingreso, aceptará el valor de entrada.
Aquí creamos una nueva función input_card_info() principalmente para juzgar si have input value Los dos parámetros formales dentro, uno es dict_value, que es principalmente para devolver el valor original cuando no tenemos contenido de entrada, y el otro tip_message es principalmente para recordarnos la entrada actual, como el nombre, QQ. Finalmente, llevamos directamente la función input_card_info() a la función deal_card() para su juicio.

pantalla de código

archivo cards_main.py

# cards_main.py

# 导入cards_tool文件
import cards_tool
# while True 会不停循环,除非输入0,break退出循环
while True:

    # 导入cards_tool.py 文件里的show_menu功能
    cards_tool.show_menu()

    action_str = input('请选择希望执行的操作:')

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

    # 如果在开发程序时,不希望立刻编写内部分支结构的代码,可以用pass
    # 1,2,3 争对名片的操作
    if action_str in ['1', '2', '3']:

        # 新增名片
        if action_str == '1':
            cards_tool.new_card()

        # 显示全部名片
        elif action_str == '2':
            cards_tool.show_all()

        # 查询名片
        elif action_str == '3':
            cards_tool.search_card()

    # 0 退出系统
    elif action_str == '0':

        print('欢迎再次使用【名片管理系统】')
        break

    # 其他内容输入错误,提示用户
    else:
        print("您输入的不正确,请重新选择")

archivo cards_tool.py

# cards_tool.py
# 记录所有名片字典
card_list = []


# 主要作为显示系统主页面的功能
def show_menu():
    """显示菜单"""
    print('*' * 50)
    print('欢迎使用【名片管理系统】')
    print("")
    print("1. 新增名片")
    print("2. 显示全部")
    print("3. 搜索名片")
    print("")
    print("0. 退出系统")
    print('*' * 50)


# 新增名片功能
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)


# 显示所有名片功能
def show_all():
    """显示所有名片"""
    print('-' * 50)
    print("显示所有名片")

    # 判断是否存在名片记录,如果没有,提示用户并返回
    if len(card_list) == 0:
        print("当前没有任何的名片记录,请使用新增功能添加名片!")

        # return下方的代码不会被执行
        # 如果return 后面没有任何内容,就会返回到调用函数的位置
        return

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        # 让输出更美观可以用类似表格的形式输出,用end="" 使name输出后不换行
        # \t的作用是为了让表头之间增加两个制表符的距离,更美观
        print(name, end="\t\t")

    # 这个print是作为换行的作用,换行后输出结果
    print('')

    # 打印分割线
    print("=" * 70)

    # 遍历名片列表依次输出字典信息
    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("搜索名片")

    # 1.提示用户输入要搜索的姓名
    find_name = input("请输入要搜索的姓名:")

    # 2.遍历名片列表,查询要搜索的姓名,如果没有找到,需要提示用户
    for card_dict in card_list:
        if card_dict["name"] == find_name:

            print("姓名\t\t电话\t\tQQ\t\t邮箱")
            print('=' * 60)
            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):

    # 1.提示用户输入内容
    result_str = input(tip_message)

    # 2.针对用户的输入内容进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:
        return result_str

    # 3.如果用户没有输入内容,返回字典中原有的值
    else:
        return dict_value

Resumir

El sistema de gestión de tarjetas de visita está casi completo aquí. Es posible que estas funciones no sean perfectas y que haya algunos errores. Espero que pueda comprender el significado de estas funciones y variables y que comprenda sus funciones cuando toca poco a poco. Después de dominar , puede agregarle nuevas funciones.

Supongo que te gusta

Origin blog.csdn.net/m0_64041302/article/details/127871019
Recomendado
Clasificación