go案例:客户管理系统流程 mvc模式 分层设计

下面是一个简要的客服系统,主要是演示分层计。。

model : 数据部份:

package model

import "fmt"

//声明一个结构体,表示一个客户信息
type Customer struct{
    Id int
    Name string
    Gender string
    Age int
    Phone string
    Emaill string
}
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,
        }
}

func NewCustomer2(name string, gender string,
    age int, phone string,email string) Customer{
    return Customer{
        Name : name,
        Gender : gender,
        Age : age,
        Phone:phone,
    }
}
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.Emaill)
 return info
}

控制层,这儿名为服务层 customerService 代码如下:

package model

import "fmt"

//声明一个结构体,表示一个客户信息
type Customer struct{
    Id int
    Name string
    Gender string
    Age int
    Phone string
    Emaill string
}
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,
        }
}

func NewCustomer2(name string, gender string,
    age int, phone string,email string) Customer{
    return Customer{
        Name : name,
        Gender : gender,
        Age : age,
        Phone:phone,
    }
}
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.Emaill)
 return info
}

最后是视图层:第一个版本没有加注释,以后有空成全功能后在认真写好注释

package main

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

type customerView struct{
    key string
    loop bool
    customerService *service.CustomerService
}
//显示用户例表
func(this *customerView) list(){
    customers:=this.customerService.List()
    fmt.Println("——————————————————客户例表————————————————————————————")
    fmt.Println("编号 \t 姓名 \t \t性别 \t年龄 \t电话 \t邮箱")
    for i:=0; i < len(customers);i++{
        fmt.Println(customers[i].GetInfo())
    }
    fmt.Println("++++++++++++++客户列表完成+++++++++++++++")
}
//jo fi add
func(this *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 :=model.NewCustomer2(name,gender,age, phone,email)
    this.customerService.Add(customer)
}
func(this *customerView)delete(){
    fmt.Println("______________删除客户————————————————————————")
    fmt.Println("请输入客户编号(-1退出)")
    id := -1
    fmt.Scanln(&id)
    if id == -1{
        return
    }
    fmt.Println("请确认删除y/n")
    choice :=""
    fmt.Scanln(&choice)
    if choice == "y"||choice =="Y"{
        if this.customerService.Delete(id){
            fmt.Println("____________删 除成功__________________")
        }else{
            fmt.Println("删 除失败,可能是输入的Id不存在")

        }
    }

}

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 {
        case "1":
            this.add()
        case "2":
            fmt.Println("修改用户")
        case "3":
            this.delete()
        case "4":
            this.list()
        case "5":
            this.loop = false
        default:
            fmt.Println("输入有误 ")
        }//switch循环结束
        if !this.loop{
            break
        }//for
      }
    fmt.Println("你退出了客户系统")

}//主函数

func main(){
     customerView := customerView{
        key: "",
        loop : true,
    }
     customerView.customerService = service.NewcustomerService()
    customerView.mainMenu()
}

原文地址:https://www.cnblogs.com/fgxwan/p/10111556.html

时间: 2024-10-12 07:31:53

go案例:客户管理系统流程 mvc模式 分层设计的相关文章

实际案例讲解iOS设计模式——MVC模式

MVC模式是iOS编程中提到的最多次的设计模式,也是使用最频繁的设计模式之一.网络上有很多的MVC模式的分析文章,但都是从原理上来解释,很少能找到配套的案例来说明到底在实际的项目中要如何的使用这种模式.小编在经过详细的研究.对比和实验了之后,总结了一下这个模式的一些简单使用方法,希望能起一个抛砖引玉的作用,使得对MVC默认的同学能依葫芦画瓢的了解MVC模式的使用方法,并以此类推出更多.更好的方法出来. 这篇文章先从老生常谈的MVC设计模式的原理说起,然后配上一个简单的案例,以演示如何将一个常规的

20160410javaweb 开发小案例 --客户管理系统

客户管理系统---体验基于数据库javaweb的增删改查 添加客户 查询客户列表 修改客户信息 删除客户 条件查询客户信息 分页查询客户 javaee的经典三层架构--工厂类实现解耦 jsp+servlet+service+dao+jdbc+mysql+c3p0+dbutils com.dzq.web .service .dao .domain .util .exception .factory JSTL mysql驱动 beanutils c3p0包 dbutils包 confing.prop

