首页 > 编程语言 >python-名片管理系统

python-名片管理系统

时间:2023-12-06 22:34:23浏览次数:30  
标签:名片 name 管理系统 python dict print input card

一、系统需求

  1. 目的一、回顾前面学过的变量、流程控制、函数、模块等
  2.   程序启动,显示名片和欢迎界面,并提示用户进行操作
  3. 用户选择不同的功能,执行不同的操作
  4. 用户名片中要记录的信息:姓名、电话、联系方式、邮件
  5. 用户查询到指定的名片,可以进行修改、删除操作

二、步骤

  1. 框架搭建
  2. 新增名片
  3. 显示所有名片
  4. 查询名片
  5. 查询成功后修改、删除名片

  01、框架搭建

  1、创建一个名片管理系统的文件夹,把所有的代码写到此文件里

  2、编写一个主程序,实现用户输入和判断的操作

    在文件夹中创建一个cards_main.py并保存

    每一次启动通过这个主函数启动

  3、新建一个cards_tools.py保存所有的名片功能函数;实现对名片的增删改查等操作

   02、编写框架

 2.1 主函数入口

while True:
    # 显示系统菜单
    action = input("请选择操作功能:")
    print("您的选择操作是:%s" % action) #不带分号

    #根据用户的输入进行后续的操作
    if action in ["1","2","3"]:
        pass
    elif action == "0":
        print("欢迎再次使用")
        break
    else:
        print("输入错误,请重新输入")

  1、字符串判断:使用in针对列表判断,避免使用or或if拼接复杂的逻辑条件

   if action in ["1","2","3"]:

  2、没有使用int类型,避免用户一旦输入的不是数字,导致程序运行出错

  2.2 在cards_tools中增加四个函数,分别对应不同的功能,代码如下:

# -*- coding: utf-8 -*-

def show_menu():
    """显示菜单"""
    pass
def new_card():
    """新建名片"""
    print("_" *50)
    print("新建名单")

def show_all():
    """显示全部"""
    print("_"*50)
    print("显示全部")

def search_card():
    """搜索名片"""
    print("_"*50)
    print("搜索功能")

def delete_card():
    """删除名片"""
    print("_"*50)
    print("删除功能")

2.3  在card-main.py中使用import导入cards_tools模块,并修改while循环中的代码

# -*- coding: utf-8 -*-
#导入模块
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("输入错误,请重新输入")

   03、完成函数功能

    1、show_menu函数

def show_menu():
    """显示菜单"""
    print("_"*50)
    print("欢迎使用名片管理系统")
    print("")
    print("1.新建名片")
    print("2.显示全部")
    print("3.查询名片")
    print("")
    print("0.退出系统")
    print("_"*50)

  运行结果:【但是输入后,还会再次出现这个提示】

 2、名片的数据结构用什么来存【列表、字典、元组、集合】

  •   使用字典记录每一个名片
  •   使用列表统一记录所有名片字典
  • 列表是用[]来进行存放元素,中间用,隔开,里面的元素基本都是都一类型的
  • 字典:字典的表示方式 {key1:value1, key1:value1,key1:value1}键值对存放的
  • 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可,元组的元素不能修改

  在cards_tools.py的文件顶部创建一个列表变量

#所有名片记录列表
card_lst = []

2、new_card函数

  • 提示用户依次输入名片信息
  • 将名片信息保存到一个字典中
  • 将字典添加到列表中
  • 提示名片添加完成

 代码如:

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_lst.append(card_dict)
    print(card_lst)
    #4、提示添加成功
    print("成功添加 %s 的名片 " % card_dict["name"])

  显示效果不好:优化如下

def show_all():
    """显示全部"""
    print("_"*50)
    print("显示全部")
    # for card_dict in card_lst:
    #     print(card_dict)
    #打印表头
    for name in ["姓名","电话","qq邮箱","邮箱"]:
        print(name ,end="\t\t")

    print("")
    #打印分割线
    print("_"*50)
    for card_dict in card_lst:
        print(f"%s\t\t%s\t\t%s\t\t%s" %(card_dict["name"], card_dict["phone"],card_dict["qq"],card_dict["email"]))

3、增加没有名片记录

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

        return

4、查询功能

  •   提示用户要搜索的姓名
  •   根据用户输入的姓名遍历列表
  •   搜索到指定的名片后,执行后续的操作
def search_card():
    """搜索名片"""
    print("_"*50)
    print("搜索功能")

    #1、提示用户输入要搜索的姓名
    find_name = input("请输入要搜索的姓名:")
    #2、遍历字典
    for card_dict in card_lst:
        if card_dict["name"] == find_name:
            print("姓名\t\t电话\t\tqq\t\t邮箱\t\t")
            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"])
            print("_"*50)

            break
        else:
            print("对不起,没找到 %s" %find_name)

 5、修改功能

