客户管理系统-显示客户列表|学习笔记

简介: 快速学习客户管理系统-显示客户列表

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:客户管理系统-显示客户列表】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/626/detail/9721


客户管理系统-显示客户列表

 

内容介绍

一、 功能说明

二、 思路分析

三、 代码实现

 

项目功能实现-完成显示客户列表的功能

一、 功能说明

-----------------------------客户列表-----------------------------

编号   姓名    性别   年龄   电话          邮箱

 1    张三        30   010-56253825  abc@email.com

 2    李四        23   010-56253825  lisi@ibm.com

 3    王芳        26   010-56253825  wang@163.com 

----------------------------客户列表完成--------------------------

当输入要显示客户列表时,能够显示所有客户信息。

 

二、 思路分析

需要编写 CustomerView 和 CustomerService

1. customerService

(1) 显示客户列表,编写方法List【返回客户信息,其实就是切片】;

(2) 编写 NewCustomerService 返回一个 customerService 实例。

2. customerView

编写一个方法 list 去调用 customerService 的 List 方法,并显示客户列表。

 

三、 代码实现(改变如下)

1. customerManage/model/customer.go

增加了返回用户信息的方法GetInfo

//返回用户的信息,格式化的字符串

func (this Customer) GetInfo() string {

info := fmt.sprintf(“%v\t%v\t%v\t%v\t%v\t%v\t”,this.Id,this.Name,

this.Gender,this.Age,this.Phone,this.Email)

return info

}

(注:输入一个customer,会返回格式化后的客户信息)

2. customerManage/service/customerService.go

增加了两个方法

(1) //编写一个方法,可以返回*CustomerService(注:指针类型)

func NewCustomerService() * CustomerService{

(2) //为了能够看到有客户在切片中,初始化一个客户

customerService := &CustomerService{}  (注:创建一个对象并初始化)

customerService.customerNum = 1  (注:默认值)

customer := model.NewCustomer(1,”张三”,“男”,20,“112”,zs@sohu.com) 创建一个初始化客户并加入新的客户;由于是在model中创建的,所以要写成model.NewCustomer;“()”表示方法,不能使用“{}”)

customerService.customer = append(customerService.customers,customer)  (注:给这个切片加了一个customer,再传给customer)

return customerService

}

(3) //返回客户切片   (注:写list方法)

func (this * CustomerService) List() []model,Customer{

return this.customers   (注:返回的类型是切片类型)

}

3. customerManage/view/customerView.go

(1) //增加一个字段 customerService

customerService *service.CustomerService(注:在service包里面,所以是service.CustomerService,“*”表示指针类型)

(注:customerView.go要调用customerService,所以必须要有一个customerService字段才可以实现调用,否则不能满足面向对象的要求)

(2) //显示所有的客户信息

func (this *customerView) list()

(注:在customerView中写一个list去调用customerService中的list方法,来完成显示功能)

//首先,获取到当前所有的客户信息(在切片中)

customers := this.customerService.List()

//显示

fmt.Printfln(“-----------------客户列表---------------”)

fmt.Printfln(“编号\t姓名\t性别\t年龄\t电话\t邮箱”)  

(注:表头,用“\t”标比较整洁)

for i := 0; i< len(customers); i++{  (注:用for循环进行遍历)

//fmt.Printfln(customers[i].Id,“\t”,customers[i].Name…)

(注:这样写比较复杂,比较low)

fmt.Printfln(customers[i].GetInfo())

(注:在customer.go中写一个方法,显示该用户的信息,用GetInfo)

}

fmt.Printf(“\n----------------客户列表完成-------------\n\n”)

(“\n”用来换行,使得输出结果更整齐,方便查看)

(3)

case “4”:

this.list()

(注:this 指代 customerView,customerView 中含有list方法,list方法又去调用了customerService 中的 list。这样做很有结构性,扩展性、可读性都非常好)

image.png (注:添加新客户时,要先输入到切片中进行保存)

(4)

//在main函数中,创建一个customerView,并运行显示主菜单

(注:结构体创建完毕,要实例化后才能被调用)

customerView := customerView{

key :””(注:初始值为空字符)

loop : true,  (注:默认返回主菜单)

}(注:这里是给出前面的参数)

//这里完成对customView结构体的customerService字段的初始化(注:创建customerView的时候顺便创建)

customerView.customerService = service.NewCustomerService

(注:在service包里,不需要其他参数,所以已经完成了初始化)

//显示主菜单

customerView.mainMenu()

小结:

写程序要有结构和框架的概念,如果程序比较大但不用框架图的话程序容易看不懂。客户管理系统中,customerView 是界面,customerService 是处理业务逻辑的,真正干活的,customer 是数据。customerService 中的切片维护了所有的客户信息,customerView 是调用 customerService 中的方法来完成相应的处理。

相关文章
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
3745 12
|
算法 IDE 程序员
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(三)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
349 5
|
数据可视化
R语言lasso惩罚稀疏加法(相加)模型SPAM拟合非线性数据和可视化
R语言lasso惩罚稀疏加法(相加)模型SPAM拟合非线性数据和可视化
|
Kubernetes Java 微服务
2023年全新java架构技术框架Quarkus实战神仙文档
Quarkus是一款有别于传统Java架构的新技术框架。它建立在我们熟知的技术栈上,使用了诸多成熟的技术,如JPA、JAX-RS、EclipseVert.x、Eclipse MicroProfile和CDI等,并将这些技术与Kubernetes紧密融合在一起。用户可以借助Kubernetes高效的调度运维能力,最大限度地节约资源。
|
存储 设计模式 算法
把书读薄 | 《设计模式之美》设计模式与范式(行为型-迭代器模式)(下)
本文对应设计模式与范式:行为型(65-67),迭代器模式 (Iterator Pattern),又称 游标模式,用于 解耦容器代码和遍历代码。 不过,很多编程语言都将迭代器作为一个基础类库,直接提供出来了。日常业务开发,很少自己实现一个迭代器,当然,弄懂原理能帮助我们更好地使用这些工具类~
199 0
|
消息中间件 监控 Java
|
14天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
34777 39
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
下一篇
开通oss服务