00:00
好,我们来完成客户信息管理系统的第一个功能,显示主菜单和完成退出软件的功能,把它放在一起,好,根据老师的思路,我们开始来完成这个功能。好,跟着老师思路啊,同学们,第一个功能。给他来一个标题二。那么首先呢,我们来做一下这个叫做功能的说明。功能说明我们先给它列到这里来,功能说明完了过后我们说一下思路分析。思路分析第三,一个代码实现。是不是这个流程呢,代码实现记住啊,我们写任何一个东西的时候呢,就要把这个把它搞得很清楚,这个功能很简单,就是说什么意思呢,就是当。当用户运行程序时,程序时可以看到主菜单,可以看到主菜单。啊,当输入当输入。
01:02
输入。输入50。啊,可以退出该软件。明白这第一个功能,那思路分析也很简单了,我们刚才已经画出来这个程序的框架图了,我们首先呢,要把customer这个类,就把这个customer这个这个结构体给它实现了,再编写这个customer view,这时呢customer service可以暂时不写。因为这里面还没有涉及到对客户的增加删除修改和显示嘛,对吧,所以说这个呢,可以暂时不写,就这个啊同学们。就这一块可以暂时不写,那么我们现在呢,只需要先写一个customer,再写一个customer view就可以了啊,准确的讲,连customer连customer都可以先暂时不写,但是呢,我我们可以先把这些都先把这个架子搭起来,好吧,我们可以把这个核心是这块就是实现,如果只是实现这个功能的话,这块是核心,另外这两个呢,可以先把它搭起来,只是呃,这这个文件和这个文件可以先写起来,但是呢,里面呃,可能还没有具体的写太多的东西,能理解我的意思吧。
02:12
好,现在呢,我们开始干啊,就是编写。编写哪个呢?重点是编写customer。View。V订购啊,另外呢,另外。另外可以把什么呢,Customer。Cast。Customer。对吧,Customer,我看这没写错吧。customer.go和。Customer service。Service也写上啊,也写好。呃,写一部分写一部分写上啊写上好,我们现在呢,来完成这个功能了。打开我们的这一个页面,我们新建一个文件。
03:01
新建一个文件夹,这个呢,我们叫做customer。Customer什么呢?Manager。Ma na,好吧吧。Manage manage就可以了。那现在呢,我们先打几个文件夹,首先呢有个view。这个呢,我们把。写V的这些程序写到这个文件夹里面没问题吧,我们再建一个文件夹叫什么呢?Service,把业务逻辑我们写到这个包包里面去,我们还有一个文件夹叫model。把相应的东西写到这边去好吗?好,首先呢,我们先来看第一个。我们写的时候啊,同学们,我们建议大家从从这个最下面这个model开始往上写,这样比较方便。好的,那现在呢,我们来开始写第一个model。那我们写一个文件叫customer。
04:01
跟着老师思路。好的,我package一下model,注意听讲啊。然后呢,这个地方我们写一下,就是说定义或者声明一个customer。Customer结构体。Customer。结构体它表示什么呢?它表示一个客户信息。对吧,那也很简单了,那就type。Customer。写起来它有哪些字段,我们来看一看,首先呢有ID好这块我就不一个个写了,因为我这里呢,也有一个准备大家看清楚了啊,因为这个比较简单,我就把它粘过来了。这块代码没难度啊,同学们,我简单跟他说一下表示什么意思。这个就是ID号了,大家一看就知道这是客户的ID,这是客户的名字,客户的性别,客户的年龄,客户的手机和客户的电子邮件。
05:03
是这意思吧,但是呢,因为你将来这个客户信息会。会在哪里使用?同学们想一想。是不是到时候我们会在这一个customer service这个文件去用。那既然如此,那么我们在这个customer这个结构体里面应该给他提供一个方法。这个能想得通吧,给他提供一个工厂模式的一个,呃,工厂模式的一个方法,工厂方法吧,给他返回一个customer这样一个对象实例,这个是我们以前讲过的,对不对?好,那么这边我们编写一个。编写一个工厂的。工厂模式啊,能够方法啊返回。返回一个什么呢?Customer的实例,这个能想通吧?啊,使用工厂模式。啊,使用过程模式,我们来写这个东西好B。
06:02
然后呢,这是一个谬对吧。六。你有一个什么呀,Customer这样一个对象实例。那么这里呢,我就返回一个customer。能理解吧?返回。那什么呢,同学们,那你这地方肯定要给我传参数吧,你不给我传参数,我怎么知道是什么呀,所以说ID。In,这个能理解吧,名字。是最。真的。性别,你给我传进来一个性别。好,再来一个age年龄好,这个代码呢就会越来越多,怎么办?可以换行写。是不是老师以前讲过,换行的时候要把这个逗号保留到上一行,能理解吧?Edge有了form手机。是一个时寸类型,然后email时寸类型写完,然后呢,这个地方我们就可以return一个这样的实例,对吧,怎么返回。
07:06
是不是这样返回就可以了?我们把值给它ID。等于你传进来的ID,然后呢,Name。等于你这个这个这个到时传进来这个name值对不对,Name再来真的。GDR返回一个真的。再来看age,返回一个age,能理解哈,Form。返回一个form。没问题,接着我们再往下面看。下面签email。Email返回一个,你这方给我一个email,我就把它创建起来。好,写完了。这大家能看懂吧,这是一个工厂模式,使用工厂模式啊,咱不要说编写一个使用工厂模式,返回一个customer,实力没问题吧。因为到时间我会用它嘛,好这块代码就写完了,我先保存一下,看有没有代码错误。
08:06
好,我们可以看到这里面有很多错误啊,我看是为什么。无效的。无效。呃,他说是一个无效的,是不是,因为这是为什么呀,是不是当时我有一部分这个代码是从这拷贝过来的,里面有些字符可能是出了问题了,我们把它清一下啊,遇到这个问题大家不要怕,清一下就可以了。就这里面肯定有些特殊字符,我把它清空。再保存一下看看。好像没问题了。对吧,在整体往这边挪一下,就说有些时候你在粘贴代码的时候,有可能会把一些。特殊的字符,或者说它不能识别的字符也被粘过来了。那最好的方法呢,就是大家可以先把它放在记事本里面,把它放进去再清一下,再粘过来,明白我的意思吧,把格式给它去掉,再粘贴。
09:05
好,这个就写完了,紧接着我们来写12位四。Service呢?我们先写一个大体的结构,把它放到这,叫customer。Service。点够。好,我们package一下。Service没问题吧,呃,那么现在呢,我们先写一个结构体放这。对不对,Type。Type。叫customer。Service没问题吧,然后呢。Ru。好,先写到这里吧,先写到这里,这里干什么呢?我们说一下该结构体。街。Customer。完成对什么呢。完成对。Customer的这个操作。
10:00
啊,主要是包含及包括。包括啊,我们写叫包括什么呢?增删改查。增删改查改查。那有些同学说老师,那你既然要对它进行一个操作,那你不必不可可可少的需要有一个切片,就说你大家看我这是不是已经画了一个图啊,我说了就是你因为你要对个customer进行操作,那你这个结构体里面至少要有一个字段,这个字段呢是。一个customer切片,也就是说你这个service里面就声明了一个customer切片里面,就把我们就把这个所有管理的customer信息保存到这个切片里面,然后呢,在这个地方完成增删改查,能理解我的意思吗?啊,这点大家注意一下啊,好,现在呢,我们可以先把这个定义下来。先定一下这个没问题啊,先定到这儿。好,到时我们这有一个customer。
11:01
是。好,那到时间我们这有什么欺骗呢?那就是model。第二。里面有好,那应该这样写,切片应该这样写的对不对。还还,还有印象吧,别,别忘了customer。好,这时因为我要用到model里面的这个customer,他们不在同一个包怎么办?是不是要引爆inport?怎么引,是不是从这个src下面开始引入go。靠斜杠,然后呢,我们是。这个项目叫做什么呀?叫做customer什么呀。Manager,我们看是不是这样写的ma。是是这个包包吧。没问题,然后再一斜杠,下面有个model。是是不是这样就可以了,同时我们还要定义一个属性啊,就是我们要定一下目前到底有多少个客户要记录它的最大编号,因为到时这个编号呢,我们要自动的增长,因此我们还要定义一个属性或者声明一个字段。
12:15
字段表示当前有多少个这个切片啊表示。当前切片。切片含有多?已经含有多少个?多少个什么呢?多少个客户。这个这个字段呢,我先写到这,大家可能现在不知道是用来干什么的,Customer number。啊,Int以后这个呢,还可以作为这一个新客户的编号,注意听啊。该字段,该字段后面后面还可以。还可以作为作为新客户的这个ID号。
13:02
加一在他基础上加一就行了啊,加一括号加一。好,这个呢,我就定义好了啊好定义好了,我先保存一下,看有没有代码有没有错误。好,我们可以看到目前呢,也没有报错,对不对,好,写完这个过后,我们下一步呢,就来写这个customer view了,明白我的意思吧,写customer view。好,打开它,我们新建一个文件叫customer。View。大家知道这个是做界面的,对不对,做界面的好package。那么我要打一个包包。叫view。V这个标包。啊,再打一个包叫命,命这个包啊,命这个包。啊,因为到时呢,我们这做一个主函数嘛,啊命这个包。好,Function。Me?跑一个,我们先看看这个代码能不能跑起来再说啊import。
14:03
Format。PRNTN。好,我们写一个OK。好,我们先看一下这个代码能不能这样写。保存一下啊。好,我们来运行一下先。看这个OK,能不能正常输出CD,点点CD,再点点CD到我们的刚才写的customer。Manager。这个没去啊,DRCD到V这个包包。然后呢,DRGO。Run。什么呀?Custom view跑起来。我们可以看到呢,确实是能够输出的,对吧?好,下面我们开始要写了,那既然我们讲过。你你要把这个界面的显示功能封装到这个customer view里面去,于是乎我们要写一个结构体,这个没问题吧,我们要写一个结构体来了。
15:03
Type。View。因为你目前呢,这个结构体它就是在本文件用,所以说这个C可以不用大写,能能明白吧,好ru。写上啊写上,好,现在呢,旁的不说,我们先来。写一些方法给就是显示主菜单。跟着老师思路。然后呢,Customer view。好,我们来写一个,呃。C。CV吧,简简单这样写啊,CV。星号。是不是给他绑定一个方法。干什么呢,叫命。主菜单。那这个主菜单怎么显示呢?还是老规矩,用这个for循环,还记得吧,我们以前是不是用过这个方式啊,负循环,那这个for循环怎么显示呢?打开我们的这一个,呃,这个设计界面。
16:05
它是这样显示的。我把它复制一下咯。好的。我把粘贴到这里来。大家看是不是有点看不太习惯是吧,开始写了人。这个问号啊,这个把它包起来。没问题吧,这第一个好,紧接着写第二个print。也把它包起来。把这个地方。粘贴拷贝一下啊,呃,这个地方。捡过来。好,这边是不是可以稍微的整理一下。对吧,好,这是一个,我们再来写下一个。下一个呢是二叫修改客户。没问题吧,好,紧接着再来一个三。三是什么删除客户?跟上思路。同学们。第四一个功能是干什么呀,显示客户的列表。
17:04
没问题吧,好,最后一个五。五是干什么呢,退出。好,五四退出。粘贴一下。把这稍微的整理一下。好退出好,最后呢,我们还有一个叫他请选择。对不对,For print。不要那个换行了。请选择一到五。那同学们又又要思考了,因为你目前呢,既然要让用户去输出一到输一个一到五,那是不是就意味着我们这一个地方应该有个变量来接收它的输入啊。是不是好,所以说我在这呢,定义一些属性。定义。必要的B。必要的字段。哪些字段是必呃,哪些字段是必须要的呢?字段。
18:01
好,第一个字段就是这我要用来接收它的一个输入,这个是必要的,对不对,K是准。好,这个是干什么呢,接收。用户的输入。能理解啊,跟着老师思路啊,有点听不懂的同学一定要动动脑筋。第二一个是不是我要如果他输一个五的话,是不是我就退出了,因此呢,我还有一个变量干什么呢,还是老规矩有个loop。Loop,一个布尔。这个呢用来表示。表示是否。表示是否。是否循环的显示。循环的显示菜单,主菜单这个在前面。我们其实用过这个这个这个方式还记得吧。好,有了这个过后呢,我们来做一个判断,来接收他一下啊,注意听讲,注意听讲,那现在呢,我们就接收了。
19:03
是看SCN,好,我就接收到那这个CV里面有一个,干脆这样子啊,我们为了偷一个懒都全部叫瑞算了。好吧,这个没毛病啊,可以这样叫this点。呃,这个K。没问题吧?那么现在我就用Switch语句进行判断。SWITH。Z4.k。z.K那现在呢,我们就第一个,如果输入的是一。对吧,如果输入是一好,这个时候干什么事呢。这个地方我们就先说出一句话,就说添加客户。没问题吧,好,其他意思类推K2。K2我们就输出一句话就说干什么呀,K2是他要修改客户是这个意思吧。修改客户。
20:00
好,我们再来看K3。K3的话呢。K3。如果是CASE3就是删除客户。是这意思吧,叫删除。我们也把它粘贴复制一下。这个比较简单,我就。这就不啰嗦了,好吧,是如果是输入一个是的话呢,我们就提示另外一句话叫什么呀,叫做显示客户列表。好的,最后一个,第五个比较关键。如果是K5,它就表示要退出了,如果要表示退出,我就把这个loop跟着老师说loop,我把它制成一个false。就是表示他要退出了,能理解好,最后还有一种情况就是他说的不是一到五怎么办。Default提示一句话,你的输入有误,请重新输入。你的。你的输入有误,请重新。
21:01
重新输入完事。好吧,请重新输入完事,那下面呢,各位同学。那我就要判断你这个loop现在是不是已经为false了,如果他确实是false,那么我们就退出这个菜单的。退出这个菜单,同时也就退出了整个这个循环,相当于说退出我们这个程序了,能理解吧,好,我写一句话,如果说。Lo。this.loop为假,我取反就为真了,如果它为为假了,我就break,那这个地方的break相当于就是跳出整个for循环了,明明白的意思吧。好,跳出这个循环过后呢,我们这儿再打一句话,就说你退出了软件的使用。你。退出了客户关系。管理系统。客户关系。
22:01
管理系统。好,这个呢,就是这么一句话,就肯定就退出来了,好同学们想一想,目前我写的这一个方法,其实是跟这个结构体绑定的,对不对,那现在呢,我们是不是应该在主函数来调用它呀。这个大家能理解吗?是不是跟我们前面讲的是一样的,就说你先写了一个结构体,这个结构体呢是可以展示一个页面的,但是这个结构体你要实例化才能去调用它,对不对?于是在这里写一句话,就是说在主函数中。主函数中创建一个什么呀?创建一个customer view实例。啊,并运行并。运行其主菜单,并运行显示主菜单。所以说这个架构已经搭起来了,大家看到没有,你你看这个关系是不是好,现在呢,怎么去创建一个。
23:02
这么这么一个实例啊,非常简单吗?那你这儿不是已经有了吗?是不是已经有了?有它的话,我就直接溜一个。我这这方就不需要六了,我就直接写一个啊。来吧。Cost you。Customer view。对于。谁呀?就他。对不对,那这里面呢,有几个参数,我们给他一下K默认为空,这个没问题吧。K默认给个控制符串。这大家看能理解啊,然后呢,它这边有个loop。路,我默认给他一个处表示,它就是要反复显示,然后呢,通过它来调用我们的主菜单。大家看看能不能反应过来啊。能反应过来吧,这个就是显示主菜单。
24:02
显示主菜单。好,同学们,我们来运行一下,看看我们第一个功能是否已经完成。而且能够正常运行,我们要做的第一个功能就是干什么显示主菜单,并且可以退出软件,对不对?好,我们来玩一把。跟老师失落。好。好,我们可以看到此时此刻呢,他说,你可以选择一到五。好,现在我们比如输一个一,诶你看他说添加客户。对吧,但是没有退出对不对,我在输二。修改客户输三。输四都没推出来,我输五。退出了。那说明目前我们第一个功能的的确确已经成功的完成了,对不对,大家看是不是这个道理啊。那现在我把代码给大家整理一下。大家看看我们写了哪些代码,我们把这个流程走一走啊。
25:02
根据我们这个设计呢,我们先写了customer。又写了customer service,还写了customer view,只是说目前呢,我们还没有用到customer service和customer这个结构体还没用到,但是呢,我们已经写了一部分代码了。只是为后面真山改茶打了一个伏笔。虽然你现在没有用,但是后面马上就会用到service和customer,能理解吧?好,我把代码给他整理一下,第一步我们写了这么一个东西,我们首先呢,创建了一个新的这个文件夹,对吧,Customer manager。Man man在下面呢,我们有一个model model包里面有个卡。点go。是这意思吧,好,有了它过后呢,我们又写了。第二个。在这个地方,我们又写了第二个包包,这个包包叫service,还有一项我们写的是customer service go。
26:06
对吧,我们还写了一个包包叫view。View,这个view呢,我们。写的这个文件叫customer view,对吧?好,代码我们给大家整理一下。第一部分代码,Customer。这个代码呢,我们是这样写的。跟上老师,失落同学们。好,我们写的是这样子对吧,非常简单,我把这个代码呢,直接给同学们放到这个地方。让大家一看呢,也就一目了然了,对吧。非常清晰,就是定了这么一些字段,那有些同学老师这个字段你是怎么知道的呢?所以说要看需求分析。就说你这个customer里面有哪些字段,完全取决于你的需求分析,要显示哪些哪些信息,你比如说我为什么提取出来是六个字段,是因为我看到这个界面了。
27:01
我看到这个界面。大家看这里,因为它这个界面后面有一个显示客户列表里面它拥有六个字段信息,那我反推回来,我就知道一个客户应该有六个字段,这六个字段我是这么推断出来的,知道吧,所以说有时候你要根据需求分析来反推我们某一个结构体里面包含哪些方法和哪些字段,听清楚没有。这点很重要啊,这点很重要。嗯,那么我们又在这写了一段代码,是不是customer service,我们又写了是什么东西呢?一样道理,我们也把它给同学们放到笔记里面来。找到他,跟上思路。在这里面,我们定义了customer service这个结构体。只是目前暂时还没有用到,后面马上就会用到,我们还写了customer will go,这里面呢,我们写的东西要相对多一点。
28:02
对吧,而且都已经用到了。来看看一下。怎么写的?Customer view是不是在这里面写了一个主菜单呢?而且呢,定义了两个字段,一个字段是接收用户的输入,一个字段是控制是否还要循环的显示主菜单,每个字段都有用。OK,我把它也放到这里来。好了,同学们,经过这一段的编写呢,我们已经把第一个功能显示主菜单和完成退出软件功能完成了。那同学们呢,拿到这段代码以后,我希望同学们先把老师写的这段代码给他走一遍,而且要加深一个理解,好吧?好,关于第一个功能的实现呢,我们就先给同学们讲到这里,大家先消化一下,吸收一下。
我来说两句