def modify_card():
    global card_lst
    mod_name = input("请输入要修改的名字:")
    for temp in card_lst:
        if mod_name == temp["name"]:
            temp["name"] = input("请输入新的姓名:")
            temp["phone"] = input("请输入电话:")
            temp["qq"] = input("qq")
            temp["email"] = input("email")
            print("修改完成")
            return
    print("查无此人")

6、删除功能

def delete_card():
    global card_lst
    show_all()
    del_name = input("请输入要删除的姓名:")
    for temp in card_lst:
        if  del_name == temp["name"]:
            card_lst.remove(temp)
            break
    print("% 名片已经删除成功" %temp["name"])

标签:名片,name,管理系统,python,dict,print,input,card
From: https://www.cnblogs.com/zp513/p/17880364.html

相关文章

  • python-名片管理
    完整代码:#-*-coding:utf-8-*-#导入模块importparamimportcards_toolswhileTrue:#显示系统菜单cards_tools.show_menu()action=input("请选择操作功能:")print("您的选择操作是:%s"%action)#不带分号#根据用户的输入进行后续的操作......
  • python连接mysql、oracle数据库
    python版本:3.10.5mysql版本:8.0.27oracle版本:oracle12c一、python连接mysql数据库安装第三方依赖PyMySQL,终端执行如下命令:pipinstallPyMySQLPyMySQL使用importpymysqlconfig={'host':'127.0.0.1','port':3306,'u......
  • python的基础1
    基础笔记1.int转整数的时候不能转字符串:int('123'),这样会直接报错。但是使用flost的时候是可以转成小数的,但是也只能是由数字组合的字符串才可以,里面不能包含除了数字之外的所有的字符2.相除的时候,有小数点的是用/,不需要小数的时候使用//(小数点后的直接舍弃)3.全部转换为大写,判......
  • 【Python】【OpenCV】凸轮廓和Douglas-Peucker算法
    针对遇到的各种复杂形状的主体,大多情况下,我们可以求得一个近似的多边形来简化视觉图像处理,因为多边形是由直线组成的,这样就可以准确的划分区域来便捷后续的操作。 cv2.arcLength()Method:参数:curve:要计算周长的轮廓,可以是一个矩形、圆形、多边形等封闭曲线。closed:一个布尔......
  • python中级之异常处理
    什么是异常##异常是程序运行时可能发生的错误或意外情况##本篇博客主要写的是异常相关知识,在Python代码的编写过程中经常会出现异常,一般情况下程序员都叫做出BUG了,这个BUG就是臭虫的意思,表示程序出臭虫了。当然很多时候我们也戏称“无BUG,不编程”。异常的分类-内......
  • python异常处理
    【一】什么是异常异常是程序运行时可能发生的错误或意外情况。在Python中,异常是一种对象,表示程序执行期间发生的错误。当出现异常时,程序的正常流程会被中断,而是跳转到异常处理流程。【1】BaseException(所有异常的基类)SystemExit:解释器请求退出KeyboardInterrupt:用户中......
  • python中级之深浅拷贝
    深浅拷贝异同相同点:无论深拷贝还是浅拷贝都会创建一个新对象。即:拷贝出来的对象的id不同。不同点:浅拷贝:只拷贝了对象,对象内的元素并不会发生拷贝。深拷贝:不仅拷贝对象,对象内的元素也会发生拷贝。浅拷贝浅拷贝举例来看一个浅拷贝的例子:importcopya=[1,2,[3,4]]......
  • 大白话说Python+Flask入门(六)Flask SQLAlchemy操作mysql数据库
    写在前面这篇文章被搁置真的太久了,不知不觉拖到了周三了,当然,也算跟falsk系列说再见的时候,真没什么好神秘的,就是个数据库操作,就大家都知道的CRUD吧。FlaskSQLAlchemy的使用1、FlaskSQLAlchemy简介FlaskSQLAlchemy是基于Flaskweb框架和SQLAlchemyORM(对象关系映射)的工具......
  • 【python基础之数据类型的内置方法】--- 数据类型的内置方法
    title:【python基础之数据类型的内置方法】---数据类型的内置方法date:2023-12-0120:54:06updated:2023-12-0620:30:00description:【python基础之数据类型的内置方法】---数据类型的内置方法cover:https://home.cnblogs.com/u/dream-ze/【一】八大基......
  • python利用依赖注入实现模块解耦
    python不是编译型语言,比较容易出现循环依赖的情况,比如模块A依赖模块B,而模块B反过来依赖模块A.当然可以通过重构解决此问题,比如合并此两个模块.但是还有一些技术可以帮助实现解耦.比如之前我写过的基于消息的机制,把模块间的依赖转换为对消息的依赖.本文章介绍另外一......