开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:客户管理系统-主菜单和退出】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9717
客户管理系统-主菜单和退出
内容介绍
一、 功能说明
二、 思路分析
三、 代码实现
一、 功能说明
当用户运行程序时,可以看到主菜单,当输入5时,可以退出该软件。
二、 思路分析
利用框架图,编写 customerView.go,另外可以把 customer.go 和customerService.go 都写上。
三、 代码实现
1. customerManage/model/customer.go
package model
//声明一个Customer结构体,表示一个客户信息
type Customer struct{
Id int
Name string
Gender string
Age int
Phone string
Email string
}
(注:有时候粘贴代码的时候,可能由于格式问题或者一些字符无法识别,这个时候可以先放在记事本里清一下,然后再粘贴)
(注:客户信息会在customerService中使用,应该在customer中提供一个工厂模式的方法,返回一个实例)
//使用一个工厂模式,返回一个Customer的实例
func NewCustomer(id int, name string, gender string, age int, phone string, email string) Customer {
(代码太多可以换行,把逗号保留在上一行)
return Customer{
Id : id,
Name :name,
Gender :gender,
Age:age,
Phone :phone,
Email:email
}
}
2. customerManage/service/customerService.go
customerService.go
package service
import(
“go_code/customerManage/mode1"
)
(注:要引包,import)
//该 CustomerService,完成对 Customer 的操作,包括
//增删改查
(注:如果要对它进行操作,必不可少的要有一个切片。因为要对 Customer 进行操作,那么 CustomerService 中至少要有一个字段,这个字段是一个 customer 的切片,把所有管理 customer 的信息放到这个切片中去,然后再这个地方进行增删改查)
type CustomerService struct{
customers []model.customer(切片用[]表示)
(注:此时要用到model里面的customer,要引包,import,添加到前边)
//声明一个字段,表示当前切片含有多少个客户
(定义目前到底有多少个客户,记录最大编号)
//该字段后面,还可以作为新客户的id+1
customerNum int
}
3. customerManage/view/customerView.go
(1)
package main
import(
“fmt”
)
func main(){
fmt.Println(“ok!”)
}
试看是否能够正常输出
能够输出
(2)
package main
import(
“fmt”
)
(注:既然要把界面的显示功能封装到customerView里面去,就要创建一个结构体)
typepp customerView struct{
//定义必要字段
key string
//接受用户输入…
loop bool
//表示是否循环的显示主菜单
}
(注:既然要输入1-5数字,就应该设置一个变量来接受它的输入)
//显示主菜单
func (this *customerView) mainMenu(){
for{
fmt.Println(“-------客户信息软件------”)
fmt.Println(“ 1 添加客户 ”)
fmt.Println(“ 2 修改客户 ”)
fmt.Println(“ 3 删除客户 ”)
fmt.Println(“ 4 客户列表 ”)
fmt.Println(“ 5 退出 ”)
fmt.Println(“请选择(1-5):”)
(注:复制软件界面并进行整理)
fmt.Scanln(&this,key)
switch this.key{ (注:switch语句进行判断)
case “1”:
fmt.Println(“添加客户”)
case “2”:
fmt.Println(“修改客户”)
case “3”:
fmt.Println(“删除客户”)
case “4”:
fmt.Println(“客户列表”)
case “5”:
this.loop=false
default (注:如果输入的不是1-5,用default)
fmt.Println(“你的输入有误,请重新输入…”)
}
if !this.loop{ (如果loop为假,取反就为真了;如果loop为真,取反为假,break跳出for循环)
break
}
fmt.Println(“你退出了客户关系管理系统”)
}
func main(){
//在main函数中,创建一个customerView,并运行显示主菜单
(注:结构体创建完毕,要实例化后才能被调用)
customerView := customerView{
key :””(注:初始值为空字符)
loop : true, (注:默认返回主菜单)
(注:这里是给出前面的参数)
}
//显示主菜单
customerView.mainMenu()
}
试运行成功: