python 客户信息管理系统_示例:客户信息管理系统
本节带领大家实现一个基于文本界面的客户关系管理软件,该软件可以实现对客户的插入、修改和删除,并且可以打印客户信息明细表。
软件由一下三个模块组成:
项目结构如下所示:
在 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\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
}
在 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("编号\t姓名\t性别\t年龄\t电话\t邮箱")
for i := 0; i < len(customers); i++ {
//fmt.Println(customers[i].Id,"\t", customers[i].Name...)
fmt.Println(customers[i].GetInfo())
}
fmt.Printf("\n-------------------------客户列表完成-------------------------\n\n")
}
//得到用户的输入,信息构建新的客户,并完成添加
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:\code\demo\view>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):
python 客户信息管理系统_示例:客户信息管理系统相关推荐
- python综合管理系统_学生综合信息管理系统
1 绪论 1.1 项目概述 学生基本信息管理系统分为六个板块 分别是修改密码.班级管理 学生管理.教师管理.课程管理和选课管理 ①密码修改是对登录身份(系统管理员.教师.学生)密码的修改 ②班级管理系 ...
- python 进程生命周期_计算客户生命周期价值的python解决方案
python 进程生命周期 By Lisa Cohen, Zhining Deng, Shijing Fang, and Ron Sielinski 由丽莎·科恩,志宁邓,石井方和罗恩Sielinsk ...
- php修改学生信息代码_关于开放教学管理系统在校学生学籍信息修改功能的通知...
为了加强管理,完善教学系统信息,确保个人信息真实无误,即日起开放教学管理系统学籍信息修改功能,在校学生可自行登陆教学系统查询本人的学籍信息,如有问题可在"我的学籍"菜单下进行个人相 ...
- 用户管理系统_学期项目智能管理系统用户操作指南
"学在IVT"喊您回家,邀您加入!微信公众号"学在IVT"实时更新发布重要信息,将为您提供更新鲜.更及时.更准确的资讯服务!IVT学子是一家,信息传递靠大家!& ...
- 计算机毕业设计java+ssm大学生资助金发放管理系统_助学金贫困补助金管理系统
项目介绍 一直以来我国的教育水平在不断的稳步提升,但是同时也出现了一些问题,在我国还是有一定的贫困家庭,但是往往就是这些学生能够做出突出的成绩,这些学生一旦考上大学往往昂贵的教育费用和生活费用成为家里 ...
- java数据结构停车场管理系统_数据结构设计-停车场管理系统
目 录 摘要及关键词 1 1 问题描述 1 1.1题目描述 1 1.2任务要求 1 2 设计思想及其目的 2 2.1设计思想 2 2.2设计目的 2 3 系统具备的功能 2 3.1 简体中文控制台界 ...
- python产品支持度_对客户推荐产品模型+python代码
首先观看数据: l 数据的基本特征用 describe 描述每个基本特征 l 画图画出每个特征的基本统计图 应用importmatplotlib.pylab aspl 画图显示 l 关于特 ...
- python 日志函数参数_将日志信息作为参数传递给函数
我使用的Python库使用logging模块.但是,我创建了自己的log函数,脚本在内部使用.在 下面是我要使用的日志记录功能:def log(name, content, swtch : bool ...
- c语言患者住院管理系统,住院系统-中小医院医疗套装软件管理系统_九明珠信息科技...
简介:住院系统包括:出入院管理.住院收费.护士工作站 功能列表介绍出入院管理 1)办理病人入院登记:支持多种身份(公费.自费.本院VIP.新农合.惠民.各类医保)的病人: 2)提供病案首页建立与打印: ...
最新文章
- C socket编程
- php echarts 两条曲线图,使用laravel和ECharts实现折线图效果的例子
- VB API 之 第十一课 绘制矩形
- (十一)开发环境【不会这些,你就会被认定是菜鸟小白,没做过项目】
- IOS开发基础之汽车品牌项目-14
- cf烟雾头怎么调win7系统
- 手把手0基础项目实战(三)——教你开发一套电商平台的安全框架
- easyUI_rowdata
- MySQL之字符串拼接
- 计算机打印机无法扫描,打印机无法扫描 打印机无法扫描怎么办 4种原因及解决方法...
- 浏览器0x80004005 无法上网
- eval(转换html,js eval函数使用,js对象和字符串互转实例
- Google Earth Engine(GEE)——MODIS 影像LST地表温度随时间变化的趋势案例分析
- 查看数据库信息(一)
- Python 将网易云歌单迁移到QQ音乐
- Nodejs+npm详细安装
- java计算机毕业设计新疆旅游专列订票系统源码+mysql数据库+lw文档+系统+调试部署
- 2022-2028年全球与中国奶酪格栅机行业市场需求预测分析
- HTTP协议中URI和URL有什么区别
- 阿里云服务器重装操作系统流程免费不限次数更换