目录

一、框架搭建

二、保存名片数据的结构

三、新增名片

四、显示所有名片

五、查询名片

六、修改和删除

七、Linux上的Shebang符号(#!)


系统需求

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

2.用户用数字选择不同的功能

3.根据功能选择,执行不同的功能

4.用户名片需要记录用户的姓名、电话、QQ、邮件

5.如果查询到指定的名片,用户可以选择修改或者删除名片

步骤

1.框架搭建

2.新增名片

3.显示所有名片

4.查询名片

5.查询成功后修改、删除名片

6.让python程序能够直接运行

一、框架搭建

目标

搭建名片管理系统框架结构

a.准备文件,确认文件名,保证能够在需要的位置编写代码

b.编写主运行循环,实现基本的用户输入和判断

1 文件准备

a.新建cards_main.py保存主程序功能代码,程序的入口,每一次启动名片管理系统都通过main这个文件启动

b.新建cards_tools.py保存所有名片功能函数

将对名片的新增、查询、修改、删除等功能封装在不同的函数中

2 编写主运行循环

在card_main中添加一个无限循环

# 无限循环,由用户主动决定什么时候退出循环!
while True:# 显示功能菜单action_str = input("请选择操作功能:")print("您选择的操作是:%s" % action_str)# 1,2,3针对名片的操作if action_str in ["1", "2", "3"]:# 新增名片if action_str == "1":pass# 显示全部elif action_str == "2":pass# 查询名片else:pass# 0 退出系统elif action_str == "0":print("欢迎再次使用【名片管理系统】")break# 如果在开发程序时,不希望立刻编写分支内部的代码# 可以使用pass关键字,表示一个占位符能够保证程序的代码结构正确!# 程序运行时,pass关键字不会执行任何的操作!# pass# 其他内容输入错误,需要提示用户else:print("您输入的不正确,请重新选择")

字符串判断:

1.使用in针对列表判断,避免使用or拼接复杂的逻辑条件

2.没有使用int转换用户输入,可以避免一旦用户输入的不是数字,导致程序运行出错

pass:

pass就是一个空语句,不做任何事情,一般用做占位语句

是为了保持程序结构的完整性

无限循环:

在开发软件时,如果不希望程序执行后立即退出

可以在程序中增加一个无限循环

由用户来决定退出程序的时机

TODO注释:

在#后跟上TODO,用于标记需要去做的工作

# TODO(作者/邮件)显示系统菜单

3 在cards_tools中增加四个函数

def show_menu():"""显示菜单"""passdef new_card():"""新建名片"""print("-" * 50)print("功能:新建名片")def show_all():"""显示全部"""print("-" * 50)print("功能:显示全部")def search_card():"""搜索名片"""print("-" * 50)print("功能:搜索名片")

4 导入模块 

在card_main.py中使用import导入cards_tools模块

import cards_tools

修改while循环的代码如下:

import cards_toolswhile 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("欢迎再次使用【名片管理系统】")breakelse:print("输入错误,请重新输入:")

至此:cards_main中的所有代码全部开发完毕!

5 完成show_menu函数

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

二、保存名片数据的结构

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

使用字典记录每一张名片的详细信息

使用列表统一记录所有名片字典

定义名片列表变量

在cards_tools文件的顶部增加一个列表变量

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

注意

a.所有名片相关操作,都需要使用这个列表,所以应该定义在程序的顶部

b.程序刚运行时,没有数据,所以是空列表

三、新增名片

1.功能分析

a.提示用户一次输入名片信息

b.将名片信息保存到一个字典

c.将字典添加到名片列表

d.提示名片添加完成

2.实现new_card方法

根据步骤实现代码

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)

技巧:在PyCharm中,可以使用SHIFT + F6统一修改变量名

四、显示所有名片

1.功能分析

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

2.基础代码实现

def show_all():"""显示所有名片"""print("-" * 50)print("显示所有名片")for card_dict in card_list:print(card_dict)

 3.增加标题和使用\t显示

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.增加没有名片记录判断

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

注意:

在函数中使用return表示返回;

如果在return后没有跟任何内容,只是表示该函数执行到此就不再执行后续的代码

五、查询名片

1.功能分析

a.提示用户要搜索的姓名

b.根据用户输入的姓名遍历列表

c.搜索到指定的名片后,再执行后续的操作

2.代码实现

查询功能实现

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("=" * 50)print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],card_dict["phone"],card_dict["qq"],card_dict["email"]))#  TODO 针对找到的名片记录执行修改和删除操作breakelse:print("抱歉,没有找到 %s" % find_name)

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

def deal_card(find_dict):"""处理查找到的名片:param find_dict: 查找到的名片"""print(find_dict)action_str = input("请选择要执行的操作 ""[1] 修改 [2] 删除 [0] 返回上级菜单")if action_str == "1":print("修改名片成功!")elif action_str == "2":print("删除名片成功!")

六、修改和删除

1.修改名片

由于找到的字典记录已经在列表中保存

