00:00
同学们,我们来继续完成客户信息管理的下一个功能,完成删除客户的功能。大家先来看一下这个界面。大家先来看界面。功能说明。当出现了一个删除客户界面时候呢,要求我们输入一个编号。这个编号就是我们要删除的这个客户的编号。然后呢,这边会提示他是否确认要删除对不对,所一个Y就是真的要删除,否则的话呢,咱们就放弃删除。但是大家想一想,这里面有没有一个问题,就是这个客户输入的这一个编号,它是否存在的问题。比如说我们现在一共有五个人,你非要删一个十号的,那肯定就要提示删除失败,或者说没有这个ID是不是,所以说我们这个删除呢,它相对来说比前面添加要考虑的事情要多一点,因为添加的情况呢,我们直接自增长一个就行了,但是删除要考虑有或者是没有的问题。
01:06
同学们,那现在呢,我们来把这个删除功能做一个分析,然后呢再做代码实现。调查老师思路。来看一下。还是老规矩,我们先把功能进行一个说明。功能说明。对于这个功能,刚才其实我们这个图片都已经说的很清楚了,对不对,就是这个图。把这个图的对应的功能实现就可以了,思路分析,还有大码实现,我们来聊一聊。代码实现。那怎么样来完成这个思路呢?我是这么想的,大家跟上老师思路,肯定我们要去。先编写一个方法,比如说这个,呃,编写一个函数。编写一个函数,比如说这个函数呢,我们叫做范。
02:00
啊,这样写啊,嗯,应该写这样一个函数吧,咱们取个名字叫什么呢?B。B。Inex。这个这个函数它用来干什么呢?它是这样子的,就是根据根据用户输入的这个ID去查找。去查找该idd。是否存在?是否存在?这一个customer。OK customer是。结构体数组中。对。如果存在,如果存在,就返回该ID对应的index。这句话有点不好理解哦,说老师这说是不是有点模模糊糊的,这个ID不就是index吗?不一定,大家想啊,同学们,假如现在我在一个数组里边有五个人,大家刚开始的时候它是一号,二号,三号,四号五号,对不对?但是大家有没有想过,假设我把这个三号删掉了?
03:20
假设我把三号删掉了,是不是我四号和五号要往前面移动,要把后面这个位置让出来。大家理解我在说什么吗?就是你把这个三号删掉了过后呢,其实你的四号和五号要往下面移动,也就是说缩引为这个索引呢,就对应变成四,变成四这个人了,变成五这个人了,大家想想你的ID就和你的索引其实没有对应关系的。啊,其实你默认情况下都没有对应关系,你看一号编号为一的,它,它在初始的时候对应的索引也是零。编号为二的,这这个人呢,他。它的对应的索引呢,也是一,而我们实际上在进行删除的时候,其实主要是考虑的,呃,就是我们在把它移除的时候,主要考虑这个索引。
04:07
因此呢,我们这里面必须要通过ID去查找。这个是否存在,并且返回他对应的索引,因为这个索引才是我们真正这个这个客户在在这个数组的位置,明白吗?我加句话,因为。因为这个IDID注意听这句话啊,ID和这个index并不是啊,不是这个完全对等的,不是一一对应的关系。就是说这个不是你的ID等于一,你的索引就等于一,明白这意思吧,不是对应的关系。这点大家注意,而我们在进行删除,而我们在进行这个便利的时候,我们其实是靠这个索引的,所以我们主要是靠索引来处理好这个思路,我们就写完了,那。这个放的ID完了过后呢,我们还应该在编写。
05:03
编写一个函数。比如这个函数呢,叫delete。定义的该函数什么呢?该函数该函数根据。根据接收的接收的这个index。来判断来来判断是否可以删除。对,那这地方我们这个index怎么来判断是否可以删除呢?那就看这一句话了,因为我们根据这个ID返回对应的索引,那这边就应该加一句话,加一句神话呢,就是如果。加上这么痛啊。如果ID。ID存在,存在则返回对应的索引,否则返回负一。大家明白吧,就是你这个ID存在我们这个数组里边,我们就返回它对应的索引。
06:01
如果他没有存在,那就换返回负一,那我然后再写一个函数,专门用于删除。这个客户这个。这个delete函数专门用来删这个code的,该函数接接收一个index来判断是否是否可以删除,如果哈,加油,如果接收到的接收到。的这个index。哦,接收到这个index是负一。就。就放弃删除。放弃删除就不删除吗?就不删除。不删除,否则,否则就删除。对,呃,删除该索引该index对应的客户。完事了啊完事了,那下面呢,不管大家这块是不是是不是听明白了。我现在就开始写代码了,写完代码回来再解释第一句话和第二句话,大家应该理解的就比较到位了,跟着老师说,那开始写代码了啊,首先呢。
07:05
我们先写一个方法,就是根据输入的ID。干什么呢?返回这个index,如果没有就返回负一,能理解这个意思了啊,那同学看int find。Find index,你给我传一个ID过来,能理解这个意思吧?那现在我怎么知道他有还是没有呢?好,我先这样子来写,肯定要变例了,初始化为负一。Int I看清楚了,For循环I等于零了,I小于多少呢?你现在是不是一共有customers?这么多个人,哎,不是customer number这么多人能理解吧,你你现在是不是有这么多人呢,然后呢,爱加加,我现在开始比较。
08:00
如果说如果说什么呢,Customer。哎,我我这写customer这样写啊,就是我们现在这一个S数组里边认真听。它这个I啊,它对应的ID就等于你输入的ID,说明怎么样找到了。说明这个就是。找到。如果找到的话呢,不用犹豫,咱这个时候该干什么呢。把这个index成I。啊,把这个I付给index,也就把这个index呢变成I,也就是说这个index呢,就是指向了。呃,这你当前这个ID对应的那个索引。也就这个I才是真正的索引,明白了吗?而我们这个ID呢,其实是客户的ID,客户的ID和说明没有关系。这个时候我们处理完了,过后就return index,大家想一想。大家想,如果这里面一次都没进来,或者说没有进来哈。
09:05
他其实进也只能进一次,因为我们ID是唯一的。ID是唯一的,再再说一遍,ID是唯一的,那么这个地方返回如果是负一,那说明它在这里面就没有匹配到一个。然后就返回负一,如果不是负一,说明他已经找到找到了这一个ID。对应的这个索引。而这个索引就是I嘛,好,这个就写完,然后呢,我们再写一个方法。这个方法呢,咱们就这样写了,叫做delete。我假如说用这个。一来就是返回一个一表示,表示这个成功哈,那现在开始这样写delete。我接收你给我传的这个index。我把这个做一个注释,这个稍稍有点。呃,有点麻烦我做一个说明啊,第一个返回int,如果是一。
10:03
就说明删除成功,就说明删除成功了。删除成功。OK,如果,呃,如果返回什么呢?返回零。范辉林。表示,表示删除失败。能理解我的意思吧,就说明你这个没有,没有这个人吗。那现在呢,我们就开始来走了,首先我们先调用。在这里我们应该怎么写呢?好。我们这样写。首先嗯,哦,这边这个这个应该是接收的ID哈,这个应该是接收,接收的是ID。这里接收的是客户要,呃,接收的是要删除的,是要删除的这个客户ID,这个能理解哈,那现在我们首先得下这个index,掉了一个函数呢,调这个find的index。
11:07
Find index,那我把这个ID传进去,它就会给我返回一个index,现在我就判断了,如果这个index呢,等于什么呀,如果等于负一说明什么呢?哎,说明其实现在呀,你这个人是不存在的。说明ID。在数不存在。是不是不存在这个人,或者叫不说明不存在。ID。ID这个客户。就是你传进这个ID对应的客户不存在。那么如果不存在呢?这个时候我们也不啰嗦了,直接返回一个零。表示删除失败。表示删除失败了,能理解不?OK,那A是。A20的话是不是说明。
12:00
这个人的确存在我们这个数组里面,我们就要删除了,说明存在这个人。存在就要删除。那么就要删除,我们怎么删除呢?我们怎么删除呢?所谓删除,大家理解什么叫删除吗?其实就是把这个人移出我们这个数组,明白吧,一定要理解什么叫删除。删除的本质。本质就是将将ID编号这样写,将编号为ID的这个。用户或者客户移掉,移除。移除。啊,这个移除。那同学们想,我们怎么样把这个人移除出去呢?我举个例子,比方说现在我们这里面这个数组里面,假设有一。二三。
13:01
四五个人,假设我们要删除的是三号这个人。你怎么删除啊。实际上是不是就相当于说让四这个人往这边移动,一个往前面移动,让这个五呢,再往前面移动,相当于这个三就没有了。没有过后呢,让这个number这个就是我们客户的数量再减一就可以了,是这意思吧,所以说它实际上是这样子的。怎么呢?即第一步将。将什么呢?就是从应该是这样从index加一开始。这个一定要理解啊,从index加一这个位置位置开始。整体。整体前移。那这个应应应该是这个数组啊,它是这个数组从index加一这个位置开始整体迁移。
14:00
这是第一步要做的事情,第二步将我们这个customer number减一。减减一。总的数量减少一个了吗?其实上就这个流程,好,那现在我们先来看怎么整体移动呢?其实非常的简单,同学们不要想那么复杂,如果你想复杂了,代码就。你就写不出来了,是不是index加一这个位置开始,然后呢,I只要小于customer。10A,然后I加加。只要这个条件满足的情况。我们就做件什么事情呢,我们就customer看啊,Customer是这一个I减一等于customer I,这大家能理解吗。这句话能不能理解?是不是我们从index啊,这个这个in啊,这个这个没有定义是不是。那前面我们再定一个I吧。
15:03
大家看是不是现在我们是从index加一这个位置开始。然后呢,把这个位置的这个位置的这个位置的值往前面移动一个。是不是付给了I,把I的这个I所指向的这个客户付给了I,减一是不是相当于整体移动,你你们可以想一想。假设我们还是以刚才五个人为例,这是第三个人,12345,假设现在呢,我们要删除的是他,那index就应该等于二二加一就变成它是不是?把这个地方的值付给它是不是?一就相当于customer I付给customer I减一付给他了,付给他以后这个I加加,I加加是不是?这个I加加I原先是等于二的吗?等于二,现在I就等于三,I等于三的话呢,就应该指向这个位置了,然后再是。哎,不,我想想啊。
16:02
哦,Iii,原先是我们重新来一遍。其实我已经说的很清楚了,可能同学们还是有点听不太明白,对不对?我再给大家来一遍哈,12345,我再画一次好不好?现在呢,Index in,我我们这有个内存表哈,现在index呢?Index等于几啊?假设我们要删除就是三,Index等于二,能看懂吗?那现在I呢,就应该等于三。是不是I等于三,是不是指向它了呀,那相当于说把这个地方的值给到前一个,是不是这个四就移动前面把它覆盖了,变成四了。变成四以后,I加加I加加,是不是这个移动就移动到这个位置了,移动到这个位置以后呢,I仍然小于customer number,因为现在是四嘛。现在这个变成四了嘛,四呢,呃,还是么,就把这个四呢再给二减一,所以把这个付给前面一个,把这个四改成了五。这个变成四,这个变成五了,变成五过后I再加加变成五,五不再小于等于五,不再小于五了,所以说就退出这个循环,退出这个循环过后呢,其实这个数组就变成了12453就没有了,然后把这个整数customer number再减一个一变成只有四个人了,就这么来的,听懂了吗?
17:19
好,没有听懂,自己再好好想一想好不好?其实也不难,Customer number减减就可以了。那么写完。也就是说删除这个工作咱就做完了。看懂了,那这个时候你删除完了过后,是不是要表示我们删除成功了就return。在这一个一就可以了。代码写完。代码写完以后,同学们是不是我们现在可以来调用这个删除的工作了,那现在我们是不是还需要写一个文件来调用它,也就是说现在我们还要写一个函数,就是再编写一个delete view。函数干什么呢?
18:00
让用户,让用户可以输入要删除的ID。并且,并在命名又名用函数中调用。能听懂吗?应该不难吧,同学们,那老师就不啰嗦了,直接写代码了哈,那现在呢?我们已经有了find index,有了ex,呃,Find index,有了delete,我们还需要一个干什么呢?显示删除客户的列表。对,然后干什么呢,然后调用。好,然后显示删除客户的界面。然后调用好,现在我们开始写这个,最后这一个方法哈,叫void。Date view。那这个界面长什么样子呢?同学们,删除客户的界面是不是长这个样子的?
19:01
是不是是不是这样子一个界面啊,我把这个界面呢,拿过来哈,拿过来,我把这界面写到这,待会呢,我们就照着在照着这个界面来完成就可以了。首先。呃,我们来写出这样一个界面,首先我们要print f。对。PF,斜杠N,然然把这一个粘贴复制过来。对不对?好,现在呢,我们再来写一句话,Print f。还是徐刚恩。提示他请输入要删除的编号。如果输入负一代表。退出好不好?然后这边输入完了过后,是不是我们应该接受一个ID了,那ID我们搜一下ID。比如这个就是你要删除的ID,可以写个DD的,或者直接写个ID就可以了,我搜一下看F。百分号D,然后呢,拿一个。地址服务ID,这个就是我们接收到用户输入的ID,看清楚没有,那么同样我们要过滤一下这一个回车,现在呢,我们就来开始判断,如果ID它等于负一。
20:12
说明什么?同学们能告诉老师吗?说明这个人呢,他又不想删除了他,他输入一个ID,他说我不删除了,输一个负一。对不对,所以这面我们就直接说一句话就可以说你放弃了,删除。可不可以同学们,或者叫删除没有完成可不可以,那就把这个拉过来好不好?我就偷个懒了。这边就提示一句话,就是说你放弃了删除。你放弃。放弃,删除。删除客户了。对,那放弃删除,后面就不用再走了,直接return。能理解我的意思吧,如果说他说的就不是负一,说明他真的想删除,那怎么办呢?我们是不是应该提示他一句话呀?啊,我们可以先暂时不提示啊,那提示吧,就直接提示P,我们就提示这个哥们一句话什么呢?就说确认是否删除。
21:04
是不是这边还有一句话,就是确认你真的要删除吗?嗯,再问他一下。你你输了一个不是负一的,真的要删除吗?好。看看它到底是不是真的要删除,所以说我们再来搜一下哈,我们再搜一搜一下它的选择,那既然要搜一个选择,是不是我们还得定一个叉呀,能理解吗?Hoicc,看看它到底是输的什么,好,我来一个空格。没你吧,同学们。好,当然我这边也可以最好初始化一下,因为待会呢,我要收值好这边ID了,我也初始化一下,来一个零,好初始化来个零无所谓,因为他后面反正他都要改嘛,他都要去改。那这时候我们就让它输入呗,那就百分号C。然后呢,这边来一个弟子符choice。能看懂不这就输输到这个盖上,那同样我们过滤掉。回车,然后就判断了,如果这个输入的choice看清楚啊,它如果就等于大写的Y。
22:03
那我们就恭喜他了,所以他就是要删除。他如果就是要删除的话,那就没什么可说的,我们调用我们前面写的delete的方法就可以了。这个大家能绕过来吗?叫定义的方法,那这个时候我们就把什么传进去呢?就把他的ID传进去。同学们想一想哈,这个delete是不是本身也返回一个零,或者是一个一,表示删除成功或者删除失败,如果他返回一个一,说明删除成功,如果返回一个零,说明这个ID不存在,你也删除不成功。苏州呢,我现在用这个来判断一下,如果这个地方啊,同学们大家看,如果它就等于零。啊,也就是说你这边整个返回的是零的话呢,说明什么问题。说明你这个地方是删除这个ID啊,应该这样去说PF。就说说出说一个什么呢,说出删除没有完成,删除没有完成,因为ID并不存在。
23:09
是不是说明删除失败了,删除。删除没有,没有成功,删除失败。失败的原因是什么呢?因为是ID不存在。就是你删除了一个不存在的用户。Else。那如果如果不是零的话呢,肯定就是。一了吗?那就提示他一句话,恭喜删除成功。好,删除成功了。删除成功。没问题,那么就写完了。那这个地方删除删除这个你看当然还可以改哈,说老师我不喜欢等于零,我觉得这个太麻烦了,我可不可以这样写呢。我可不可以这样写,因为等于零嘛,等于零本身是个甲的意思,那我能不能这样写呢?一样的啊。就我取反也是可以的,因为零取反不就增了吗?真的话就说你返回一个零,我取一个反A删除还是失败,ID不存在,这样写也可以的。
24:03
同学们,那我们现在delete view就写完了,那在哪里调用?同学们是不是老师刚才说了一句话呀,我们这个delete view还是在还要在这个mean me you mean mean you这个函数中调用一把呀,在哪里呢?各位同学是不是在这儿去掉写delete view。把什么传进去,不用传什么界面就已经打出来了。是不是到这面它就会调用我们这一个dt viewu啊,各位朋友来运行一下,我们看看此时此刻代码是否能够正确的运行。是否能够正确的运行。来看一下哈。各位朋友来一把。我们现在呢,就直接来删除好吧。来一个删除。我负一。你放弃了删除没有毛病吧,没有毛病,我们再来删除一个。其实现在呢,我这边我这边只有一个编号为一的人,如果我输一个编号为二哈。
25:01
我我故意这样写一个三,我属于一个编号为九的,其实我这个没有编号为九的人。所以说它会提示什么信息呢?如果我输的就是Y。假设我输的就是Y同学们,我说我就就就是要输完那回车。删除失败,为什么ID不存在吗?那这样子我们再来往里面添加几个人,我们再来删好不好,来添加几个客户吧,比如说第一个人是叫李,呃,李事是不是性别,嗯,F我就随便写了,同学们20岁电话111没问题吧,那么李四搜狐点com。回撤好,我们现在看一下呢,现在是不是有俩人了呀,好,我们再加一个人好不好,再加一个王五,王五性别为M,然后12岁的一个人,电话112,没问题,邮箱邮箱呢,我们也是网五点百度。
26:01
啊,百度点com回车,然后呢,我们再来列一下四。现在我们来删一个吧,我们我们把这三种情况都试一下,我们先删一个存在的,再删一个不存在的。好不好,呃,删两两个,一个是删除存在的,一个删除不存在的,看看是否能成功,我们先删一个存在的,比如说三号。那同学们,我要删人了哈。好,我我要删一个三号的,三号是王五,看清楚了回车。是否要删除Y?大写的Y。回车。他说删除成功了,是不是删除成功了,我们看一下还在不在呢,果然删号没有了,好,我们再接着删,我们把它全部删完,再加一个这样组。更安全对不对?呃,我们再删吧。上一个编号为二的。是不是真的删除,真的删除又删除成功了,好,我们再来删除,我们现在再看一下。
27:00
现在只有一个人了,只有一个人了,那只有一个人的话呢,我们可以再删一个不啊,其实可以再删的,再来一个删。好,这个就就要小心点,看看有没有出问题哈。他说是不是要删除还是大写的Y,是不是删除还是成功了呀,我们再来看四号是不是一个人都没有了,一个人没有我们再加一个,可不可以再加一个来走。再加一个,比如说再加一个。呃呃,王五还还加一个李四吧,啊,还加一个呃,张三。那这个时候张三呢?F年龄20,电话110。好,然后张三第二什么呢?搜狐点com回撤,再来看一下有没有这个人呢,四号。好,有了完全正确,我们再删一个不存在的,这次呢,我输一个九号,九号其实是没有的,这个人是不是回车,我真的要删除。ID不好应该是没有问题的,添加删除显示怎么试都可以的,应该没有问题,我输一个五退出。
28:06
代码技术。同学们,那关于删除呢,老师通过前面这个代码呢,就完成了,大家看看能否理解,我把核心代码给各位同学梳理一下好不好,我把核心代码给他梳理一下来写一写。那么我们这个删除的核心代码主要是哪一块呢?其实就三个函数,准确就三个函数,第一个就是find index。第二个呢,就是delete,第三一个就是delete view是不是这三个函数啊,其实就这三个函数,所以最为核心的,然后呢,在哪里调用呢,在注意听。在我们的main main me nu调用,调用delete view函数就可以了。那具体来说,具体来说就是老师在哪写的呢?诶具体来说其实就是老师在这写的代码,说白了就是这块。
29:01
诶在哪里呢?就是在这调用的是不是K3的时候,我们调用了一把。然后呢,经过测试都是OK的,同学们,那关于这一个删除客户的功能,老师就把分析还有实现给大家讲完了,这块呢稍微麻烦一点,大家一定要认真的去理解,最好把不看老师代码自己写一遍。这讲我们就先给大家讲解到这里。
我来说两句