开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:客户管理系统-删除客户】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9723
客户管理系统-删除客户
内容介绍
一、功能说明
二、思路分析
三、代码实现
一、功能说明
它是当用户输入希望删除客户这个选项后,系统就会提示:请选择待删除客户的编号(-1退出,即如果输入-1就代表它不想删除了) ,如果输入的是其他的数,需要删除id。如果输入的id 号不存在,应该提示删除失败,id 不存在。而且输入一个具体的编号过后,应该再提示一下:确认是否删除(Y/N)。如果输入Y就代表需要删除,再根据输入的id 去查找客户,再去删除。如果查找不到客户,就说明客户不存在,此时删除完成。
二、思路分析
1.customer[表示数话] model 层
(1)表示一个客户
(2)客户各种字段
customer表示一个客户信息,因此它需要其含有客户必须的各种字段。
type Customerstruct
Id int
Name string
Genderstring...
写个方法 ,显示该用户的信息Getinfo
2.customerService [处理业务逻辑]
(1)完成对用户的各种操作
(2)对客户的增,删除,修改,显示
(3)会声明一个customer的切片
显示客户列表
编写方法List【返回客户信息,其实就是切片】
编写NewCustomerService返回一个customerService实例
添加客户
编写方法Add[将新的客户加入到customers切片]
编写方法Delete(idint) 删除一个客户
编写方法FindByld(id int)返回id号对应的切片的下标
3.customerView.go [界面]V【含 customerService 字段】
(1)可以显示界面
(2)可以接收用户的输入
(3)根据用户的输入,调用customerService的方法完成客户的管理【修改,删除,显示等等】,它是调用。
编写一个方法
list去调用customerService的List方法,并显示客户列表。
add 方法去调用customerService的Add方法,完成客户添加。delete方法 调用customerService 的Delete方法,完成客户删除。
三、代码实现
1.//根据id查找客户在切片中对应下标
如果没有该客户,返回-1
func (this *CustomerService)FindById(id int) int
//遍历this *Customer切片
for i := 0; i< len(this.customers);i++
if this.customers[i].Id =id
//找到
index = i
return index
2.//根据id删除客户(从切片中删除)
func (this *CustomerService) Delete(id int)boolf
index := this.FindById(id)
//如果index ==-1,说明没有这个客户
if index == -1
return false
3.//如何从切片中删除一个元素
this. customers = append(this . customers : index]
this.customers[ indext1:])
return true
4. delete方法 调用
customerService 的Delete方法,完成客户删除。
//得到用户的输入id,删除该id对应的客户
func (this *customerView) delete()
fmt.Println(”. 删除客户”)
fmt.Println("请选择待删除客户编号(-1退出):“)id := -1
fmt.Scanln(&id)
if id == -1
return
//如果id不等于-1,表示放弃删除操作
5.fmt.Println("确认是否删除(Y/N):")
//在这个里面可以加入一个循环判断,直到用户输入y 或者n,才退出。
choice:=“”
fmt.Scanln(&choice)
if choice =="y"|choice == "Y”[
//调用customerService 的 Delete方法
if this.customerService.Delete(id) [
fmt.Println("删除完成")
else
fmt.Println(“删除失败,输入的id号不存在")
此时删除任务完成。
case "1”:
this.add()
case“2”:
fmt.Println(“修改客户”)
case "3”:
this.delete() I
case"4":
this.list()
case "5”:
this.loop = false
default:
fmt.Println("你的输入有误,请重新输入...”)
全部保存后,打开d盘,进入到所写文件中,输入cmd,go run.
请选择1-5,并逐步添加人物。
客户列表:
编号 |
姓名 |
性别 |
年龄 |
电话 |
邮箱 |
1 |
张三 |
男 |
20 |
112 |
ZS@sohu.com |
2 |
tom |
男 |
20 |
112 |
tom@sohu.com |
3 |
mary |
女 |
24 |
113 |
mary@qq.com |
客户列表完成
客户信息管理软件
1添加客户
2修改客户
3删除客户
4客户列表
5 退出
此时删除编号2的操作:
删除客户
请选择待删除客户编号(-1退出):
2
确认是否删除(Y/N):
y
删除完成
此时编号如下:
编号 |
姓名 |
性别 |
年龄 |
电话 |
邮箱 |
1 |
张三 |
男 |
20 |
112 |
ZS@sohu.com |
3 |
mary |
女 |
24 |
113 |
mary@qq.com |
表示删除成功。
总结:
customerManage/model/customer.go [没有变化]
customerManage service customerService.go[有变化]
增加了两个方法:
1. Delete
func (this *CustomerService) Delete(id int) bool
index := this.FindById(id)
//如果index == -1,说明没有这个客A5
if index == -1 (
return false
//如何从切片中删除一个元素this.customers = append(this.customers[:index], this.customers[index+1:]...)return true
//根据id查找客户在切片中对应下标,如果没有该客户,返回-1
2. FindById
func (this *CustomerService) FindById(id int) int [
index := -1
//遍历 this.customers 切片
for i := 0; i< len(this.customers); i++ f
if this.customers[i].Id == id f
//找到
index = i
customerManage/view customerView.go[有变化]
在这个方法里接受了一个id,而在切片中主要起作用的还是delete方法:
//调用customerService 的 Delete方法
if this.customerService.Delete(id) [
fmt.Println("删除完成")
else
fmt.Println(“删除失败,输入的id号不存在")