范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

golang2021数据格式(104)示例客户信息管理系统

  本节带领大家实现一个基于文本界面的客户关系管理软件,该软件可以实现对客户的插入、修改和删除,并且可以打印客户信息明细表。
   
  软件由一下三个模块组成:
   
  项目结构如下所示:
   
  在 costumer.go 中,代码如下:
  package model
  import (
      "fmt"
  )
  //声明一个Customer结构体,表示一个客户信息
  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	 %v	 %v	 %v	 %v	 %v	", this.Id,
          this.Name, this.Gender,this.Age, this.Phone, this.Email)
      return info
    
  }
  在 costumerService.go 中,代码如下:
  package service
  import (
      "../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, "010-56253825", "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 *CustomerService) 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
          }
      }
      return index
  }
  在 costumerView.go 中,代码如下:
  package main
  import (
      "fmt"
      "../model"
      "../service"
  )
  type customerView struct {
  //定义必要字段
      key string //接收用户输入...
      loop bool  //表示是否循环的显示主菜单
      //增加一个字段customerService
      customerService *service.CustomerService
  }
  //显示所有的客户信息
  func (this *customerView) list() {
  //首先,获取到当前所有的客户信息(在切片中)
      customers := this.customerService.List()
      //显示
      fmt.Println("---------------------------客户列表---------------------------")
      fmt.Println("编号	姓名	性别	年龄	电话	邮箱")
      for i := 0; i < len(customers); i++ {
          //fmt.Println(customers[i].Id,"	", customers[i].Name...)
          fmt.Println(customers[i].GetInfo())
      }
      fmt.Printf(" -------------------------客户列表完成-------------------------  ")
  }
  //得到用户的输入,信息构建新的客户,并完成添加
  func (this *customerView) add() {
      fmt.Println("---------------------添加客户---------------------")
      fmt.Print("姓名:")
      name := ""
      fmt.Scanln(&name)
      fmt.Print("性别:")
      gender := ""
      fmt.Scanln(&gender)
      fmt.Print("年龄:")
      age := 0
      fmt.Scanln(&age)
      fmt.Print("电话:")
      phone := ""
      fmt.Scanln(&phone)
      fmt.Print("邮箱:")
      email := ""
      fmt.Scanln(&email)
      //构建一个新的Customer实例
      //注意: id号,没有让用户输入,id是唯一的,需要系统分配
      customer := model.NewCustomer2(name, gender, age, phone, email)
      //调用
      if this.customerService.Add(customer) {
          fmt.Println("---------------------添加完成---------------------")
      } else {
          fmt.Println("---------------------添加失败---------------------")
      }
  }
  //得到用户的输入id,删除该id对应的客户
  func (this *customerView) delete() {
      fmt.Println("---------------------删除客户---------------------")
      fmt.Print("请选择待删除客户编号(-1退出):")
      id := -1
      fmt.Scanln(&id)
      if id == -1 {
          return //放弃删除操作
      }
      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号不存在----")
          }
      }
  }
  //退出软件
  func (this *customerView) exit() {
  fmt.Print("确认是否退出(Y/N):")
      for {
          fmt.Scanln(&this.key)
          if this.key == "Y" || this.key == "y" || this.key == "N" || this.key == "n" {
              break
          }
  fmt.Print("你的输入有误,确认是否退出(Y/N):")
      }
  if this.key == "Y" || this.key == "y" {
          this.loop = false
      }
  }
  //显示主菜单
  func (this *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()
  }
  执行结果如下所示:
  D:codedemoview>go run customerView.go
  -----------------客户信息管理软件-----------------
                   1 添 加 客 户
                   2 修 改 客 户
                   3 删 除 客 户
                   4 客 户 列 表
                   5 退       出
  请选择(1-5):1
  ---------------------添加客户---------------------
  姓名:李四
  性别:男
  年龄:22
  电话:15611112222
  邮箱:lisi@qq.com
  ---------------------添加完成---------------------
  -----------------客户信息管理软件-----------------
                   1 添 加 客 户
                   2 修 改 客 户
                   3 删 除 客 户
                   4 客 户 列 表
                   5 退       出
  请选择(1-5):4
  ---------------------------客户列表---------------------------
  编号    姓名    性别    年龄    电话    邮箱
  1        张三    男      20      010-56253825    zs@sohu.com
  2        李四    男      22      15611112222     lisi@qq.com
   
  -------------------------客户列表完成-------------------------
   
  -----------------客户信息管理软件-----------------
                   1 添 加 客 户
                   2 修 改 客 户
                   3 删 除 客 户
                   4 客 户 列 表
                   5 退       出
  请选择(1-5):

