00:00
同学们,我们接着来完成客户信息管理系统的下一个功能,那前面呢,我们完成了显示客户列表的功能,对不对?那现在呢,我们用工量语言继续完成下一个功能,叫添加客户功能。添加一个客户,嗯,那怎么样来完成一个添加客户的功能呢?还是老规矩,首先呢,我们做一个功能分析,大家看这里。就是说当用户输入这么一个选项的时候,这几个选项我们来看一下。大家看到我们这个菜单。我们这个菜单,诶点错了。我们这个菜单里面说的很清楚。如果用户输入一。它输入一,我们就表示他要添加一个客户,那么当他输入一的时候呢,我们就会出现这么一个界面。什么界面让他来输入这一个新的客户的信息。然后呢,把这个客户。怎么样添加到我们的那一个客户切片里面去,能理解这意思吧,好,这是一个功能,好那么思路分析呢,我们来走一走,思路分析肯定要做这了,对吧,要动这个地方,就说你一旦要完成思路分析,肯定就要去在相应的文件里边编写相应的方法,然后调用这些方法完成相应功能,是这意思吧,好,那现在呢,我们把这块给大家走一下。
01:27
好,板书一下。现在我们要完成是添加客户的功能,找一个这个是标题二。对吧,我们首先说了一下功能说明。就是这个要完成一个怎样的功能。第二个呢,思路分析。第三个代码实现。总是三部曲对吧,那功能呢,刚才老师已经说了,就是完成这么一个功能。当用户输入一的时候,我们就让他填写新客户的信息,然后把这个新客户添加到我们的这一个客户切片里面去,能理解那思路我们来看一下。
02:10
思路的话呢,我直接用这个图来说明,来,我们一起完成。首先同学们要知道。因为你这个customer service是真正完成对客户的增删改查的,因此呢,我在这里要加代码了。注意听同学们。好,这里呢,我们说要添加客户。对吧,要添加货物,那就编写一个方法。编写什么方法呢,ADD?爱的方法,这个爱的方法就是将新的客户,将新的客户,怎么样将这个新的客户加入到我们的切片里面去,就是这个切片。对不对,就是customers这个切片。因为你所有的所有的用户都在这个customer这个切片里面嘛,对不对,所以说我们将新的客户加入到customer这个切片里面去,当我们显示的时候呢,我们也是找到这个切片,那这样子最新的客户就会怎么样显示出来。
03:13
好,这是第一个要说的,同样的道理,你这加了爱,那在这儿是不是应该也要写个方法?对不对,那这个方我们要写一个爱的方法。爱的方法。这个方法呢,他要去调用。Customer里面的。是去调用customer service里面的爱的方法。就说嗯,这样子才体现一种封装的效果,就是说这边这个ID去调,真正调用他的爱的方法完成添加,能理解我是吧,好调用customer service APP的方法完成。完成用户的添加,或者叫客户添加。OK,就是这两部曲,明白我的意思吧。好,我把这个思路呢给同学们先列一下。
04:00
好的。那我刚才呢,已经描述了这个意思,这。他要添加增加一个爱的方法,同样在我们的这个view customer view这里面呢,我们也要去写个爱的方法,是他去调用他的方法,你看这个套路是不是也就已经出来了。大家要有所体会啊,你在学习的时候,你一定要体会这个编程的一种思想和编程的一个结构,这样子呢,你在写代码的时候,你才会做到游刃有余。OK,这是我的一个思路。好了,有了思路过后,下面我们就是代码的实现,对不对?来吧,各位朋友,打开我们的这个Vs code,首先找到customer service。Customer service,好,我们来做一个方法,就是添加。添加客户到哪里去,到customers切片中。
05:04
这个难不难呢,不难对不对。照着这个写就可以了,来吧。我把他。改个名叫ad。那么你在爱的时候,你应该给我传过来一个什么东西,是不是应该给我传过传过来一个customer呀?是这意思吧,所以说我就写个customer。Customer,你给我一个customer,我就把它放进去了。Customer没问题吧,这个切片是这种切片啊,它是呃,Customer这种切片,好,我这就接收一下。啊customer,然后呢,这返回一个布尔值。对吧,表示成功了还是失败了。那么我们在做这个切,在添加这一个customer的时候,是不是。嗯,你在这,你在添加这个customer时候,其实这个customer已经在这一层已经给你构建好了。
06:00
也就是说这个customer信息这个这个实力已经在view这一层已经给你构建好了,因此你要做的一件事情非常的简单,就是把这个customer加到这个切片里面去就可以了,是不是就这这句话。就是你这传过来Z吗?是这意思吧,那就是this。点。它的这个切片。不要搞错了它的这个切片。它这切片,然后呢,等于end。APP open的什么?就是在他的基础上将你这个最新的customer加入。把这个加进去就可以了,那加进去过后呢?加进去过后下一步我们要做的事情是什么?下一步我们要做的事情是什么?是不是很简单,就是返回一个处。
07:01
对吧,当然如果说这块嗯,添加失败的话呢,你就返回一个false,一般情况下不会产生一个false,所以说我就直接返回一个处就完事了,能理解啊,这个就是我们的一个操作。这就是我们的一个。好,那现在呢,这个加进去过后,我们现在紧接着应该写哪个文件了,同学们想想是不是应该写上面这个爱的方法了。因为你这个爱的方法,去调用他的爱的方法嘛,对不对,好朋友们来吧,打开这个view,那现在呢,我们就要写一个爱的方法。跟上老师思路啊。好的,我们我们就在这个历史的下面写吧。添加就是得到他这地方应该是得到用户的输入,输入信息构建,构建新的客户并并调用并完成添加并。
08:01
完成添加,好,那我就开始写了啊,同学们推一个栏,把这块粘贴复制一下。然后呢,写个方法叫ADD。对不对,爱的方法,那这个地方我就要就就要开始看这个界面是怎么设计的,大家看它的界面是添加客户好,我这有这个界面对不对。把这个拿过来吧。跟着老师失落。那就先提示一句话。对不对。OK,添加客户,那添加客户的话呢,就会让他输入相应的信息,所以说我就一句句的提示。然后呢,这里我们看看他第一个输的是姓名。对不对,姓名好,来一个吧。姓名,那既然是姓名的话呢,我们应该有一个变量来接收这个东西,对不对,那就是name。初始化一下空。好,我们接收一下。
09:00
SC让他输入嘛,Scan l。跟着老师输了name就输进去了,其他以此类推。是不是其他以此类推啊,有姓名下一个应该输入什么来看一下性别。对不对性别。有姓名,有性别。好性别,那性别的话呢,我们也用一个尖等。来初始化一下空的,然后呢,让他输一个性别,紧接着我们接着往下看,有性别过后,下一个是什么,看一下下一个是年龄。对不对,是年龄吧,让他输这个年龄。年龄好,年龄的话呢,我用一个H。来接收,呃,初始化给他一个零吧,然后呢,这块让他输入一个年龄,再下一个。年龄有了,下一个是什么?下一个呢是。电话号码。
10:00
对不对,电话号码。直接写电话吧,电话好,电话的话呢,我们用那个form。哦,我们看这边用的是什么。呃,什么名字啊,我们看看。Phone,好,那就phone吧。我们跟他保持一致,PH。Foot。也是一个字符串嘛,对吧,好,这里接收一个form。那么,Phone有了下一个电子邮件。我们叫电邮。没问题吧,那电邮的话呢,Email。好的,有个email。啊,大家看到到此呢,我们就接收到这个用户,就是这个客客户端输入的名字。性别、年龄。还有电话号码,还有电子邮件,那这个时候呢,有了这些信息过后,我们就应该构建一个新的customer。是不是应该构建一个新的customer?实例,但问题来了,大家有没有发现这个ID我们并没有输进去?
11:06
为什么我们不输ID呢?大家知道为什么吗?因为这个ID呢,我们并不希望他去指定,我们希望系统给他分配一个ID,注意啊,大家注意,这里面有个细节注意。ID号ID号。ID号没有。没有让用户直接输入。为什么呢?因为ID是唯一的,因为ID是唯一的,唯一的需要系统分配。注意你你们有没有注意到,你们去,你们去注册一个QQ号,你们发现没有这个ID号也是不能让你QQ号也是不是让你指定的,而是系统给你分配的,对不对,所以说这个ID呢,我们要系统分配,那问题就来了,大家有没有发现我们这个customer。我们这个customer,你们有没有发现这个六一个customer其实要输一个ID的,对吧,所以说这个就比较郁闷了,那怎么办呢?我们再构建一个不带ID的就是。
12:10
不需要传输ID的这么一种这么一种方式啊,比如说不带ID的。就是。第二种,第二种创建,创建customer实例的方法。对customer实例的方法。这个方法呢,是不带ID。不带ID,那这个就简单了,我们把它去掉。然然,这儿写个二。能理解我的意思吧,好,这个ID我就不不传进去了就完事了。对不对,那这个ID呢,到时候我让系统给他分配,能理解我的意思吧,到时间让系统来分配这个ID,好这个写完了,那写完过后呢,我们回头到这个地方。来吧,我们现在就可以构建一个customer。Customer等于。哪个呢,就是这个model。
13:02
大家看到我们刚才写了一个model。这个model里面有一个customer的这个方法,对不对,它是公开方法,看懂了没有。注意听啊。那这块呢,我们就可以这样去写了,叫model点。六。六。好,我这块呢,就直接粘过来吧。6CUSTOMER2。对不对,走,那这个时候我们就可以把前面用户输入的信息写进去name。对不对,真的。然后呢,Age,然后。然后email写完了,那有了这个customer过后,同学们下一步就是调用。调用哪一个呢?调用我的这个信息,把它加进去就完了,是不是。那怎么写?怎么写,是不是就是Z点。
14:01
Customer service第。它里面有个爱的方法。这个爱的方法里面呢,把customer传进去。就可以了,那么现在的问题又麻烦了,大家知道麻烦在什么地方吗?就是因为你这个customer是没有带ID的,因为他没有输入ID,所以说在爱的时候,在真正爱的这一个customer时候呢,这个方法应该。应该要去给这个新的客户分配一个ID号。所以说这样一回头,我们发现前面写的这个方法呢有问题,哪个方法就这个方法,他是直接把customer加到了这个切片里面,但此时此刻这个customer是没有ID的,那怎么办呢?我们定一个规则。我们确定。确定一个分配。分配ID的规则。就是什么呢?就是添加的顺序。
15:01
就是说添加的顺序就是他的ID,那大家想一想,大家有没有发现我们在前面给这个customer service是定了一个。字段的。我们是不是定了一个字段。那既然如此,那么干脆就用这个字段加一作为新客户的ID,你看我原先在讲的时候其实就已经说明白了,对不对,那我现在就简单,那我怎么做呢?就这样写。这是点。这个因为因为你看啊,我这地方是引用传过来的,大家有没有发现我一直用的这个customer是个指针。那这样才能保证在你这个系统里边一直用的就是这个customer service,你这样才能保证你添加的这个用户每一次都是在原先的这个customer service实际上添加,如果你这没有这个信号,我可以告诉大家,你永远只能得到一个客户。
16:01
为什么呢?因为你每次来了过后,它就是一个纸拷贝,他一直拷贝,那你原先的那个切片里面的信息就丢掉了,因此你们要注意这方一定要用什么呀芯。如果你不用星号的话,你会发现加一个客户仍然看不到新的啊,你加一个客户你会看到新的,但是原先的那个客户就丢掉了。理解啊,注意同同学们一定要注意听这方是个重点啊,再说一遍,你这地方一定是用这个这个。这个customer service以这个指针的方式来来给这个方法绑定的啊,你不然的话,如果你没有这个指针,会出现什么情况,大家猜。是不是就是说你每次添加一个新的过后,他会分配一个新的customer service,那你以前的那个以前的那个客户就丢掉了,能理解我的意思吧,这点是重中之重啊。因此你看我为什么这写的是这这这种方式啊,星号customer service是它指针类型。好了,那这样子的话呢,z.customer我就加加。
17:02
我就佳佳。加加完了过后。把它分配给这个customer。因为你这个customer。的ID,你是不是给值的,现在就可以给它一个值了,什么值就是它。但这块是个重点啊,大家好好理解一下。好好理解一下。就是为什么这样做,因为你原先这个customer传进来的时候是没有分配ID的,那怎么办呢?我们就用这个customer number做一套新的ID。加一个我就增加一个,加一个就增加一个ID是这个它的数量加D,比如说你是第五个加入的,那你的ID就是五号。能理解吗?然后我把这个分配给这个传进来的customer ID,然后呢,再一下。这样子它就发生变化了,他就在原先看看我写的是this.customer那这个这个this其实就是customer service,而customer service又是引用传递,因此在我整个进行管理的过程中,其实我只有一个实例,哪个实例就是这个customer service,始终是第一次创建的这个customer service实例。
18:16
大家听懂了吗?这块有点绕啊,这块有点绕,大家注意听好了,当我把这个完成以后,那下面的代码呢,就比较easy了。做完以后。我这儿可以做一个判断。如果。这个添加成功。对吧,那当然肯定是成功了,因为这里面我没有考虑失败的情况,所以说我就打印出一句话。打印出一句话,这句话呢,实际上在这也有叫添加完成。是这意思吧?添加完成。当然了,如果真的失败了,我们也留一个接口。你你也留一个判断啊,目前我们是不会失败的。那么就添加失败。
19:01
好,同学们,代码就写完了,那写完以后不要忘了一件事情。你原先在这个地方添加客户,没有调这个方法,现在怎么调,是不是this第二。第二,我们的这个爱的方法。完事了,这个爱的方法不需要传东西啊。你看这个艾特里面是不需要传东西,他在里面让你输入信息,然后构建一个新的客户传给这个service的艾特方法,完成这个操作。大家认真的领会啊,认真的领会好,我把整个保存一下,看代码有没有问题。好,目前没有看到任何,诶有问题了,我们看这里面是不是哪里有问题,看这。他说没有定义这个customer,那对的,因为他在另外一个包里面嘛。是不是这样就可以了?再保存一下,全部保存一下。好的,同学们,现在我们就写完了啊,打开我们的这个地盘。
20:00
然后进入到哪里,进入到我们写的这个项目里边,我们叫customer manager。然后呢,进入到view。来吧,输入CMD。Go。Run。呃,Customer view,走。好,大家看这边有个问题啊,哪里写错了,是58行。啊,我那我可能有个单词写错了58行。Customer v58行写错了。58。Print啊,单词写错了。PRNT。好,再来跑一下。走。好,我们这个时候呢,看到他让我们选择了,我们先来看目前客户有几个,只有一个张三。只有一个张三好的朋友们,我们现在来添加一个吧。
21:00
他说请你输入姓名,比如说这个人的名字叫汤姆,性别呢,我们叫ma,是个男的,年龄20,电话112。好,电子邮件汤姆搜狐点。com回车。好,他说添加完成这个跟我们想的是一样的,对吧,这个跟我们想是一样的,然后呢,关键点就是在我输入这个事以后,我能不能看到最新的这个客户,我们可以看到完全没有问题。这是第二个用户,是汤姆二号,汤姆MAIL2112。他的邮箱是这个,好,那么我们再来。添加一个看看行不行。我添加这次添加添加一个Mary Mary呢是个女的。你。好年龄呢,比如说是24岁,电话号码比如说113。好,电子邮件,Mary。
22:01
啊,qq.com回车,我们再来搜一下同学们,我输入一个四号,我们可以看到这个时候呢,Mary也进去了。没有任何问题吧,同学们。好,到此为止,我们这一个添加的功能就完成了,大家再回忆一下我们是怎么做的啊。一定要把这个思路理清楚,否则的话呢,这个就很麻烦了,同学们知道我的意思啊,大家一定要清楚,好,那么我把这块呢,给同学们整理一下。我们把代码给大家整理一下,代码实现我们做了哪些工作?呃,首先呢。我们我们在这个customer里面增加了一个新的方法,对不对。我们这写了一个新的方法。写了一个新的。新的返回客户的方法叫什么方法呀,是不是就是六。六他是TERM2,这个方法还记得吧?啊好,我们把它整理一下,同学们首先呢,我们把这块。
23:04
给大家整理一把。哦,好,还是老规矩啊,还是老规矩。我把这一块。修改的地方给大家。走一走。来吧。往下还是从下从那个model层往上分析。哦,我们这有一个model。Model。Model里面呢,有个customer订购。在这里我们增加了一个新的方法,跟上老师思路啊,同学们。收件。那我加了这个方法。这个方法呢,是不带ID的。就是在构建这个customer时候不带ID。没问题吧,同学们,这第一个。好,那第二个呢。第二个我们写的是service,是这意思吧,那这边我们写的service。
24:03
Service这个包包下面有一个customer service。这里面呢,我们也增加了一个方法,还记得吧,打开它。我们是增加了一个爱的方法,是不是就在这,在这做了一个改变,其他地方没有动。试一试吧。OK。大家一定要注意啊,你之所以可以看到最新的用户加进去,就是因为我们这是以这个指针方式或者叫引用的方式来进行这个控制的,那就保证我们一直用的一个customer service,你用的是一个customer service,就保证你的这一个切片一直是同一个切片。如果你这写了个新写的不是新号,我可以告诉大家,你每次添加一个新客户,原先那个老客户就看不到了,你们可以去试一下,因为我们知道这个结构体它实际上是个纸拷贝。但是我们是指针的话,它就是一个什么地址,地址的一个拷贝,所以说我们在整个过程中用的是同一个customer service实例,从而就保证我们这个切片也是同一个切片,这样子的话呢,你的增删改查都是针对同一个切片来完成的,所以这点很重要,尤其是初学者很容易在这儿搞蒙圈啊,同学们一定要认真的理解。
25:22
好的,我把这个呢也给同学们放到这里来。没问题吧?好,紧接着呢,我们还有在在上一层就是界面层,我们也做了修改和呃,做了改进,就customer view。View,那在这里我做了什么改进呢?各位朋友?打开我们的view。其实在这里我们改进的地方。应该主要是这个地方,我们加了一个爱的方法。对吧,我们主要是加了一个爱的方法。好,这个方法呢,因为代码量有点大啊。我把直接放过来吧。
26:01
我把直接翻过来啊,同学们。我插一个表格。教了这么一个方法。对吧,在这个custom view里面我们加了一个这个方法,同时。同时我们还做了一个改进。哪里。这儿。就是你把这个方法做完了以后,你在这个书一的时候呢,要调用这个方法,你不调用也不行哦。说老师我这写了个一,你你这如果不去调这个爱的方法也它肯定不会显示让你添加的页面嘛,对吧,所以这块呢也很重要。好,我把这块给大家截一下图。标一下啊。这两个地方都要改。啊,要调用一下,要调用一下啊,是调用我们的这个爱的方法。调用什么呢?这个爱的方法。对吧,调用这个方法你才能真正看到呃,这个添加的页面。
27:00
保存一下。我就直接放到这个框框里面了啊,直接放到框框里面了。好的,这就是我们关于这一个什么呀,客户添加功能的全部实现。全部实现,大家好好的理解一下,那听到这过后呢,我希望同学们也把你的代码,把你这个功能呢,也先给我写到这,然后再接着往下看。好的各位,那关于这个客户关系管理系统添加客户这块呢,我们就给大家介绍到这里。
我来说两句