00:00
好,接下来我们来继续啊,我们这个关于这个序列啊,列表这块知识讲了很多了,是吧,讲了。讲了已经写了六个代码了,对吧?我们这里边现在还没有去做练习,所以接下来我们来做一个练习,来把我们之前学的这几个知识来给它巩固一下啊,巩固一下来,呃,这里边我们来直接写一个吧,写一个练习,呃,我们这回啊,这个代码主要还都写到文件里的,所以笔记里相对来说内容比较少啊,我们来说一下练习,练习是什么呢?我们叫做一个EMS的一个练习,EMS是什么玩意儿啊?EMS什么玩意儿,那我们这块来说一下,EMS呢,它是我们一个叫做,诶,它是一个缩写啊,不是我们送快递是吧?EMS这个是什么呢?叫做emplo啊,Employee ma,哎呀,Manager啊,Manager STEM叫做一个system啊,System employee manager system叫做一个员工管理系统,诶,员工管理系统。
01:08
哎,员工管理系统,那我们作为一个开发人员是吧,以后看到这种MS你就知道MS呢,基本上都是manage system管理系统,什么这个em Ms员工管理系统,CMS内容管理系统啊,KMS知识管理系统,那这些都是各种各样的管理系统,那我们这个员工管理系统里练习呢,就是什么呀?哎,就是做一个我们这个,诶其实非常简单,就是做一个我们这个,呃,命令行版的版本的一个,诶员工管理系统,诶我们通过这个命令行来对这个员工进行一个操作,那这块我先不废话了,我们直接来看效果啊,我们先来看一个诶例子,那现在我们这桌面上有一个ems.py这是我之前写好的一个DEMO,直接点开我们来看,首先一上来还是先给我们显示一个,哎,欢迎来使用员工管理系统显示这样一个信息,诶还是任何软件上来都是先显示一个欢迎信息,显示完了以后,在这里边会给我们写了一个,诶请选择女。
02:08
到做的操作有四个选项,一个是查询员工,一个是添加员工,删除员工,还有一个叫退出系统,所以这里边我们来说一下,其实功能呢,我们写一下我们功能,功能一共有四个,哪四个哪四个呀,第一个是我们这个查询,查询员工啊查询,然后第二一个是我们这个添加啊添加员工,第三一个是我们叫做一个删除对吧?诶删除员工,第四一个是我们这个退出,退出就不用说了,这玩意儿白给对吧,退出就程序就结束就完了啊你1N4退出就就就没了就OK了,对吧?那现在我们来看,我们要看的是这三个是吧,第一个是我们这个查询,查询员工什么效果,我这一点查询走一个,诶干嘛了,他说是把我们这个当前的员工是不是在这都给显示出来了,诶显示出来了,所以查询员工就是什么呢?诶查询员工诶就是显示我们当前系统,诶当中的所有员工啊,显示我们当。
03:08
的系统当中的所有员工,而我们这个添加员工,我们来看效果啊,添加员工选一下添加员工来先让我输入是吧,输入员工姓名,我来一个猪八戒,然后呢,让我输入员工年龄,年龄是一个28,性别呢是一个男,然后住址是一个高老庄知王庄,我们这一保存走一个,那现在诶就又回来了,对吧?然后我们这再点一个查询员工,我们这一点就发现这是不是就多了一个抓件,诶多了一个抓件,所以这里边我们来说一下,哎,我们来说啊,第二个添加员工是不是将我们这个员工诶添加到我们这个当前系统中啊,诶添加到我们当前系统中,那我们这个删除就不用说了,删除就是什么呀?哎,删除就是将我们员工从系统中删除,将员工哎,从我们这个系统当中删除,然后呢,退出就不用说了,就是退出我们这个系统是吧?哎,退出我们这个系统,退出我们这个系统。
04:08
那其实就是这么简单的四个功能,其实真的不难,但是关键我们先解决第一个问题,第一个问题是什么?我们先提出几个问题是吧?诶第一个问题,我们这个员工的信息,员工信息要保存到哪,要保存到哪里,员工信息我是存哪儿啊,存哪啊,那这很简单,我们学的是列表,对吧,那我这员工的信息是不是可能有很多个呀,所以很明显我员工的信息应该保存到一个列表中,所以这个答案就是什么呀?诶就是列表,所以这里边注意在我们这个系统中,诶在我们系统中诶应该有一个列表,诶专门是用来保存我们这个所有员工信息的啊,专门是用来保存所有员工信息的,所以这是我们需要第一个需要一个列表啊,需要一个列表,那这是一个,然后呢,其实主要就是这一个问题是吧,那我们来看一下我们这个流程什么呀?哎,我们流程其实我们简单说一下是吧。
05:08
把说一下,那首先我们需要干嘛,我们需要先显示一个什么呀,欢迎界面把这些操作提示是不是显示出来呀?诶显示出来以后,那我们就要分别做什么呀?查询员工,添加员工,删除员工,还有退出系统这几个功能,查询员工怎么做?查询员工其实我们说了,既然员工的信息是保存到了一个列表里,那我们查询员工是不是就是把这个员工的信息打印出来,诶便利打印出来,那添加员工呢?诶就是把员工的信息添加到我们这个列表里,那我们删除员工呢?诶就是删除员工的信息,退出就不用说了,对吧?好,那这样我们先说这么多,我们来尝试去做一下,那你们在做的时候,也是尽量做的时候,在我们这个命令行里来测试,为什么在命令行里测试呢?因为我们这个,呃,这个这个sub lab里边内置的这个玩意儿,它有点小问题,就是你在写这个数据的时候,你对齐相对来说会麻烦一点,而在我们这个命令行里,它会自动就对齐了,省事一点,当然你说我就在这边测试。
06:08
没关系啊,尽量我们统一在命令行里来走啊,那这里边我们来先关掉,我们来写我们这个练习,还是我们先创建一个新的文件保存一下,我们来一个零七我们的一个EMS的一个练习,EMS的这么一个练习,那这个练习呢,我们先来写一下第一件事,我们来看这第一件事一上来是不是先显示我们这个信息啊,哎,显示我们这个欢迎信息,所以一上来这个事儿我们是非常容易的啊,来先显示诶没有没有写,没有写扩展名对吧?来重命名一下emis练习,点一个PY,点一个PY啊,我这块给它重新打开一下,呃,那这里边我们来直接来写一下,写什么呢?写一个我们这儿先来显示我们这个系统的一个这个欢迎信息啊,欢迎信息第一个我们先打印一下,打印一下我们来什么呢?来几个减号,我这来乘以一个这个20个减号是吧,20个减号这儿来写一个,呃,欢迎使用我们这。
07:08
这个员工管理系统啊,管理系统,然后后边同样我再来一个20个减号,这样一保存,我们这一执行是不是就这个效果呀,诶这个效果来,我打开我们这个命令行窗口,诶这样命令行窗口CMD啊,然后CAD,我们这个desk top啊呃,DR我们来进入到哪呢?应该是我们这个CD,我们这个resource啊,再进的是CD我们这个哎,Course,然后在DR应该是CD我们这个LESSON04,然后是CD我们这个code,这时候DR我们应该是我们这个应该是执行我们这个零七是吧,07EMS练习直接执行是不是这么这么一个效果呀,哎,我先塞S一下,听一下屏幕,这样我们再执行,哎,那我们这个欢迎界面就出来了,对吧,欢迎使用员工管理系统,这就出来了,然后在这儿再往下来显示我们这个用户的一个选项啊,用户选项。
08:08
我们先写什么呢?先写一个print print我们先来选一个,哎,请选择要做的一个操作,哎要做的操作那这块我们来冒号,然后后边写了跟我们之前那是一样的,一共是四个对吧?这来先杠替杠替第一个是什么呀?第一个是我们叫做查询员工或者叫做什么呀,显示我们这个员工列表啊,显示是不是员工所有信息啊,诶员工所有信息啊,复制一下我们这个第二一个,第二一个是干嘛的呢?第二一个是我们这个,诶添加我们这个员工啊,添加员工,添加员工,然后呢,第三一个是我们这个叫做一个删除员工,删除员工,第四一个我们应该是一个退出系统,退出系统保存一下,我们先看效果啊,在这执行一下统一个,诶是不是这个呀,显示员工,或者咱们就就就显示员工吧,显示员工或者就叫一个查询员工啊,查询员工。
09:08
这一保存我们来看一下,呃,还是在这执行一下走一个,诶是不是这四个呀,哎四个操作,然后在这我们要需要是不是让用户去选择呀,诶用户选择,所以在这我们来一个user,一个choose这个变量,对叫做一个ho SE choose等于一个我们这来一个音input的,音input的我们来一个什么呢?诶请选择要做的一个操作,诶请选择啊请选择中文号,我们这应该是一个一到四啊一到四这一保存,我们这来一个冒号,现在我们再看效果,我这还是一直行,咱们一直行是不是就可以选了,哎,可以选选个一,诶然后选个哎,然后这选个三,哎都可以去选了啊,那现在我们就可以去选择了,那接下来我们再往下进行推进,那用户选完了,我们是不是就获取他的选择了,哎获取选择了,那在这里接下来我们要干嘛,根据我们用户的选择,哎来做相关的一个操作,哎来做相关的操作。
10:08
那这里边啊,我们先不管做什么操作,我们先把这个格式写出来对吧,一共四个,四个选项,其实一共是五个,因为还有一种它是瞎输的对吧,它输的不是1234里边这几个啊,所以做一个判断,If,我们的这个you choose等等于一,这是第一种情况,对吧?我们先给它来一个这个pass啊,先给它pass掉,待会我们再去改,然后这是一个l if l if,我们这个user choose等等于二,这是等于二的情况啊,然后在这我们还是来一个这个pass,再来第三种else I l if,我们这个user的一个choose等等于三啊,第三种情况,然后还是pass啊,然后第四种情况,我们I if,我们user choose等等于四啊,等等于四,还是来一个pass,是不是这四种情况啊?诶,四我们可以写四是不是是就是就是退出啊,哎,四就是退出,四呢,我们就是一个退出,那退出我们这儿是不是什么也不用干呀,哎,什么也不用干,但是呢。
11:08
这里边我们实际上还是忘了一件事,因为我们这个东西,这个东西还是那句话,我们这个东西是不是要反复去显示啊,哎反复去显示,所以像那种用户选项的显示,我们应该干嘛呀,我在这儿应该是创建一个这个循环啊,一个什么呀,一个死循环,因为我们这些信息是不是总是要显示啊,诶总是要显示,所以我这直接来一个这个y wley,我们这直接来一个处啊处,然后把这一堆选项显示全都放到这个死循环里啊,全都放死循环,所以这个时候我们坚持退出就是什么呀,退出就是一个啊break啊,就是一个break,当然你在break之前你可以显示一个啊,你显示一个啊,欢迎使用,再见,欢迎使用,我们来一个再见啊,再见,然后呢,如果你要再讲究一点,你可以再来一个这个input啊input或者直接写input也行啊,欢迎使用,再诶然后这儿写什么呢?写一个写一个这个。
12:07
点击我们这个回车键退出,退出你可以写这么一句话,对吧,写这么一句话,或者你把这个两个写一个呢也行啊,你就直接欢迎使用,诶再见点击回车键退出,这样是不是就完事儿了啊,这样完事了啊,我们做一个退出,然后就break啊break,然后还有最后一种,最后一种呢,我们是一个else else呢,它输的不是一不是二,不是三,也不是四,那这个时候它实际上就是什么呀,是不是输入的不合法呀,嗯,然后我们就直接写一个您输入的有误,诶您的,诶您的这个输入有误,诶请重新选择啊,请重新选择,这样一保存是不就OK了,哎,就OK了啊,然后在这我们来看效果啊,那这写完了,我们这时候先测试一下,直接走。走一个,那现在我们查询的都没写呢,对吧,查询也没写呢,但是他现在就是你可以发现你输完了,是不是可以反复显示了,诶可以反复显示,但是这时候又面临我们之前说的那个问题,虽然可以反复显示了,但是现在还是输入完了,是输入完了,但是它是不是挨的特别近啊,哎,我们需要给我们整出一个分割线来,对吧?分割线,分割线就这样,我们在最后啊,在最后,在循环的最后,我们这来打印一个分割线,打印分割线这个好处就是我们以后每一次循环执行完了,是不是都会有一条线出来啊,哎,线出来啊,我们这来一个减号,我们直接乘以一个,乘以一个,这是多少呀,我们来看这是多少个字,这是一个十个字,十个字加上前后两个空格应该是22个,22个加上这个二十四十是吧,应该是62,我们直接试试吧,乘以一个62可能会有点短,我们直接执行,诶重新我们CTRLC啊结束程序,然后我们重新执行一下,这样一执行打印完了,选一个一,诶这是不是有条线呀?诶正好一一边长是吧,一边长。
13:55
这样我们选择就看起来就清楚一些了,是吧,清楚一些了,那然后我们来选一个,我们先来选择一个四退出系统,诶问我欢迎使用,再键点击回收键退出一回车是不是就退出了,哎,就退出了啊这样一个效果好,那这个我感觉有点难看是吧,有点难看的话,我们还是把这分着写,这来一个音input的啊音input的这换成print,呃,然后呢,这个打印一条线在这打印,这一保存,我们这时候再看啊嗯,执行一下还是选择四退出系统,诶这样欢迎使用,再见点击回车退出,这样是不是就退出了啊,就退出了啊,这样感觉好一点啊,感觉好一点,那这退出整完了,然后再看,我们整一个随便写一个,我写A写A走,你是不是告诉你输入有误,请重新选择呀,诶输入有误请重新选择,哎,就是这样一个效果,诶这样体验就就好很多了,对吧,这样体验好很多了,然后我们还要做的话就是。
14:55
有可能我希望在上边是不是需要再打一条线,这效果会更好一点啊,我刚才这个线我是在这儿写的,在这儿写呢,我不如这样,我把这个线呀,挪到这个位置,比如说当用户选择完了,我在这儿再打印一条线,那这样的效果呢,我们来看看,直接执行一下啊,先退出执行,然后我们来选一个随便写一个,写个A,诶是不是告诉你输入有误,请重新选择呀,来我再选一个,选一个四,诶然后欢迎使用,再见回车,这样是不是效果好一点,对吧?哎,好一点,也就说在循环的。
15:27
上边这儿打印一条线,然后在最后打一条线,等于我们就把我们这个输入都在这两条线的中间去显示,这样格式好看一点啊好,那现在我们整个这个结构是不是就搭完了,诶整个这个结构搭完了啊,那这里边我们先把这四个选项写个注释,第一个这是我们这个叫什么呀?查询我们这个员工啊,查询员工,然后第二一个是我们这个叫什么呀?叫做添加员工啊,添加员工,添加员工,然后第三一个是我们这个叫什么呀?叫做一个删除员工,删除员工诶那我们现在先解决第一个问题,我们先做一下这个查询员工啊,查询员工,查询员工的效果就是我这一点,查询员工是把我们这个员工信息在这都显示,诶都显示,那首先我们来看,我们之前做这例子,直接一点开,我们一点查询员工,那首先我这一点它是不是首先这块有一个类似于表头的一个东西,这表头里会给我。
16:28
显示什么呀?序号,姓名,年龄性别,还有住址,那这里最好,我是不是先把这个东西给它整出来,诶把这个东西整出来,所以在查询的时候在这儿啊,在查询的时候在这儿我来先干嘛呢?诶先来打印我们这个表头啊,表头表格一个头部在这儿,我们直接print,我们来看有什么呀,有四个东西,一个是哎,这这刚才我们看了是吧,叫什么。序号,姓名,年龄,性别,住址对吧,写一个哎序号诶,这个年性名,然后我们这个年龄,我们这个性别,还有这个住址,但是很明显我们以这种方式去打印,这格式会很难看是吧?所以我们需要在每一项之间给它加一个杠T干嘛呀,我要给它缩进一下啊缩进一下,这样我们就会有一个格式,就会好看一点啊,好看一点,这时候我们再来看效果,直接执行啊,直接执行,先给它结束掉啊,直接执行。
17:28
嗯,重新写一下啊,我们这个零七啊,走一个,哎,来还是查询员工是不是就这个表头了,诶序号,姓名、年龄、性别、住址就有这样一个表头了,但如果你希望它这个前面再有一个距离呢,你也可以什么呀?哎,你可以在序号前边你再加一个缩紧,但咱们这块就根据序要去调整啊,这个东西没有什么严格要求啊,来写一个零七,我们来一执行一查询,诶这样是不是还还挺好看的对吧?还挺好看的啊,我们就要这么一个效果啊好,那现在表头有了,接下来我们是不是要在下边去显示信息啊,哎,显示我们员工的信息,显示员工信息,但是这个时候带来一个问题,我要显示员工信息,我这员工信息在哪呢?
18:15
对吧?我是不是得有一个位置存储员工信息啊,哎,存储员工信息,所以这里边我们得先有一个列表来保存员工信息,那现在我们是不是需要先创建一个列表,哎,先创建一个列表,好,那既然我要创建列表,我这个列表在哪创建?两个位置,一个是我可以在循环里边来创建,二一个位置我可以在循环的外边来创建,在哪创建?很明显我们应该在外边创建,为什么?因为如果你在里边创建的话,等于我们循环每执行一次,我是不是就要创建一个列表啊,而很明显我员工应该是统一保存到一个列表中呢?所以这个时候注意,这个列表一定不要写到循环里边,而是写什么呀,写到外边,所以在这儿我来干嘛呢?哎,我来创建一个这个列表,用来诶保存我们这个员工的信息啊,员工信息,那我直接来一个吧,来一个我们叫做一个emp employees啊,Employees我们的员工,或者你就叫简单的写emps啊,Emps等于个中号,那现在这列表是不是有了。
19:15
但是现在列表是有了,列表是有了,但是我们这列表现在是一个空列表,当然你可以在这对它进行便列是吧,你可以进行便列,怎么便利啊,直接对列表进行便利,来一个for循环,我们来一个emmp啊in emps啊,然后现在这emmp是不是员工信息啊,我直接print这个EP,但是现在写是一点用都没有呢,为什么没有,因为你现在这么写,他没有员工啊,他没有,呃,我们这是一个零七啊,他没有员工,所以这个时候你去执行这个查询的时候,是不是什么信息也没有啊,哎,什么信息也没有,所以那接下来我们最好是不是能往我们这里边去添加几个,添加一两个这种已经存在的员工啊,不然你每次你做查询是不是上来都没有啊,哎,都没有,所以在这我们要先要准备两个员工,那我们这个员工要怎么去添加啊,怎么去添加,那注意了,我们现在这个是一个模拟的。
20:15
功能并不是一个真实说真的能拿到这个工作环境中使用的一个,它就是一个模拟的,那这个时候我们就涉及到一个问题,我们员工信息要存到这个列表中,我员工信息要以什么形式去存储,那这里我们就简单一点,我们员工信息是以字符串的形式。诶,员工的信息是以字符串的形式是保存到我们这个列表中的,我们来说一下,诶员工的信息诶以我们这个字串的形式,诶,统一保存到我们这个列表中,也就是说我们员工有什么呀,有序号、姓名、年龄、性别、住址这些信息,对吧?这些信息我们要存的话,我们就统一连成一个长的字符串存到列表中,它的格式像什么啊,我们来举个例子,其实跟它格式是一样的,直接把这格式给粘过来,你必须得跟他格式一样,因为什么?因为我们信息是不是要跟这东西对齐啊,所以必须跟它一样啊,序号我们是写一个这个一号,然后姓名呢,我们写一个孙悟空,年龄呢,我这写一个这个18,性别呢,我们这写一个男,住址我来写一个花果山,花果山,那这样我们就有了第一个员工,那这个时候我们再来看能不能显示了啊,能不能显示在这儿,我们还是先得推出,然后呢推车啊。
21:36
执行我们来查询,走一个,这时候是不是就有信息了,哎,序号一是孙悟空,然后这个姓名孙悟空是吧,年龄18,性别是男,住址花果山是不是就能显示出来了,诶这样就有信息了啊,就有信息了,所以注意以后我们在添加数据的时候,格式也应该是这样啊,格式应该是这样,但是这里边我们要说一个问题啊,说一个问题,现在我们的数据里边的什么呢?序号,我们的序号它是不是现在也是以这个。
22:05
信息的形式保存到我们这个列表中,对吧,保存到列表中了,但是我们要说一下,我现在这种方式去处理它好不好,或者说它有没有什么问题,有没有什么问题,其实这里问题还挺大的,大在哪儿?因为我这里边的员工可能有多个,我可能有一个,两个,三个,四个,五个员工,对吧?如果我把五个员工,我把这个序号给写死了的话,就说我这个序号现在是和员工绑定的,那假如说我要做了一个删除以后,我把三号员工给删除了,哎呀,我把三号员工给删除了,三号员工没了,三号员工没了以后。那按理来讲,我是应该四号变成三号,五号变成四号,应该这样递进吧,诶就往上补一个啊往上补去,但是现在的情况就是,如果你把三号员工删了,你你的序号已经写死了,那三号员工删了,那你就没有三号,你就是1245对吧,你就是1245,所以这个时候注意,我们这个序号在这儿我是不应该写的啊,在这个位置我是不应该去写序号,因为一旦写序号就意味着我们这块就写死了啊,写死了,而他不能根据你员工的具体情况去改变,那所以这个时候把序号删了,删了以后也会有问题,删了以后我们再执行,再执行走一个查询员工走一个,这时候序号是不是没了呀,那序号怎么办?诶序号我们应该在便利的时候给他动态的去生成,怎么生成,我们整一个最简单的方式怎么生成,在这里我直接来创建一个变量,创建一个变量,诶来干嘛呢?哎,来表示我们这个什么呀,哎员工的。
23:43
一个序号啊,创立一个变量来表示员工的序号,我直接来一个这个N,我们来等于一个一啊N我让它从一开始啊,从新开始,然后在这我来什么呢?N加等于一啊,N加等于一是不是每执行一次就自增一个,每执行一个自自增一个,哎有这么一个序号,那序号有了,接下来我们要设是不是给他这拼个串就行了,哎,拼串就行了,直接来一个什么呢?这拼串还不行,因为N是一个什么呀,N是一个number,是一个整形,你没法跟字符串拼串,所以这块呢,我们选择用一个我们这个模板,字符串这块我直接来一个什么呢?来一个这个先来一个什么呀,缩进我们的杠T,然后这来一个,嗯,然后后边我再来一个什么呀,Emp啊emp这样是不是就OK了,诶emp前边呢,你这样吧,我们把这杠T加上,然后呢,在这儿我就不用写了,在这儿我就不用写了,这缸替我就可以去了,对吧,可以去了啊,给它去除掉,这样一保存,我们来看效果。
24:41
跟效果应该是跟刚才是一样的啊,跟刚才是一样的,我这一执行来查询效果是不是一样的呀,但是好处就是现在我的这个序号是自动生成的啊,是自动通过这N生成的,它会自动去给我们指令信号,你说你把二删了,下边那个三自动变成二,你把五删了那个下边那个六自动就会变成五啊,它是这样一个效果啊,这样一个效果,那这样我们这个查询员工是不是就OK了,但是你可以再再加两个。
25:08
再加点,哎,比如说我这再加一个猪八戒,这个是我们这个猪八戒啊,猪八戒呢是28也是男住在这个高楼中,哎,你注意指定的时候都不用指定序号啊,都不用指定序号,那这时候我们退出系统,然后我们这儿诶退出,然后执行一下还是查询,这时候就有又有一个猪八戒了,诶猪八戒了,猪八戒需要就是二啊,它是自动去生成的啊,自动生成的好,那这个就是我们这个查询员工的功能就完成了啊完成了,那接下来我们这儿还有两工能,一个是添加员工,一个是删除员工,添加员工删除员工我们先不说啊,先不说在这儿我们停一下,你自己先把我整个这个结构给它写出来,然后尝试着完成一下添加,还有这个删除员工啊,我们这里先停一下。
我来说两句