Golang客户信息关系系统
Posted 2019ab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang客户信息关系系统相关的知识,希望对你有一定的参考价值。
1.项目需求分析
- 模拟实现基于文本界面的《客户信息管理软件》
- 该软件能够实现对客户对象的插入,修改和删除(用切片实现),并能够打印客户明细表
2.软件的界面设计
主菜单界面
思路实现
// customer.go
package model
import (
"fmt"
)
type Customer struct
Id int
Name string
Gender string
Age int
Phone string
Email string
// 使用工厂模式,返回一个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
// 第二种创建Customer实例方法,不带id
func NewCustomer2(name string,gender string,age int,phone string,email string) Customer
return Customer
Name:name,
Gender:gender,
Age:age,
Phone:phone,
Email:email
// 返回用户的信息 格式化的字符串
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
// customerService.go
package service
import (
"go_code/customerManage/model"
)
// 该CustomerService,完成对Customer的操作,包括 增删改查
type CustomerService struct
customers []model.Customer
// 声明一个字段,表示当前切片含有多少个客户
// 该字段后面,还可以作为新客户的id+1
customerNum int
// 编写一个方法,可以返回*CustomerService
func NewCustomerService() *CustomerService
// 为了能够看到有客户在切片中,我们初始化一个客户
customerService := &CustomerService
customerService.customerNum = 1
customer := model.NewCustomer(1,"张三","男",20,"112","zs@sohu.com")
customerService.customers = append(customerService.customers,customer)
return customerService
// 返回客户切片
func (this *CustomerService) List() []model.Customer
return this.customers
// 添加客户到customers切片
func (this *CustomerService) Add(customer model.Customer) bool
// 我们确定一个分配id的规则,就是添加的顺序
this.customerNum++
customer.Id = this.customerNum
this.customers = append(this.customers,customer)
return true
// 根据ID删除客户(从切片删除)
func (this *CustomersService) Delete(id int) bool
index := this.FindById(id)
// 如果index==-1,说明没有这个客户
if index == -1
return false;
// 如何从切片中删除一个元素
this.customers = append(this.customers[:index],this.customers[index+1:]...)
return true
// 根据ID查找客户在切片中的下标,如果没有该客户,返回-1
func (this *CustomerService) FindById(id int) int
index := -1
// 遍历this.customers 切片
for i:=0;i<len(this.customers);i++
if this.customers[i].Id = id
// 找到
index = i
// customerView.go
package main
import (
"fmt"
"go_code/customerManage/Service"
"go_code/customerManage/model"
)
type customerView struct
// 定义必要字段
key string // 接受用户输入...
loop bool // 表示是否循环的显示主菜单
// 增加一个字段customerService
customerService *service.CustomerService
// 得到用户的输入,信息构建新的客户,并完成添加
func (this *customerView) add()
fmt.Println("--------------------添加客户---------------")
fmt.Println("姓名:")
name := ""
fmt.Scanln(&name)
fmt.Println("性别:")
gender := ""
fmt.Scanln(&gender)
fmt.Println("年龄:")
age := ""
fmt.Scanln(&age)
fmt.Println("电话:")
phone := ""
fmt.Scanln(&phone)
fmt.Println("电邮:")
email := ""
fmt.Scanln(&email)
// 构建一个新的Customer实例
// 注意:id号,没有让用户输入,是邮系统分配
customer := model.NewCustomer2(name,gender,age,phone,email)
// 调用
if this.customerService.Add(customer)
fmt.Println("----------添加完成---------")
else
fmt.Println("-----------添加失败---------")
//显示所有的客户信息
func (this *customerView) list()
// 首先,获取到当前所有的客户信息(在切片中)
customers:=this.customerService.List()
// 显示
fmt.Println("------客户列表------")
fmt.Println("编号\\t姓名\\t性别\\t年龄\\t电话\\t邮箱")
for i := 0; i < len(customers);i++
fmt.Println(customers[i].GetInfo())
fmt.Print("-----------客户列表完成-------------")
// 得到用户的ID,删除该ID对应的客户
func (this *customerView) delete()
fmt.Println("-----------删除客户---------------")
fmt.Println("请选择待删除的客户编号(-1退出):")
id := -1
fmt.Scanln(&id)
if id == -1
return //放弃删除操作
fmt.Println("确认是否删除(Y/N):")
//这里可以加入一个循环判断,直到用户输入y或者是n,才退出..
choice := ""
if choice == "y" || choice == "Y"
// 调用customerService的Delete方法
if this.customerService.Delete(id)
fmt.Println("------------删除完成----------------")
else
fmt.Println("-----------------删除失败,输入的id号不存在----")
// 退出软件
func (this *customerView) exit()
fmt.Println("确认是否退出(Y/N):")
for
fmt.Scanln(&this.key)
if this.key == "Y" || this.key == "y" || this.key == "n"
break
fmt.Println("你的输入有误,请重新输入(Y/N):")
if this.key == "Y" || this.key == "y"
this.loop = false
//显示主菜单
func (cv *customerView) mainMenu()
for
fmt.Println("------客户信息管理软件------")
fmt.Println(" 1 添加客户")
fmt.Println(" 2 修改客户")
fmt.Println(" 3 删除客户")
fmt.Println(" 4 客户列表")
fmt.Println(" 5 退 出")
fmt.Print("请选择(1-5):")
fmt.Scanln(&this.key)
switch this.key
case "1":
this.add()
case "2":
fmt.Println("修改客户")
case "3":
this.delete()
case "4":
this.list()
case "5":
this.exit()
default :
fmt.Println("你的输入有误,请重新输入...")
if !this.loop
break
fmt.Println("你退出了客户关系管理系统...")
func main()
//在main函数中,创建一个customerView,并运行显示主菜单
customerView := customerView
key : "",
loop : true
// 这里完成对customerView结构体的customerService字段的初始化
customerView.customerService = service.NewCustomerService()
// 显示主菜单..
customerView.mainMenu()
感谢大家观看,我们下次见
以上是关于Golang客户信息关系系统的主要内容,如果未能解决你的问题,请参考以下文章