要修改名片记录,只需要把列表中对应的字典中每一个键值对的数据修改即可

    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("修改名片成功!")

修改名片细化 

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

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

2.查询成功后删除名片

由于找到的字典记录已经在列表中保存

要删除名片记录,只需要把列表中对应的字典删除即可

    elif action_str == "2":card_list.remove(find_dict)print("删除名片成功!")

七、Linux上的Shebang符号(#!)

#!这个符号叫做Shebang或者Sha-bang

Shebang通常在Unix系统脚本中的第一行开头使用

指明执行这个脚本文件的解释程序

1.使用Shebang的步骤

a.使用which查询python3解释器所在路径

b. 修改要运行的主python文件,在第一行增加以下内容

c.修改主python文件的文件权限,增加执行权限

d.在需要时执行程序即可

python入门之综合应用--名片管理系统相关推荐

  1. 名片管理系统python详解_Python综合应用名片管理系统案例详解

    本文实例讲述了Python综合应用名片管理系统.分享给大家供大家参考,具体如下: 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎 ...

  2. python名片管理器实验步骤_Python综合应用名片管理系统案例详解

    本文实例讲述了python综合应用名片管理系统.分享给大家供大家参考,具体如下: 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎 ...

  3. python代码案例详解-Python综合应用名片管理系统案例详解

    本文实例讲述了Python综合应用名片管理系统.分享给大家供大家参考,具体如下: 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎 ...

  4. Python 综合应用 —— 名片管理系统

    综合应用 -- 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ************ ...

  5. Python之综合应用 —— 名片管理系统

    文章目录 写在开头的话 综合应用 -- 名片管理系统 00.目标 01. 系统需求 02.步骤 03.框架搭建 3.1 文件准备 3.2 编写菜单帮助函数 3.3 编写主运行循环 04. 保存名片数据 ...

  6. python综合应用名片管理系统_综合应用——名片管理系统

    目的: 综合应用已经学过的 变量 流程控制 函数 模块 开发名片管理系统 系统需求 1.程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ****************************** ...

  7. Python答优大作业[名片管理系统(完整代码)]

    文章目录 前言 一.要求描述 二.函数功能及代码描述 三.主函数 四.完整代码 总结 前言 这几天在学javaweb没有什么好的案例,这是我一年前python大作业写的答优代码,勉强拿了90分,答辩和 ...

  8. Python做一个简单的名片管理系统

    项目介绍 如下图,本次项目主要完成新建名片.显示全部名片.查询对应名片并对对应名片完成相关操作. 框架搭建: 名片管理首先可以由main.py以及tools.py组成,main.py主要完成主要功能, ...

  9. python入门基础——综合实践(学生信息管理系统的构建)

    ​ 学习语言与实践是紧密相连的,本人在学习一段时间的python语言后,运用初步学习的知识,实现了学生信息管理系统1.0,并且在学习更多知识后,会逐步完善该系统 首先要明确该系统能实现的功能: 其次, ...

最新文章

  1. java整数常量区_在Java中,我可以用二进制格式定义一个整数常量吗?
  2. html5引入spring标签,[MVC]5 使用Spring标签库
  3. HLS:@E Simulation failed SIGSEGV
  4. 分享WCF文件传输---WCFFileTransfer
  5. PXE 网络化安装linux系统
  6. OpenShift 4 - DevSecOps (2) - 修复 RHACS 发现的安全隐患
  7. DataGridView默认不选中
  8. 【渝粤教育】电大中专幼儿园课程论作业 题库
  9. 俄文化部长称Netflix是美国文化侵掠的工具,将占领每台电视机
  10. hsql转换oracle,Oracle To Hsql
  11. 使用stack栈集合完成ABC全排列
  12. php excel自适应列宽,PHPExcel自动调整列宽
  13. Learning Conditioned Graph Structures for Interpretable Visual Question Answering论文解读
  14. smipleChart 简单图表类 javascript
  15. Python作业:公鸡5元/只,母鸡3元/只,小鸡1元3只。问100元怎么买到100只。
  16. 【心电信号】基于matlab心率检测【含Matlab源码 1993期】
  17. IRIS的镜像配置(2)
  18. 信息学奥赛一本通:1125:矩阵乘法
  19. 字体颜色 * 博客 * 好看
  20. 微信公众号新手运营指南——四种类别如何选择

热门文章

  1. UESTC 758 P酱的冒险旅途【贪心】
  2. 极点五笔 for ibus及scim,五笔、拼音混输(转)
  3. Tomcat7+maven启动时提示A child container failed during start的两种可能的解决方案
  4. 资深PM赞不绝口的【9种项目管理图】
  5. lq_C/C++常见知识补充002
  6. 学计算机需要外接显示器吗,读设计专业,上大学配什么电脑好!
  7. B2C电商运营模式的短板
  8. SQL MySQL 笔记
  9. Jupyter Notebook 语法大全(含Markdown)
  10. 海归首选“北广” 薪酬期望值不要太高 元芳你怎么看?