【python】【综合应用 —— 名片管理系统】【各种细化优化】【在centos上执行名片管理系统】

本文档详述了一个Python名片管理系统的开发过程,包括系统需求、文件准备、主运行循环、功能函数实现,如新建、显示、查询和修改名片,以及在CentOS上执行的步骤。该系统使用字典和列表存储名片数据,通过用户交互实现名片管理。
摘要由CSDN通过智能技术生成

目标

综合应用已经学习过的知识点:

  • 变量
  • 流程控制
  • 函数
  • 模块

开发 名片管理系统

系统需求

    1. 程序启动,显示名片管理系统欢迎界面,并显示功能菜单

欢迎使用【名片管理系统】V1.0

  1. 新建名片

  2. 显示全部

  3. 查询名片

  4. 退出系统


    1. 用户用数字选择不同的功能
    1. 根据功能选择,执行不同的功能
    1. 用户名片需要记录用户的 姓名电话QQ邮件
    1. 如果查询到指定的名片,用户可以选择 修改 或者 删除 名片

步骤 重点重点重点,细分化

  1. 框架搭建
  2. 新增名片
  3. 显示所有名片
  4. 查询名片
  5. 查询成功后修改、删除名片
  6. 让 Python 程序能够直接运行

01. 框架搭建

目标

  • 搭建名片管理系统 框架结构
    1. 准备文件,确定文件名,保证能够 在需要的位置 编写代码
    2. 编写 主运行循环,实现基本的 用户输入和判断

1.1 文件准备

  1. 新建 cards_main.py 保存 主程序功能代码
    • 程序的入口
    • 每一次启动名片管理系统都通过 main 这个文件启动
  2. 新建 cards_tools.py 保存 所有名片功能函数
    • 将对名片的 新增查询修改删除 等功能封装在不同的函数中
      在这里插入图片描述

1.2 编写主运行循环

  • cards_main 中添加一个 无限循环

while True:

    # TODO(小明) 显示系统菜单

    action = input("请选择操作功能:")

    print("您选择的操作是:%s" % action)

    # 根据用户输入决定后续的操作
    if action in ["1", "2", "3","0"]:
        if action == "1":
            cards_tools.xinjian()
        elif action == "2":
            cards_tools.xianshi()
        elif action == "3":
             cards_tools.sosuo()
        elif action == "0":
            print("欢迎再次使用【名片管理系统】")
            break

    else:
        print("输入错误,请重新输入")

其他工具 简介

字符串判断
if action in [“1”, “2”, “3”]:
if action == “1” or action == “2” or action == “3”:

  1. 使用 in 针对 列表 判断,避免使用 or 拼接复杂的逻辑条件
  2. 没有使用 int 转换用户输入,可以避免 一旦用户输入的不是数字,导致程序运行出错

pass

  • pass 就是一个空语句,不做任何事情,一般用做占位语句
  • 是为了保持程序结构的完整性

无限循环

  • 在开发软件时,如果 不希望程序执行后 立即退出
  • 可以在程序中增加一个 无限循环
  • 由用户来决定 退出程序的时机

TODO 注释
# 后跟上 TODO,用于标记需要去做的工作
TODO(作者/邮件) 显示系统菜单

cards_tools 中增加四个新函数

def show_menu():

    """显示菜单
    """
    pass

def new_card():

    """新建名片
    """
    print("-" * 50)
    print("功能:新建名片")


def show_all():

    """显示全部
    """
    print("-" * 50)
    print("功能:显示全部")


def search_card():

    """搜索名片
    """
    print("-" * 50)
    print("功能:搜索名片")

导入模块

cards_main.py 中使用 import 导入 cards_tools 模块
import cards_tools
修改 while 循环的代码如下:

import cards_tools