OPPO宣布与印度航天机构合作,非议马上来了印度国家航天机构印度空间研究组织(ISRO)与中国手机品牌Oppo印度公司的合作在当地引发非议。据印度斯坦时报等多家媒体报道,印度反对党国大党和许多网民在社交媒体上质疑,当ISRO去年年薪百万今年行业失散,高途坠落背后的情怀烧钱和人性战场这里的故事都不算新鲜。中国互联网几十年发展过程中,风口变幻,高途用很短的时间演示了一家发现蓝海,投身而入的公司又如何被迅速抛下。在它的故事里,可以看到大佬的创业情怀,和瑞幸相似的被汇科学暖流建创新高地大湾区科学论坛在广州开幕汇科学暖流建创新高地冬日湾区,温暖如春。以探索未来,共享科学为主题的大湾区科学论坛,12月11日在广东广州开幕。大湾区科学论坛由一带一路国际科学组织联盟发起当996成为一种奢望,互联网大厂的梦碎时刻皮之不存,毛将焉附。当互联网行业内的企业在中概股遭遇重挫,与之对应的是,那些在互联网公司上班的员工们,也随公司一起,走进了这个空前寒冷的冬天。当宏观经济的不景气终于传导到了个人身上手把手教你一句话让小爱帮你控制智能家居!全网最细教程小伙伴们大家好!之前两期我们学习了智能家居的更换与连接,今天我们来学习如何设置智能家居的联动,让你学会如何一句话让小爱同学帮你打开各种智能设备,还有各种场景的设置,例如回家自动开灯入手OPPOReno7Pro几天,聊聊我对它的使用感受作为OPPO旗下面向时尚年轻群体的Reno系列,每款机型的出现都吸引了无数年轻时尚消费者们的关注与追捧。而笔者也同样是其中的一个,在这次OPPOReno7Pro首销当天,我就直接花华为watch3和watchgt3差别?要想了解华为watch3和watchgt3差别,那么我们先看看他们两个是啥配置,话不多说,直接上图。华为watchgt3华为watchgt3华为watch3华为watch3通过两张OPPO手机怎么选,什么款性价比高,拍摄怎样,一文解答前段时间,刚梳理完蓝厂vivo与其子品牌iQOO,这一次来到绿厂阵营OPPO系。vivo手机怎么选,哪款性价比高,哪款值得买,一篇文章来梳理OPPO系包括主品牌OPPO,子品牌re德媒评选2021最佳手机TOP10六款国产手机上榜,一加表现抢眼严谨的德国媒体Connect在近日评选出了2021年度最佳手机TOP10,评选了今年市面上正在销售的手机,且仅包含安卓手机,因此你会在这份榜单中看到去年的老旗舰,因为在今年它们依然路由器要多久关闭一次?多亏宽带师傅告诫,难怪网速变龟速了畅谈关于装修的那些事,分享装修的各种经验和知识。大家好,我是畅谈装修,关注我即可了解更多关于装修的那些事!路由器现在已经是居家生活中不可缺少的伙伴,没有了它,相信连饭吃得都不香了。网曝三星GalaxyS22系列将于年初发布,超大杯改名了年底了,手机行业也都在为来年的新机做宣传了,隔三差五频频爆出某某品牌某某新机的相关信息,最近,有网友爆料,三星明年的旗舰新机GalaxyS22系列将要来了,而其中的超大杯不再采用G
元宇宙产业互联网的分水岭文孟永辉在元宇宙出现之前,人们对于产业互联网的探索基本上是在黑暗中摸索的。在元宇宙出现之后,人们才算是看到了产业互联网的些许曙光。透过元宇宙,我们可以看出产业互联网的光怪陆离的一面买手机要舍得花钱,旗舰手机更香,这3款手机三五年也不卡顿点击关注,每天精彩不断!导读买手机要舍得花钱,旗舰手机更香,这3款手机三五年也不卡顿!一到年底的时候,很多人就有了换手机的打算,而每年在年底的时候,各大智能手机的旗舰手机也几乎都已围观!盘点联想ThinkPadX1Fold超前的设计,笔记本电脑的未来哈喽,您好!我是原呵呵,点点关注吧,更多精彩内容等着您联想的ThinkPadX1Fold是一种超前的笔记本电脑展现形式,这是一种可以像书一样合起来的平板电脑,带有可折叠的屏幕。它很OnexPlayermini版掌机发布新品,发货速度甩SteamDeck掌机几条街12月20日,OnexPlayer壹号掌机举行新品发布会,此次除了发布7英寸的游戏掌机OnexPlayermini版,还发布了相应配件与软件,包括OnexDocKing桌面扩展坞底模因币ShibaInu超越比特币成为2021年最受欢迎的加密货币之一我们专注一级市场,每天发布币圈潜力优势币种,欢迎同好关注。总体而言,2021年对于加密货币来说是一个巨大的增长年,但没有比模因币ShibaInu获得更多增长的一年。以狗为主题的加密下一个10年的生意,朋友要越多越好是新朋友吗?记得先点笔记侠关注我哦新商业进化论第215篇文Rickzhang轮值主编智勇责编值班编辑金木研第6092篇深度好文5098字12分钟阅读当下最难的中国科技企业,非华为莫手机你可能会忽略的几个配置,有了它们才是真旗舰手机1。NFC。我们常说的碰一碰的功能,日常用于刷公交,地铁以及门禁卡等。2。IP68防水。目前最高的防水等级,代表机型有荣耀Magic3Pro,华为mate40Pro,苹果13Pro世界离开联想会是怎样?除了电脑,很多产品可能你都没听说过某人曾经说过联想不是中国公司,而是一家全球性的企业,因为他涉及的产品太多了,很多人可能只知道他电脑及配件相关的业务,它还有智能产品手机通信等业务。世界离开联想会是怎样?今天老王就带听司马老师说联想系列,如何理解小杨说的不能比美国高管拿的少?这是联想主要管理者收购IBM的目的之一!从已发生的事实来看联想收购IBM,对主要管理者有以下5点好处第一,联想瞬间就变成名义上的PC全球第一,名有了!无论收购是否给联想带来更大利润苏宁易购618手机悟空榜OPPO反超Apple小米成双冠王再过几天就是高考,苦学多年的学子终于将迎来人生中的一次大考。毫不夸张的说,高考对于大部分普通家境的学子来说,都是改变命运最重要的一次机会。无论是为了奖励孩子,还是为了让孩子在新的学王兴95条反思战争是由等待和煎熬组成的前不久,美团因涉嫌垄断被立案调查,接下来面临的可能是数亿元罚款,从美团最新财报来看,其局面也一言难尽,除了外卖业务酒旅板块的持续盈利,社区团购共享出行等新业务还未能交出满意的答卷。