要想用前面学的知识点,完成一个文字版的学生通讯录管理终端,我们可以从用户的角度出发。

菜单

不管任何软件,都需要给用户一个指引,或者待操作的方向。没错,那就是菜单。为了后续的调用,我们把显示菜单的代码封装为一个函数。

如果觉得上下的横线分隔太长,可以适当的缩短。

获取用户输入

完成这个之后,就该接收用户的输入了。这里一定要注意,只能输入整数,要不然程序会崩溃的。

分支管理

得到用户输入的选项后,我们用if-else语句来完成不同的操作。除了可供选择的七个数字,其他全部让用户重新输入。

为了程序不出错,我们把所有的选项用print提示出来。

退出

既然输错了要重新输入,也不知道重新的次数,这个时候,就用到了while语句,来完成无限死循环了。设立死循环之前,一定要给它一个退出循环的出口。

我们可以把第6个选项退出加一个break语句来实现。

关于

基于第七个选项也是比较简单的,也可以先完成。

基于美观考虑,在函数定义的尾部,添加了一个空的字符串,作为换行使用。

增加

设立一个全局列表变量,作为存储所有学生信息的集合。而每个学生的信息,是以字典的形式存储,为简便起见,只获取学生的名字,年龄和电话等,每次获取完,以字典的数据类型作为列表的一个元素被添加到里面。

因为输入没有什么限制,输入什么都是会被接受的。输出用户输入的当次的添加信息只是为了提示看输入了什么,正常情况下是没有的。

显示所有

为了能够知道输入的学生信息,就需要把选项5先完成。我们是用列表把所有的学生信息存储,所有显示所有,就意味着遍历循环列表所有的元素。

因为没有把数据存储在外部,当程序结束后,之前输入的内容就消失了。需要先输入,再显示。当我们发现输入错误的时候,就需要修改数据内容了。

修改

修改数据前,是要先查询到学生列表中是否有这个名字的元素,如果有,就修改,没有提示用户。

上图提示用户的错误已经更正,在后续完整代码那可以看出来。

查询

既然修改前要查询,那么查询的选项也就好写了,而且还不用修改,把查询到的学生信息告知用户即可,查询到后便结束循环。该代码在增加时没有做重名检查,当前学生列表如果有两个名字一样的学生,会找到第一个。

如果当前元素不是要查询的姓名,那就继续下一个,如果全部查询完,都不符合,提示用户没有。

删除

前面提到重名时,会找到第一个,删除学生信息时,也是。

删除时,是把整个列表的元素删除,也就是字典的三个元素,学生的三个不同属性。

不管是删除,查询,修改和显示全部,都用到for的遍历循环,这一点请重点关注。

完整代码

PS:本文代码基于Windows 10,Python 3.10.4。