while True:
    """循环打印菜单"""
    cards_tools.caidan()
    action =  input("请选择操作功能: ")
    print("您选择的操作是:%s" % action)
    if action in ["1","2","3","0"]:
        if action == "1":
            cards_tools.xinjian()
        elif action == "2":
            cards_tools.xianshi()
        elif action == "3":
             cards_tools.sosuo()
        elif action == "0":
            print("欢迎再次使用【名片管理系统】")
            break

    else:
        print("输入错误,请重新输入")

完成 `菜单 函数

def caidan():
    print("@" * 50)
    print("欢迎使用【名片管理系统】V1.0")
    print()
    print("1. 新建名片")
    print("2. 显示全部")
    print("3. 查询名片")
    print()
    print("3. 退出系统")
    print("@" * 50)

在这里插入图片描述

保存名片数据的结构

程序就是用来处理数据的,而变量就是用来存储数据的

  • 使用 字典 记录 每一张名片 的详细信息
  • 使用 列表 统一记录所有的 名片字典
    *

定义名片列表变量

cards_tools 文件的顶部增加一个 列表变量
目的是为了不让他每循环都创建一个列表
所有名片记录的列表
card_list = []

注意

  1. 所有名片相关操作,都需要使用这个列表,所以应该 定义在程序的顶部
  2. 程序刚运行时,没有数据,所以是 空列表

新增名片

3.1 功能分析

这里提示,是把你所有的值去想办法放到一个字典里面,
然后去把字典里面的值,插入到列表字面,这样就保存拉信息

  1. 提示用户依次输入名片信息
  2. 将名片信息保存到一个字典
  3. 将字典添加到名片列表
  4. 提示名片添加完成

根据步骤实现代码

def xinjian():
    print("@" * 50)
    print("功能:新建名片")
    name = input("请输入你的姓名:")
    age = input("请输入你的年龄:")
    sex = input("请输入你的性别:")
    marriage = input("请输入你的婚姻状况:")
    card_dict = {"name":name,
                 "age":age,
                 "sex":sex,
                 "marriage":marriage}
    card_list.append(card_dict)
    print(card_list)
    print("成功添加 %s 的名片" % card_dict["name"])

在这里插入图片描述

显示所有名片

功能分析

这里前面有一个循环遍历,是先显示字典里面的所有键,
然后再加一个循环,去循环这个建,然后打印这个键,的每个值

  • 循环遍历名片列表,顺序显示每一个字典的信息

*基础代码实现

def xianshi():
    """显示全部"""
    print("@" * 50)
    print("功能:显示全部")

    if len(card_list) ==0:
        print("提示:没有任何名片记录")

    print("姓名",end="\t\t")
    print("年龄", end="\t\t")
    print("性别", end="\t\t")
    print("婚姻", end="\t\t")
    print()
    print("@" * 50)
    for i in card_list:
        for a in i:
            print(i[a],end="\t\t")
        print("")
    print("@" * 50)

在这里插入图片描述

增加标题和使用 \t 显示,这里不重要,小提示

def show_all():
    """显示全部
    """
    print("-" * 50)
    print("功能:显示全部")

    # 打印表头
    for name in ["姓名", "电话", "QQ", "邮箱"]:
        print(name, end="\t\t")

    print("")

增加没有名片记录判断

这里上面 显示全部里面我加到上面拉 这里提示一下 单独写一遍,不用加进去

def show_all():
    """显示全部
    """
    print("-" * 50)
    print("功能:显示全部")

    # 1. 判断是否有名片记录
    if len(card_list) == 0:
        print("提示:没有任何名片记录")

        return

查询名片

功能分析

这里前面文章,有一个查找“”阿土“”的案例,这个用法跟哪一个一样,
先定义一个值,然后去循环查找跟值一样的

  1. 提示用户要搜索的姓名
  2. 根据用户输入的姓名遍历列表
  3. 搜索到指定的名片后,再执行后续的操作

5.2 代码实现

def sosuo():
    print("@" * 50)
    print("功能:搜索名片")
    find_name = input("请输入你想要查询的名字")

    for i in card_list:
        if i["name"] == find_name:
            for a in ["姓名","年龄","性别","婚姻"]:
                print(a,end="\t\t")
            print("")
            print("@" * 50)
            for b in i:
                print(i[b],end="\t\t")
            print("")
            print("@" * 50)

在这里插入图片描述

增加名片操作函数:修改/删除/返回主菜单

ccc = input("请选择你要执行的操作,"
                        "[1]修改,[2]删除,[0]返回上级菜单")

            if ccc =="1":
                pass
            elif ccc =="2":
                card_list.remove(i)
            else:
                break
        else:
            print("没有找到 %s " % find_name)

查询成功后删除名片

        elif ccc =="2":
            card_list.remove(i)

在这里插入图片描述

修改名片

  • 由于找到的字典记录已经在列表中保存
  • 要修改名片记录,只需要把列表中对应的字典中每一个键值对的数据修改即可
            if ccc =="1":
                i["name"] = input("请输入姓名:")
                i["age"] = input("请输入你的年龄:")
                i["sex"] = input("请输入你的性别:")
                i["marriage"] = input("请输入你的婚姻状况:")

                print("%s 的名片修改成功" % i["name"])

在这里插入图片描述

修改名片这里也可以这样操作 往下看有一个一步到位的,这个代码量多

在这里插入图片描述

def xiugai(i):
    ccc = input("请选择你要执行的操作,"
                "[1]修改,[2]删除,[0]返回上级菜单")
    if ccc == "1":
        a = input("请输入姓名【回车不修改】: ")
        if len(a) == 0:
            i["name"] = i["name"]
        else:
            i["name"] = a

        b = input("请输入年龄【回车不修改】: ")
        if len(b) == 0:
            i["age"] = i["age"]
        else:
            i["age"] = b

        c = input("请输入性别【回车不修改】: ")
        if len(c) == 0:
            i["sex"] = i["sex"]
        else:
            i["sex"] = c

        d = input("请输入婚姻【回车不修改】: ")
        if len(d) == 0:
            i["marriage"] = i["marriage"]
        else:
            i["marriage"] = d



        print("%s 的名片修改成功" % i["name"])
    elif ccc == "2":
        card_list.remove(i)

在这里插入图片描述

修改名片细化

如果用户在使用时,某些名片内容并不想修改,应该如何做呢?—— 既然系统提供的 input 函数不能满足需求,那么就新定义一个函数 input_card_info 对系统的 input 函数进行扩展
在这里插入图片描述
定义一个新函数代码如下

def youhua(zhi,tishi):
    """

    :param zhi:字典中原有的值
    :param tishi:输入的文字提示
    :return:如果用户输入了内容,就返回内容,否则返回字典原有的值
    """
    # 1. 提示用户输入内容

    result_str = input(tishi)

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

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

        return zhi

在这里插入图片描述把新定义的函数 调用 进去,友情提示 这个是搜索里面的

在这里插入图片描述

上面全部修改完成,进行测试 ,我上面都已经测试过拉

下面就是各种细化优化

在这里插入图片描述
测试结果
在这里插入图片描述
整体代码上移 下移
在这里插入图片描述
#TODO 提示代码有哪些代码需要完成
添加,前面就是提示你要做什么
在这里插入图片描述

在centos上执行名片管理系统

步骤1;先查找python的 绝对路径
使用 which 查询 python3 解释器所在路径
在这里插入图片描述
修改要运行的 主 python 文件,在第一行增加以下内容
#! /usr/bin/python3

  • #!这个符号叫做 Shebang 或者 Sha-bang
  • Shebang 通常在 Unix 系统脚本的中 第一行开头 使用
  • 指明 执行这个脚本文件解释程序
    在这里插入图片描述
    步骤2;先找的python这个文件的路径

上传到centos 虚拟机上
在这里插入图片描述
在这里插入图片描述
步骤;给文件一个可以执行权限
修改 主 python 文件 的文件权限,增加执行权限
$ chmod +x cards_main.py
在这里插入图片描述
步骤;运行测试
python3 cards_main.py在这里插入图片描述

bash
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值