再谈MV*(MVVM MVP MVC)模式的设计原理—封装与解耦

精炼并增补于:界面之下:还原真实的MV*模式 图形界面的应用程序提供给用户可视化的操作界面,这个界面提供给数据和信息.用户输入行为(键盘,鼠标等)会执行一些应用逻辑,应用逻辑(application logic)可能会触发一定的业务逻辑(business logic)对应用程序数据的变更,数据的变更自然需要用户界面的同步变更以提供最准确的信息. 在开发应用程序的时候,以求更好的管理应用程序的复杂性,基于职责分离(Speration of Duties)的思想都会对应用程序进行分层.在开发图形界面

(06/05/11) MVC模式

MVC并不属于GOF的23个设计模式之列,但是它在GOF的书中作为一个重要的例子被提出来,并给予了很高的评价.一般的来讲,我们认为GOF的23个模式是一些中级的模式,在它下面还可以抽象出一些更为一般的低层的模式,在其上也可以通过组合来得到一些高级的模式.MVC就可以看作是一些模式进行组合之后的结果. MVC定义:即Model-View-Controller,把一个应用的输入.处理.输出流程按照Model.View.Controller的方式进行分离,这样一个应用被分成三个层,即模型层.视图层.控

Swing程序最佳架构设计—以业务对象为中心的MVC模式(转)

前言: 我打算写一系列关于Swing程序开发的文章.这是由于最近我在做一个Swing产品的开发.长期做JavaEE程序,让我有些麻木了.Swing是设计模式的典范,是一件优雅的艺术品,是一件超越时代的产品! 有机会作Swing软件的开发,让我非常有感觉! 呵呵,希望有机会能够用Java3D编写软件,那种感觉一定更棒! Java和Swing都是杰作.我这个人对别人一向很挑剔的,能够得到我由衷地赞誉,可想而知它们有多优秀了.奇怪的是,它们居然一直都无法占领桌面市场.有人说这是技术的原因.我认为这应该

MVC模式学习--雇员管理系统项目开发

1, 项目开发,使用原型开发, ① 开发流程: 需求分析->设计阶段->编码阶段->测试阶段->发布阶段/维护阶段 需求阶段:PM/项目经理 对客户 设计阶段:技术人员(架构师,组长,程序员)->设计数据库 开发阶段:组长,程序员 测试阶段:测试人员 发布阶段:实施工程师 维护阶段:开发人员 ② 对应于php研发流程: 需求阶段:PM与项目经理定好需求,美工UI(ps画图)->网页前端人员UE(div+css),PM和项目经理根据静态页面与客户探讨不断修改: 设计阶段:

客户管理系统 详细流程(不用三大框架)

客户管理系统的详细编写流程 一.系统设计 1.需求分析 (系统中包含哪些数据模型.数据模型存在怎样的关系 E-R图.UML(用例图)) 2.制作页面Demo (和真实系统效果一样,给客户确认需求) 3.技术选型(环境搭建) 软件建模工具:IBM RSA.Rational Rose.Jude(日本研发 纯java编写,小巧.在此次编写中使用) 技术选型:DHTML+JSP+Servlet+C3P0+DBUtils+MySQL(MVC模式,DAO模型)+Tomcat6+Windows 4.数据库设计

分层模式开发+MVC模式开发--韩顺平雇员数据库管理

1.分层模式 在使用分层设计模式编写代码之前,我们更多的是采用面向过程然后眉毛胡子一把抓,在一两个程序代码里写完所有的功能,这样只适合于小型个人项目.因为不利于阅读和修改,只有编程的个人比较熟悉程序的结构.这不利于程序的扩展性和协同开发.所以,我们引入一个固定的模式来进行编程,使得所有代码结构清晰明确,而且易于扩展延伸. 此处介绍的一种模式是分层模式.把程序分成几个层次:界面层.业务逻辑层.数据层. 界面层:主要功能就是实现界面的显示.比如要在登陆页面显示输入框之类,就需要login.php中放

Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力活:对于自动化测试与人工测试优缺势的问题,这里不想深入讨论,开一个博客收集一些观点然后开个讨论组讨论效果可能会更好. 标题上列的,是自己对web自动化这块统一的一个想象或是一套完整的自动化应所包含的的部分,目前完成了excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试