00:00
那下面呢,我们来再来做一个功能,这个功能呢也是用的比较多的,就删除,删除功能呢,要略显麻烦一点。啊,要略显麻烦一点,那么我们来说一下这个删除功能是怎么实现的,打开它。好,我先来一个标题三。A标题三,那么还是我们的老规矩对吧,就是刚才我们的所所谓的这个功能的说明。二功能说明。啊,代码实现对吧,代码啊思路分析,思路分析还有代码实现。好,这边我给他统一的来一个小箭头。那首先我们说功能分析,功能分析呢很简单,就是我们要删除用户了。就来一个,我们就删除一个用户,这对我来说太easy了。但是这边要把它完整的写完,还是要动脑筋的,比如说呃,如果输入负一就退出,如果他输的不是Y和N,就反复的让他输,一定要让他输到Y和N。
01:01
啊,这边还有逻辑,那么思路分析来吧,思路分析打开我们这段代码继续分析,首先还是由下往上分析,那既然你要去删除一个客户,对吧,现在是删除客户,那删除客户呢,我们要做什么事情呢?第一个。你要删除客户,你一定要给我一个ID号。这是肯定的,所以说我要编一个顶力的方法。哎,你我我肯定要编写一个顶力的方法DL,我要接收一个什么呢?我要接受一个ID号,你得给我一个ID吧。但是这个ID情况就很复杂了,他有可能给的是存在这个ID,有可能没有这个ID,所以说你要删除之前呢,我们还得编一个方法,为什么呢。因为你不能拿着这个就干了,你得判断一下。对吧,你得判断一下,虽然不报异常,但是有可能我们前台前端要说到底你这个到底有没有删除生效,所以说我这还要编一个方法。
02:01
但这个大家可以自己思考编写一个方法,比如说这个方法叫做find index by ID,这个意思是什么意思呢?大家看啊,同学们,大家注意,我们在添加这个客户的时候,我们是怎么添加的,是ID作为它的这个呃,是自生长的,但是将来有可能出现这样一个情况,什么呢?就是你的那个。Buffer的索引。跟你这个customer ID不一定是相等的。为什么这么说呢?呃,大家想一下这样一个情景。我画一个示意图,比如说我们在正常情况下,这是个二八分,这可是索引为零。这个索引为一,这个索引为二,这个索引为三。大家想这个索引为零的,其实它的ID是等于一的,这个索引为一的,它是对应二,而且更可怕的是,将来如果我们把这个删掉,删掉这个就上去了,这个上去就意味着我们这个索引为一的,它反而是编号为三的了。
03:04
所以说大家要注注意,我们这个ID和索引并不是一样的,但是我们删除的时候呢,我们是按索引删的,因此我们需要。说find index by ID,为什么我说明了啊,因为。因为我们的这个索引就是奥瑞buffer的索引,我再说清楚啊,Buffer的这个索引。和什么呢?这个索引啊,索索引和和这个ID并不是对应关系。你不能说拿到这个ID我就干,那你可能别人传了一个ID,等于一的你你把那个索引唯一的删了,结果你把你把你的第二个删掉了,那就麻烦了,说必须得写这么一个方法,那么写这个方法过后呢,就意味着有个问题,就是说他有可能发现,有可能不发现,注意这个问题啊,第第三步好如果如果啊。如果发现有,则删除,则删除。
04:02
如果没有呢,则提示只要反出一个删除失败,如果没有就返回这个false,这是我一世机好这个删除客户,那同样道理,我们上面这个主菜单呢,我们也得去玩一把。好,上面这个主要是删除这个客户。删除这个客户他的思路是什么呢?他肯定要去接收一个删除的ID号,就这他接收一个删ID号,准备删除它。二准备删除。那么第二步呢,他要去调用customer service的那一个delete方法,对delete的方法。只是这个滴滴的方法里面呢,它调用了find by ID,就滴的方法肯定会去去调用什么,他要去调用这个find的。所以白的。啊,因为我删不删除要取决于你到底有没有这个对应的索引啊,有可能没有啊,你要删除一个编号为100的,我没有怎么办呢?那你就不能删,好思路分析完毕了。
05:08
那也就是说这是一条思路,这条思路现在我们来从哪写呢?老规矩,从下往上写,打开我们的这一个地方,我们首先找service。输出来了啊,所以我们先写哪个方法呢,先写find ID啊根据。根据什么玩意儿呢?根据ID找到找到indexw没没问没问题吧,那就DF,那就写find的。Inex。By ID,那你就传个ID给我嘛。给我,那最后我返回个什么呢?我返回的就是一个索引,所以说我返回一个int。啊,当然我也可以另行推导,我就开始写了。问题来了,怎么找呢?肯定要便利奥,Buffer肯定是要便利的。啊,肯定便利,因为我们将来这个索引和ID不对应,你肯定只能只能便利了啊,我就变利。
06:02
便利谁呢?R这个buffer,也就是说便利我们的customers。这个应该很简单一件事情,所以说我上来先这么干啊,我先定义一个索引。我先定一个数,我先默认为负一。如果找到了,我就修改它。默认。默认负一。如果找到。找到就。改成对应的,改成对应,改成对应的。如果没有找到呢,那就保留负一,那我上面那个就知道,诶,如果是负一就相当于没有找到啊,我就巧妙的利用这个特点,因为我们所以不可能等于负一。啊,如果没有找到就返回负一啊,如果没有找到。找到就返回负一,好,这个是不是就有了,那现在开始遍历for循环。For循环。呃,那么for循环呢?我们先把它的索引遍历出来,这段你们要动脑筋啊。
07:01
Until。啊,这个地方老师告诉大家,肯定大家一下就知道了,但是让你自己去想,你估估摸着还得想一想,好customers点他的,我这里用的是until。我这样写是对的,如果你用to这个代码就写错了啊,原因我不解释了。Until。Til写完了,好,紧接着呢,我们继续往下写。紧着往下写,那我就要判断了。如果。如果我遍历出来的这个哥们,他的ID刚好就等于这个ID,看看懂吗?哎,就少了一个等号。就说我这个遍历出来这个这个ID,这个索引,当前这个索引他的ID等于ID说明找到这个人了。应该能看懂找到了,那如果一旦找到,那我就将这个,所以改成这个I,不是ID啊,是I。
08:04
能能看懂吗。你别说老师为什么ID啊,你看啊,我们其实是要找他,因为你说删的时候这个数组删的时候它是按照这个索引删的嘛。他不是按对象算的,如果我要求你们用历史的来做。你们到时候要想这个怎么找,好就找到,找到就可以退出了,别找了,因为只能有一个,那就直接break。啊,那么这个直接也可以啊,直接return也行,那的话我看看啊。呃,我我干脆就就不就就break这个就行了,Break。啊,因为他找不到了,找不到就break break那下外面呢,我们再套一个玩意。啊,在breakable把它泡一下,泡一下这个我们学了也用一用好,这里面用了一个控制抽象的这么一个效果。好,现在我把包引啊,包引这个我没有用过的,就不说了,叫U点这个好像叫叫con controls是吧,点breaks。
09:04
诶,然后第二一个下滑包进来了,那就退出了,就退出了。啊,就不循环就退,退出的话呢,不管怎么样,把index返回就可以了。那这个index有可能是两种词,一种就是负一,一种呢,就是我们就是改成这个I了,那这边我们上面就可以用它了,好,Index找到过后呢,下面我们再来写刚才分析出来的这个delete方法。得力的方法是真正干活的。那现在我们来做一下这个。DD de DD的我接收到你给我传的这个ID,就是这个用户ID啊,这个这个ID你是给给我了,好我我拿到它。我拿到它,然后呢,这一段我就返回一个布尔值,那这个时候就有可能有有成功有失败了。因为ID有可能不存在嘛,现在首先我先获取一个index。注意看啊,我怎么带呢,我find by ID in ID。好,这个大家应该看懂,好,现在我做一个判断,如果index它等于。
10:05
负一好,这个就不玩了,就是说明这个就就就跑不下去了,这个就直接退出啊,就不玩了,但是呢,我这样子啊,我们先把这个正常的先处理一下,就如果这个index它不等于负一,那说明我们就找到了,找到了我们就去删除,就去删除,怎么删呢?非常的简单,因为你找到了吗?那就是我们的customers.remove。I index就干掉了。就干掉了。好,那么这个时候我们就返回一个处,说明他成功了,说明他成功了就是找到了啊,那else呢。Else就是说嗯,如如果这个删掉就成功,如果它它不等于,它就等于等于负一,说明它没有找到,说明这个就返回失败,就我们认为你没有找到,当然你还可以标记其他的形式啊,我这简写了一下,出表成功,For表示失败。
11:05
好,这段代码写完了,写完以后回到这边来看上面怎么调用。下面呢,我们要接触ID,调用刚才的DD的方法传入ID。好,这个思路就非常清晰,那找到我们的刚才写的这一段代码,就是我们的view view呢,我们新建一个方法叫df delete。好,先把他的这一个,呃,先把他的这个,我们所说的这个。啊,这个什么来着,看看啊。就删除的。删除的那一个界面,打一下删除界面往这漏页,诶这是删这添加。删除好,我把这个呢给同学们拿过来啊,各位给他拿过来,现在呢,我们来把它写一下。走。好放这了,那现在呢,我们就来让他提示呗,简单的很,上来给我写句话就说删除客户开始了。
12:06
删除客户开始了,然后呢,我们就就让他输出输入一个东西print,输入什么呢?输入这个请输入待删除的编号给我一个。那这个时候呢,我们要接收他这个ID了啊。ID等于什么呢?STd.RA的一个int。Read一个,现在就有一种可能性,如果in ID等于负一不玩了。直接说出一句话,说删除没有完成。啊,我们叫删除没有完成,不一定是失败就删除没有完成。删除没有完成。没有完成就不玩了,直接return不玩了。只有别,别往下面走了,不走了。Return。那么如果说。它就等不等于负一呢,说明它真的要删除了,下面又要来来一个啊,就是提示是否确认删除。
13:07
因为我们还给他一个机会,因为有可能输错了呢。对吧,有可能输错了,也也有可能比如说自己不小心点了一下按钮,或者是干什么,诶出错了,那这个时候呢,我们来接收另外一个词叫choice。CCH。CO。Ice,然后呢,我们还是用std点我们瑞的一个差。啊,并且我把它转成一个通漏,为什么呢?因为我就不区分大小写了,你输大写的Y和小写的Y我都认。我都认好,现在呢,我们再做一个判断,如果说这个你的choice是等于一个。Wide。啊是读一个Y,就是要要删除要删小写的,对,写错了啊,等于一个小写的Y的,那么我就直接调用我们刚才写的customer service里面的滴滴的方法干掉它。
14:07
啊,但是这边也有可能接了。你这个地方有一种可能性是ID不存在,虽然你要删除,但是你输了100号,所以说我再做一个判断。我再做一个判断,那么如果它为真好的,我就提示他删除完成。就是真真真真正正的做完了这事了。删除完成了。好,这个写完我就要让同学们写点东西了啊,删除完成了。那么下面呢,如果说他没有完成好这个地方。就嘛,就说删除没有完成。删除没有完成,就这样就可以了,删除没有完成,那么还有一种情况就是他说的呢,不是这个Y,就是他放弃了,所以说我们还有一个逻辑是else,然后呢,又把这句话再打一遍,就是删除还是没完成,这样大家看我的代码显得很啰嗦。
15:04
特别我你看这个代码写的什么玩意对吧,说诶如果成功了,删除完成A太麻烦了,我们可以这样简化,首先。这句话去掉,这句话也去掉,最后在这来一个return不就完了吗?大家看这个简化能看懂吗?应该很简单,我怎么做的呢?就说如果你输入是一个Y。那么我就去删除,如果成功我就说成功完成,否则其他情况通通为删除,已经完成,上面这个呢,已经做了判断了,也了好代码就写完了,注意啊,代码尽量写的简洁一点会好一些啊,除非说这个代码确实很复杂,咱们多了几句也无所谓。好,这写完以后呢,各位同学,我们现在呢,已经完成到最后一步就是删除了,点this.delete写完。呃,还还我我改改错了是吧,啊滴滴力的好,这个滴力的DD的,我们看看这个地方,它就会提示我们的一些心理信息了啊这掉了来同学们我们运行一把,看看删除有没有搞定运行它。
16:09
请同学们看代码,现在我们我们先看,目前我们客户列表只有一个汤姆,我加一个朋友。加个朋友,比如说加一个蒂姆。然后这个人呢是男的,然后他的年龄呢十岁,他的电话号码112,他的邮箱是定搜狐点。com回车,好,我们看客户列表里面应该有了一个有两个,现在我要删除了啊,输入三。呃,我先说一个负一代表退出,我不干了,好,正确的我再来,这次真的删了。好,我输一个十号不存在的。他说要不要删除,我要删。删除仍然没有完成,再看是还是有两个人,现在我这是不玩了,直接删掉输一个。我输一个二号。好,确认删除吗?确认。
17:02
删除完成,我们数一下,是现在干掉一个我们再删。这种测试最危险的地方是在零件时。所以说大家以后在做测试呢,不能说我有五个我就删,删三个没有一定要删最边界的,就好像同学们以前学那个二分查找。你们应该学过二分查找,二分查找里面最容易出错的是找最左边和最右边的那个数,写的不对的话一定会报错。对吧,因为中间有时候他刚好他就错位就到那了,所以说我们再来删一个人。这次呢,我三一。删掉果然没有任何问题,我们再输出一个四没有了,这时候我还想删,我继续再删啊,我看看这个时候还会报错,我输一个随便输一个2Y。好,完全没问题,现在呢,我们就证明这段代码从这个正常使用都是OK的,好同学们,那关于删除呢,我们就先给大家讲解,到这里我们来说一下这个思路的分析。
18:01
同学们在写代码的时候,一一个是学习呃,老师教给你们的实际技能,第二个是要学习老师写东西的一个思路,我觉得这个是最重要的啊,就说如果同学们通过学习能够掌握咱们做项目和分析问题的一个能力,那么这是最好的一个方式,不然的话,你今年培训了,你明年接着培训,你也受不了啊。对吧,你培训完你最后是什么呢?自己培训自己。啊,你要当大拿,你要当最厉害的,你得冲在前面,公司里面最值钱的是冲在前面的人,不是说等到别人做完了,我把你看代码一看,哦,我就知道了,你都已经是二手了,那你价值一定不是一个档次的,别人挣3万,你最多也是挣1万,为什么呢?你这个活别人也干的了,你不就是个重复吗?但是人家冲在前面,能解决问题,直接攻克难关的这些人,人家的价值才高,对不对?所以说你要一个是学习技能本身,第二个是学习学习的能力。
19:06
好的同学们,那现在呢,我把这个放在这里,那代码实现就简单了,呃,就简单easy了,我们还是按顺序来走,首先呢,我们找到service这一层,我们加了两个方法,一个delete,一个是find的by index by ID,好,各位同学,我先把这个代码呢给大家板述到这里。好,我写上一下这个代码是在哪个文件里边啊,各位朋友,这是在哪个文件里呢?诶在。在customer service.sc文件中。好了,同学们注意看这个笔记啊。就是有时候你笔记没有做好的话啊,你这个自己看起来也很吃力,其这个完了功能我们还有一段代码,诶还有一段代码,这个别放在一起了,换一行吧。啊,还有一段代码,这段代码呢,就是刚才我们在这一个view这一层写的就是定力的方法。
20:05
好的,我把这个定力的方法呢也给同学们拿过来写上。这个滴力的方法是在customer view。在customer view.sc中写的。OK,那关于删除,我们就讲解到这里。
我来说两句