00:00
好,我们接着来完成删除客户的功能。老规矩。我们还是。把功能说明。思路分析,还有大码实现呢,给大家分阶段分阶段的完成。好,我们来看一下这个功能怎么去实现。先板书一下啊。给他一个二号标题。对不对。给他一个二号标题,那首先我们来说说说一下这个功能分析功能说明吧,就是咱们要完成一个什么事。第二个呢,就是思路分析。然后就是代码实现。首先我们要完成的功能呢,很明确,它是这么一个意思,大家看一下,就是当用户输入希望删除客户这个选项过后。那么这个地方就会提示他做这么一个工作。请选择待删除客户的编号。如果他输入一个负一,就代表他不想删除了,然后呢,如果输的是呃,一个其他的数,我们就要去删除这个ID。
01:08
但是这里有一个问题,同学们。就说如果他输入输入的这个ID号不存在。那么我们应该给他提示删除失败ID,不存在这样一个信息,对不对,所以说你要考虑到这个这个情况。嗯,那么而且它输入一个一过后。输入一个具体的编号过后呢,我们在这个地方应该再给他提示一下是否真的要删除,如果输入一个Y就代表真的要删除,然后根据它输入的ID去查找这个这个这个客户再把它删除。对不对,那如果说查找不到这个ID怎么办呢?那就提示没有这个ID号,删除失败就可以了,这是功能分析,我把它板书一下。那紧接着我们来看一下思路分析,还是打开我们这一个程序框架图,那既然你要去删除一个。
02:01
客户,那显然同学们想我在这个地方。就是在我的这这个位置啊,同学们就是在customer service里面是不是要添加一个方法了。对不对,我们要添加编写一个方法。编写一个编写方法,什么方法呢?Delete。这个方法呢,就会接收一个ID号,就说他这么会接收到一个ID。对不对,就是你到时间给我传个ID过来,我去。删除就是删除一个客户。但是有一个问题,就是我们在删除的时候呢,我们肯定要去查找这个ID到底存不存在。才能决定是否真的删除,因此我们最好还要单独的写一个函数。什么函数呢?就是慢by ID,就是根据ID去查找一个客户的方法,这样呢更好管理,更容易组织我们这个程序,所以说在这个基础呢,我们还要编写方法。
03:04
注意听啊,编写。边诶。写到这了啊,编写方法,什么方法呢?我们写个find by ID。Band。By ID,当然这个地方也可以写成一个大写,因为你别的地方也也有可能用到这个方法,对不对?同样他也接受一个ID。对不对,他也接受一个ID。然后呢,这个地方就会返回,返回这个ID号对应的。对应的这个切片的索引。切片的下标。呃,为什么这样说呢?就是因为你要删除这个客户,你就要知道你这个客户对应的切片的下标,因为你最终是从切片,是从这个切片把这个用户干掉的。因此你不知道切这个客户的这个切片的下标,你是没有办法删除的,知道吧。
04:04
那有些同学老师你这个ID不就是对应的切片的下标吗?不一定。不一定啊,同学们。呃,大家想,因为我们这个ID号,我们这个客户的ID号是在不停增长的,是这意思吧。那也有可能你原先有一个客户删除了。然后呢,你又加一个新的,加一个新的话,它的编号是在不停的往上涨的,所以说这个客户的ID和他对应的切片的下标不一定相等。能理解我的意思吗?因此你要真正删除这个客户,其实你要找到这个客户对应的下切片的下边,也就是他对应的customer这个切片,它是在第几个位置,因此我们要完成。这两个。那同样的道理了,同样的道理,你把这个写完以后,在我们的这个customer view里面,你还得编写一个方法,是不是叫delete。
05:03
Delete这个方法。D这个方法,这个方法呢,它去调用。他去调用customer。对不对,他去调用customer service里面的delete方法。方法。完成客户删除。他是这么一个逻辑,对不对,删除好跟上老师思路没有,他是这么一个逻辑,也就是说这个delete呢,去调用service里面delete,这个delete里面呢肯定要去。看一看有没有这个客户说他是这么一个关系,大家看懂了没有,好,我把它呢也标出一下。啊,标出一下,然后换一个颜色吧。大家看一下这个逻辑,就是说这个思路分析呢,我们就。到此为止,好,我把这个思路分析给同学们,放到我们的笔记里面去进行一个板书。
06:02
那也就是说我其实要在这编写两个方法,要在这编写一个方法,然后这个方法呢,要去调查能理解。好,我把这个思路分析呢放到这里来,没问题吧,下边我们就来根据前面思路分析来完成这个功能。完成这个功能,这个功能呢,其实也是蛮简单的,来吧,打开这个service,我们来完成一个删除,首先我们先写一个方法啊,根据ID。根据ID查找。查找。客户。对应的。对应。在什么呢?在切片中。切片中对应的下标。对吧,如果没有找到怎么办呢?返回负一,如果没有该ID,该ID没有该ID。没有该客户吧,客户没有这个客户返回返回一个负一就可以了,就说他如果返回一个负一我们就知道。
07:06
嗯,你对应的这个ID在,就说你这个ID在这个切片里面是不存在的,就说没有这个客户。啊,根据ID查找客户,在切片中对,如果没有该客户返回负一就行了,来吧,Find。老规矩。这段代码呢,我就这样处理一下find by ID。Find by ID好,这时你要给我传一个ID进来,对不对?有没有成功,我返回一个int。对不对,好,首先呢。我们就来根据这个来进行一个查找了,进一个查找,那怎么样我才知道有没有呢,那我肯定要便利。便利,我先定一个index好不好?默认为负一。就是默认我是找不到的,然后呢,我遍历这个切片,看看有没有这个ID。
08:00
跟上思路啊。便利,我们这个切片,这个切片就是这个这个service里面的哪个切片呢?就这个切片还还记得吧。这个切片。啊。OK。好,那我就开始变异了。那我就这样遍历就行了,可以用for,那我这我这就不用,我用一个普通的方法就可以了,I。零,我从零开始便利。I小于嫩。我对这一个切片。就是this。他的这个cost这个切片长度统计出来,爱加加。哎,加加,那我判断了啊,如果说你这个地方。你这个切片。追听。你这个切片。里面的I这当前这个ID啊,这个客户他的ID。
09:00
他的ID就等于你现在要查找这个ID,那说明什么,就找到了,能理解我的意思吧,就是说也也就是说现在我在遍历这个切片的时候,我发现对应的这个这个下标的客户,他对他的ID就等于你要查找这个ID,那说明什么问题?那说明我找到了。找到,那找到的话,这个index就应该改成多少呢I。能理解这意思吧,没,没问题吧,这个好,Return c index完事,那如果我找不到怎么办呢?找不到那就返回的是负一了。那负一就代表没有找到嘛,他如果进到这里面呢,肯定就不不可能是负一了,就说明找到了,好吧,好,现在呢,我们再来写一个方法,就是根据ID。根据ID删除。删除这个客户。删除这个库,当然是从哪里删除呢?是从这个切片里面删除,对不对,从切片删除,切片中删除。
10:01
好,这个地方呢,我们来写一个方法,Fun。老格局仍然跟这一个进行一个绑定。跟我们这个结构体进行一个绑定,对不对,那我就写一个方法了,同学们。那这个结构体的话,我写一个方法叫delete。They need。好的,那我也接受一个ID。对不对,那有没有反,有没有这个删除成功,我返回一个布尔值。好,那首先我先看一下你这个ID,就是你你准备删除的这个ID到底有没有,我们先来看一下,我用index来接收。那我怎么调用呢。我用这个Z点。Find by ID。我把这个ID传进去。我把这个ID存进去。那这个时候这个index就有两种可能,一种呢,就是找到了它是一个非负一的,还有一种可能就是负一对吧,那如果是负一就简单了,就判断如果index等于负一说明什么问题。
11:03
各位同学,如果这个index等于负一,就说你这个要删除的ID,删除的这个这个这个客户对应的ID根本不存在,就说。如果index等于负一,说明没有这个客户说明。没有。这个客户。没有这个ID号啊,没有这个ID,没有这个客户。说你你输入这个idd,这个客户没,没有没有这个客户。比如你输一个十,那么没有一个客户的ID等于十对不对?那我怎么办?那就不要走了,就直接return一个false就完了。对吧,那说明没有没有是吗?没有那就直接return就完了,就代表失败了,那否则的话怎么怎么玩呢?那就找到了呗,找到就删除嘛,那怎么从一个切片里面把这个人干掉呢。好,大家看演示一下啊,如何从切片。切片中删除一个元素很简单,其实非常的简单,就这样写就可以了。
12:07
大家看我一些吧,This点这个this是不是就service里面的这个this,然后呢,它的切片。就是他。好,大家看我这怎么写啊,它就等于end。大家看这面很关键了,Open的什么?注意看啊。他。从零这个位置开始截取到index,大家看这地方是什么意思,就是说我先。用一个切片的方式,我找到从零,从零这个地方开始取,找到index,但是这个地方是不含index的,还记得吧,大家还记不记得这个切片的用法,就是说这句话就是代表从这个切片里面的D0这个索引开始取到index。但是不含index这个元素,还记得吧?如果你忘了,忘了的话,你自己去看一下,看一下我们这个地方啊,我在前面讲这个切片的时候,我们是讲的很清楚的在哪里。
13:07
大家看老师在讲这个切片的时候。包括它的使用,包括它的入门介绍,包括它的使用事项,我全部都讲过。如果你忘了,你把这个第七章这一块。拿出来自己再看一看好不好,那我不可能每次再去重讲一次,呃,重讲一次这也不现实,对不对。好,现在呢,我们接着往下看,那你后面这一部分怎么写呢?各位同学后面就从这儿写了。就是从index加一。到后面全部写完。但是后面这一部分。如果从后面全部写的话,这一方是不是可以空下来,但是因为你后面这部分也是个切片,应该怎么写点点点。应该是记得啊,同学们好,这样呢,我们就把谁删除了,就把这个中间这个叫index这个元素给干掉了,那干掉完了过后,最后返回一个处。
14:02
完事了。好,也就是说到此为止,我们就把这个方法和这个方法写完了,那么现在留了一个方法,就是customer这个view要写个delete来调用。滴滴的方法完成这个删除能理解啊,好,打开我们的view。打开V的话呢。老规矩。现在呢,我们写一个方法。给这个customer写一个方法,就是得到用户的输入,然后呢删除对应的ID。啊,删除。删除。输入ID,删除。该ID。该。ID对应的客户能理解吗?那这个就简单了,我就直接这么玩了。好,写一下。然后这方写一个delete。DLETE。没问题吧?好D,嗯,那么现在呢,我们就看它的界面是怎么设计的。
15:06
呃,他在删除的时候,它有提示信息。他说删除客户好。我把这一段代码啊,把这个输入写到这来。对不对。好,首先说他是删除客户,那删除客户的话呢。嗯,他会提示这么一句话。他说请删除什么什么对不对。好的,我把这个拿过来。好,我把它包起来啊。包起来。二请删除。请输入这个待删除的客户编号,那现在呢,我用ID来接收一下,默认我给他一个零,默认我给他一个零,我给一个负一吧,好吧。忘了给给个负一。那现在呢,我们就接收了啊,点scan。
16:00
好,我接收一下你的输入,然后我就做一个判断,如果ID它等于负一,说明说明什么,说明你想放弃,或者你就回车了,因为你回车就相当于什么都没有输入吗?那这个ID还保持负一,如果你输的是负一,那还它还是负一。那说明这个时候你就你就不想不想玩了,你不想删除了,对吧,那就那就直接return就完了,不做任何操作你就放弃。相当说放弃删除。放弃删除操作,那么如果它不等于负一,那就说明它的的确确输了一个编号。那输了一个编号过后呢,好的,那现在呢,我们就可以往下继续来删除它,那就调用哪个方法。这个时候已经拿到ID了啊,这个时候已经拿到ID,然后我们调用。来。调用什么呢?我们调用这个service的方法来完成它。
17:01
好,我们走一下啊。调用service的delete方法。对吧,调用service DD的方法。那这个怎么做呢?非常的简单啊,非常简单,我们来做一个判断就可以了,那就是if。If。那他看有没有删除成功嘛,那就是this点。这个customer service。里面的。点delete。好的例子,那我把这个ID就传进去了。对吧,那这个时候他有可能删除成功,也有可能删除失败,那我就做一个判断。好,这帮我写一句话。呃,我们看他这是怎么提示的啊,同学们看。哦,这还有没写完呢,他这还有一个确认是否删除,那我这儿还有代码要写啊,不着急,这块还没有完事。因为他还要输入一个Y才表示真的要删除,因此呢,我们这儿还要提示他一句话。
18:05
还要提示他一句话来写到这儿。提示他什么一句话呢?我们来看一下他这是怎么说的,他说确认删除,请输入这个Y。否则就那个什么啊,不删除了,那我用这个choice来接收一下O,默认我给他一个空串。好,我让它输入啊,那我用这句话scan,然后呢,把这个choice粘过来。是不是就输入,那我就做一个判断了,如果。如果。呃,这个那就还得他,如果输的不是YNN,我就让他反复的输才行。对吧,我让他反复的输才行。那就这样子了,还得用个负循环。还得用过for循环。啊,先先暂时不这样处理吧,就简单一点,如果他输的不是Y和N,呃,我们就就不删除就完了。好吧,那就if if choice。
19:02
如果它等于。这个Y或者。等于这个大写的Y。我们都认为他要删除。等于大写的Y,好,在这两种情况下呢,我们认为它就是要删除。是不是他就是要删除,否则他就他就不删除嘛,他就不删,如果说的不是Y和这个呢,我们就不删除,我们有做判断啊,按理说这方还应该有个有个循环判断,就是它这个choice必须输入Y和N,这个在前面我们学过。这个同学们自己加进去就可以了,这里面我再做一个说明,这里同学们啊,啊,同学们可以加入一个循环判断。循环判断,判断什么呢,直到。直到用户。直到用户输入这个Y或者是N或者是N才退出。才退出。
20:00
这个呢,大家可以自己把它加进去,也不难,因为在前面我们学过这个东西,好我这里就没有做那么判断啊,待会我我也可以加上,但是现在先不加好,然后如果是不是这个的话,那就说明他真的要删除了,于是我把这段代码。粘贴拷贝过来。大家看一下是不是是这个逻辑吧,好把这个注销了。那这个时候呢,就就就可以去调这个service里面的delete的方法,对不对,好这个地方我们就说删除成功了,如果为真就删除成功,Else就删除失败,好我把这一句话提示过来。他这话叫删除完成。好,我把这个提示信息呢,粘贴复制到我们的这个代码里面去。还有一种情况就是他删除失败了。如果他删除失败,我们也应该给他提示一个信息,就说删除失败。失败的原因呢?我们这目前只有一种,就是该ID号不存在。输入的ID号。
21:01
ID号不存在。ID号不存在,请重新输入就完了,对吧?好,我把这个呢对齐一下。大家看能不能不能理解。能不能理解,没问题吧。后来也就说如果是等于Y,或者是小写的Y或者大写的Y,那么这样子就做完了,那最后不要忘了一件事情啊,因为你要删除嘛,所以说你这应该调用它一下对不对,This点什么delete。写完了。Z,第二,DD写完了,好,同学们,那这个删除任务我们就全部写完了啊,大家看,也就是老师先写了这两个方法,再写了这个DD的方法调用。这个service里面的delete完成了一个删除任务,大家能看懂吧?应该不难吧,好,我把它保存一下,看代码能不能跑起来。OK,目前没有任何错误,对不对?有一个错误,我看哪里错了。
22:00
拿出来点这儿。啊,我们可以看到它这有个错误哦,这个地方是等号。对吧,应该是等于而不是负值。啊好,这样子应该就没问题了吧,再保存一下。好朋友们,来运行一下,看看删除能否成功,我先退出。来玩玩一把吧,走。好,我们先来看一下,列出目前有一个张三。目前有个张三好的,那现在呢,我们来添加一个客户,比如说是汤姆。性别,Mail。然后呢,年龄20,电话112。电邮汤姆搜狐点。com回车,好,我们列出来一下,目前呢有两个客户,我们再加一个客户啊,同学们再加一个客户,比如说目前呢加了一个Mary。Mara是女。与。
23:00
OK,回车年龄比如是25岁,电话113,好,电邮Mary qq.com,好列出来一下,我们可以看到有三个客户,现在呢,我们准备把二号汤姆删掉。把二号汤姆删掉,我们来看一下。输入这个三号。他说请输入待删除的客户编号,我输一个,我输一个二。回车。他问我是否确定要删除,好的,我就输一个Y吧。那么他说删除完成。删除完整,我们来再列出一下,看看二号视频有没有看删掉了啊。大家可以看到二号已经没有了,当然有同学说老师那二号没有这个编号,这个编号不就空着了吗?空着就空着,无所谓,就在我们实际开发中呢,这个编号空了,就说曾经被占用过,我们就不去用它了,如果你要用它的话也可以,那你就怎么办呢?你把这个三号,这个客户往前面挪一下,把它变成二号,但一般来讲,业务逻辑不会这么处理,大家想一想,一个人的这个编号是唯一标识他的,你不能说你刚刚加进来的时候,它的编号是三,结果过了一段时间编号变了。
24:16
那编号变了,这个人就自己都不知道自己是什么号了,比如说你你在这个学校,大家想想,你在学校里面去了,过后学学生一般会有个学号。有了这个学号过后,你想一想,如果我们班有一个学生退学了,你的编号大家都会变一下吗?不会变,那三没有就没有了吗?无所谓,知道吧。大家说一说,这样子业务处理也是合理的,咱们不用把这个三号变成二号,没有没有必要啊,那我们再加一个,好,现在呢,我们再加一个史密斯进去。史密斯,他是一个男的。好,然后他的年龄是56岁。好,他的电话115。好再来他的邮箱,比如说这次是这个新浪点com。
25:04
回车,那大家想想,当我加了一个新的客户过后,这个时候他的编号应该是几呢?它的编号应该是在三的基础上加了一个一,就变成四了,能理解吧?啊,能理解,应该啊,好,我们来走一个四列出来,我们可以看到史密斯变成了四号。没问题,好,我们继续来删除。这次呢,我故意删除一个不存在的编号,比如说89。他说是不是要删除回车,他说删除失败,输入的ID号不存在完全正确,完全正确,最后我退出系统。好,那也就是说通过刚才这个演示呢,我们已经把删除客户这个信息这个功能完成了,而且没有任何错误,好了,同学们,我把代码给同学们整理一下啊,来走一走。那么我们怎么来实现这个功能的呢?好老规矩。我把整个。
26:00
它的修改的位置。我给同学们整理一下啊。来吧。首先呢,我们先写这个model部分,Model是不是没有变化呀。Model这里面有个customer,这个go有没有变化?这个没有任何变化。没有变化对不对,是没有变化吧,然后这个service。啊,这个不是service啊。这写错了,刚才啊,这个应该是service。这个service应该这个是view啊,这个应该service刚才那个写错了。啊,这里面有变化,还有呢,就是我们的V这一层。有变化。对不对?好,我们看service有什么变化。那service这边呢,说白了就是增加了两个方法,一个是delete,一个是。Find by ID是这意思吧?好,我把这个呢给同学们整理一下。
27:00
好,我争取把这两个放在一起一行啊,放在放在一个位置就可以了,这样就比较简单。好,Delete可以了。我们就增加了两个方法。一个是犯的ID。一个是delete。增加了这两个方法。我把它标出来,一个是find by ID。一个是delete,这是我们service层,就是业务层给他做了一个处理的。好,我把它呢给同学们放在这,大家应该一看就知道了吧,我们再看VV有有也有变化。View有变化,View呢,也增加了一个方法叫delete。对不对,是不是delete呀。在delete。好,我把这个d delete呢也给大家整理一下,争取把它粘过来啊一下。这个是我们V这一层界面层来做了一个处理。其实大家看到界面层这块呢,主要是接收了一个ID,但真正删除完成删除的任务还是谁呀,还是他这个是我们的核心对不对,就上面这块其实都属于界面的东西,就是交互的东西,哎,让他输一个什么东西,让他是不是真的要删除等等,但真正删除从这个切片里面把这个用户干掉的,还是靠这个方法。
28:15
大家要看到这个本质对不对,好,我把它呢也翻过来完事了。好,完事了。当然最后呢,我们在这调了一下。这句话也要写进去啊,如果你不调用,那相当于白写。啊,大家把这块自己加进去就行了。好了同学们,那根据刚才老师这个讲解呢,我们就把删除客户这个功能呢,给大家讲完了,大家领会消化一下。争取把老师写的这个代码呢,自己能够独立的完成,这样你才能真正的体会到,或者真正运用好我们的工浪语言来完成项目开发,包括后面咱们写更更多像区块链的东西,你没有这个好的基础,后面也是很难把这个项目拿下来的。
29:01
好,同学们,关于这个删除客户,我们就给大家介绍到这里。
我来说两句