综合应用 —— 名片管理系统
目标
综合应用已经学习过的知识点,开发 名片管理系统
系统需求
- 1.程序启动,显示名片管理系统欢迎界面,并显示功能菜单
**************************************************
欢迎使用【名片管理系统】V1.0
1. 新建名片
2. 显示全部
3. 查询名片
0. 退出系统
**************************************************
- 2.用户用数字选择不同的功能
- 3.根据功能选择,执行不同的功能
- 4.用户名片需要记录用户的 姓名、电话、QQ、邮件
- 5.如果查询到指定的名片,用户可以选择 修改 或者 删除 名片
步骤
- 框架搭建
- 新增名片
- 显示所有名片
- 查询名片
- 查询成功后修改、删除名片
- 让 Python 程序能够直接运行
01. 框架搭建
所谓框架搭建,就是首先搭建一个简单的架子。这个架子是一个能够简单运行的程序,但是功能还很不完善。当架子准备好后,就可以在此基础上不断地完善和扩充。
工作之后会接触各种系统,而要开发一个系统,通常第一件要做的事情就是先搭建一个系统的框架,让系统先运行起来
框架搭建通常包含以下两个主要工作:
- 1.准备文件。确定文件名,保证能够 在需要的位置 编写代码
- 2.编写一些简单的代码,让系统能运行起来。编写 主运行循环,实现基本的 用户输入和判断
1.1 文件准备
通常一个复杂的系统是由很多文件组成的,不同的文件扮演不同的角色,承担不同的职责。通常有一个main和其他的文件。main是程序的入口,其他的文件用来提供辅助功能。
在这个系统中,我们需要准备两个文件:cards_main.py、card_tools.py
cards_main.py
文件。- 程序的入口,每一次启动名片管理系统都通过
main
这个文件启动 - 用来写主程序,比如提供循环和输入123进行功能选择。
- 程序的入口,每一次启动名片管理系统都通过
cards_tools.py
文件。- 将对名片的 新增、查询、修改、删除 等功能封装在不同的函数中
创建项目:
新建两个文件。
1.2 编写主运行循环
步骤一:首先写一个死循环,然后再循环里面实现用户输入,然后根据用户的输入进行判断。
while True: #细节1:无限循环
# TODO(小明) 显示系统菜单 #细节2:标记需要做的工作。比单纯用#注释更能容易引起注意。
action_str = input("请输入您的选择:") #细节3:没有转成数字。
print("您的选择是:【%s】" % action_str)
if action_str in ["1", "2", "3"]: #细节4:字符串判断
if action_str == "1":
pass #细节5:pass关键字
elif action_str == "2":
pass
elif action_str == "3":
pass
elif action_str == "0":
print("欢迎再次使用,再见!")
break
else:
print("输入错误,请重新输入")
细节1:无限循环。
在开发软件时,如果 不希望程序执行后 立即退出,可以在程序中增加一个 无限循环,由用户来决定退出程序的时机。
细节2:TODO 注释(Python 结合Pycharm)
我们前面讲了可以用#
来来注释一下后面代码的内容。但是有时候我们写注释是为了提醒一下,我们这个地方有工作还需要做。这时候如果还用单行注释容易被忽略掉。怎么让注释更加醒目呢?
这时候就可以使用TODO注释了。在 #
后跟上 TODO
,用于标记需要去做的工作。
-
TODO注释跟一般的注释不一个颜色,可以快速地看到。如下:
-
另外,在PyCharm中有一个工具。当把鼠标悬停到最左边的小方块时,会弹出一个菜单,而末尾一项就是TODO,
当点击TODO时,会弹出一个小窗口。告诉我们在哪个项目哪个文件哪一行哪一列有个TODO标签。如果点击这个TODO标签,PyCharm会自动把代码切换到该标签所在行上。这样就可以方便地提醒我们还有哪些工作要做。
-
当工作的时候,在开发一个项目的时候,很可能多个人一起做。如何让TODO注释更加清晰呢?这时候就可以在TODO后面增加一对小括号,然后把谁要做写上。表示提醒谁做。
细节3:输入
输入的是字符串类型。没有使用 int
转换用户输入,可以避免 一旦用户输入的不是数字,导致程序运行出错
细节4:字符串判断
以下两种判断方式效果相同,但是显然第一种方式更好。使用 in
针对 列表 判断,避免使用 or
拼接复杂的逻辑条件。
if action in ["1"