Go - 小项目2 - 客户信息管理系统

Go - 小项目2 - 客户信息管理系统

项目2:客户信息管理系统

一)需求

1)模拟实现基于文本界面的《客户信息管理系统》

2)实现对客户信息的插入,删除,修改,显示

二)框架图

1)customerView.go(界面)

2)customerService.go(处理业务逻辑)

3)customer.go(表示数据)model层

三)编码

customerView.go

package main

import (
	"customerManage/model"
	"customerManage/service"
	"fmt"
)


type customerView struct {
	key string //接收用户的输入选择
	loop bool  //表示是否循环显示主菜单
	customerService *service.CustomerService
}

//添加客户信息
func (cv *customerView)add()  {
	fmt.Println("----------添加客户----------")
	fmt.Println("姓名:")
	name := ""
	fmt.Scanln(&name)
	fmt.Println("性别:")
	gender := ""
	fmt.Scanln(&gender)
	fmt.Println("年龄")
	age := 0
	fmt.Scanln(&age)
	fmt.Println("电话")
	phone := ""
	fmt.Scanln(&phone)
	fmt.Println("邮箱")
	email := ""
	fmt.Scanln(&email)
	//构建一个新的customer实例
	customer := model.NewCustomer2(name,gender,age,phone,email)
	if cv.customerService.Add(customer) {
		fmt.Println("----------添加成功----------")
	}
}

//修改客户信息
func (cv *customerView)update()  {
	fmt.Println("----------修改客户----------")
	fmt.Println("请选择待修改用户的编号(-1退出):")
	id := -1
	fmt.Scanln(&id)
	if id == -1 {
		return
	}
	fmt.Println("确认是否修改?y/n")
	choose := ""
	fmt.Scanln(&choose)
	if choose == "y" {
		if cv.customerService.UpData(id) {
			fmt.Println("----------修改成功----------")
		}else {
			fmt.Println("----------修改失败----------")
		}
	}else {
		fmt.Println("取消修改")
	}
}

//删除客户信息
func (cv *customerView)delete()  {
	fmt.Println("----------删除客户----------")
	fmt.Println("请选择待删除用户的编号(-1退出):")
	id := -1
	fmt.Scanln(&id)
	if id == -1 {
		return
	}
	fmt.Println("确认是否删除?y/n")
	choose := ""
	fmt.Scanln(&choose)
	if choose == "y" {
		if cv.customerService.Delete(id) {
			fmt.Println("----------删除成功----------")
		}else {
			fmt.Println("----------删除失败----------")
		}
	}else {
		fmt.Println("取消删除")
	}
}

//显示客户信息
func (cv *customerView)list()  {
	customers := cv.customerService.List()
	fmt.Println("----------客户列表----------")
	fmt.Println("编号\t姓名\t性别\t年龄\t电话\t邮箱")
	for i := 0;i<len(customers);i++ {
		fmt.Println(customers[i].GetInfo())
	}
	fmt.Println("---------客户列表完成---------")
}

//退出软件
func (cv *customerView)exit()  {
	fmt.Println("您是否选择退出?y/n")
	choose := ""
	fmt.Scanln(&choose)
	if choose=="y" {
		cv.loop = true
	}else {
		cv.loop = false
	}
}

//显示主菜单
func (cv *customerView) mainMenu()  {
	for  {
		fmt.Println("\n----------客户信息管理软件----------")
		fmt.Println("			1 添加客户")
		fmt.Println("			2 修改客户")
		fmt.Println("			3 删除客户")
		fmt.Println("			4 客户列表")
		fmt.Println("			5 退   出")
		fmt.Print("请选择(1-5):")
		fmt.Scanln(&cv.key)
		switch cv.key {
			case "1":
				cv.add()
			case "2":
				cv.update()
			case "3":
				cv.delete()
			case "4":
				cv.list()
			case "5":
				cv.exit()
			default:
				fmt.Println("你的输入有误,请重新输入。。。")
		}
		if cv.loop {
			break
		}
	}
	fmt.Println("你退出了客户关系管理系统...")
}

func main()  {
	cv := customerView{
		key: "",
		loop: false,
	}
	cv.customerService = service.NewCustomerService()
	cv.mainMenu()
}

customer.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,
	}
}

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 (cus Customer)GetInfo() string {
	info := fmt.Sprintf("%v\t%v\t%v\t%v\t%v\t%v\t",cus.Id,cus.Name,cus.Gender,cus.Age, cus.Phone,cus.Email)
	return info
}

customerService.go

package service

import (
	"customerManage/model"
	"fmt"
)

//定义CustomerService,完成对Customer的操作,包括增删改查
type CustomerService struct {
	customers []model.Customer  //customer切片
	customerNum int  //表示当前切片含有多少个客户,还可作为新客户的id
}

//编写一个方法,返回*CustomerService
func NewCustomerService() *CustomerService {
	cs := &CustomerService{}
	cs.customerNum =1
	customer := model.NewCustomer(1,"张三","男",18,"123456","123@qq.com")
	cs.customers =append(cs.customers,customer)
	return cs
}

//返回客户切片
func (cs *CustomerService)List() []model.Customer {
	return cs.customers
}

//添加客户到customers切片中
func (cs *CustomerService)Add(customer model.Customer)  bool{
	cs.customerNum++
	customer.Id =cs.customerNum
	cs.customers =append(cs.customers,customer)
	return true
}

//根据Id查找客户在切片中的位置,如果没有该客户就返回-1
func (cs *CustomerService)FindById(id int) int {
	index := -1
	for i := 0;i<len(cs.customers);i++ {
		if cs.customers[i].Id == id {
			index = i
		}
	}
	return index
}

//根据id修改切片中的用户
func (cs *CustomerService)UpData(id int) bool {
	index := cs.FindById(id)
	if index == -1{
		return false
	}
	name := ""
	gender :=""
	age := 0
	phone := ""
	email := ""
	fmt.Printf("姓名(%v):",cs.customers[index].Name)
	fmt.Scanln(&name)
	fmt.Printf("性别(%v):",cs.customers[index].Gender)
	fmt.Scanln(&gender)
	fmt.Printf("年龄(%v):",cs.customers[index].Age)
	fmt.Scanln(&age)
	fmt.Printf("电话(%v):",cs.customers[index].Phone)
	fmt.Scanln(&phone)
	fmt.Printf("邮箱(%v):",cs.customers[index].Email)
	fmt.Scanln(&email)
	cs.customers[index].Name = name
	cs.customers[index].Gender = gender
	cs.customers[index].Age = age
	cs.customers[index].Phone = phone
	cs.customers[index].Email = email
	return true
}

//根据id删除切片中的用户
func (cs *CustomerService)Delete(id int)  bool{
	index := cs.FindById(id)
	if index == -1 {
		return false
	}
	cs.customers =append(cs.customers[:index],cs.customers[index+1:]...)
	return true
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值