大数据技术之_16_Scala学习_11_客户信息管理系统+并发编程模型 Akka+Akka 网络编程-小黄鸡客服案例+Akka 网络编程-Spark Master Worker 进程通讯项目

第十五章 客户信息管理系统

15.1 项目的开发流程

15.2 项目的需求分析

  模拟实现基于文本界面的《客户信息管理软件》。
  该软件 scala 能够实现对客户对象的插入、修改、删除、显示、查询(用 ArrayBuffer 或者 ListBuffer 实现),并能够打印客户明细表。

15.3 项目的界面

主界面

添加客户

修改客户

删除客户

客户列表

15.4 项目的设计-程序框架图

程序框架图:设计系统有多少个文件,以及文件之间的调用关系,可以帮助程序员实现模块的设计(清晰),便于程序员之间对项目交流分析。【业务优化,设计方案】

15.5 项目的功能实现

15.5.1 完成 Customer 类

根据需求文档或者页面,写出 Customer 类
Customer.scala

package com.atguigu.chapter15.customercrm.bean

class Customer {
   
  // 属性
  var id: Int = _
  var name: String = _
  var gender: Char = _
  var age: Short = _
  var tel: String = _
  var email: String = _

  // 辅助构造器
  def this(id: Int, name: String, gender: Char, age: Short, tel: String, email: String) {
   
    this
    this.id = id
    this.name = name
    this.gender = gender
    this.age = age
    this.tel = tel
    this.email = email
  }
}
15.5.2 完成显示主菜单和退出软件功能

CustomerView.scala 功能分析:
  1. 将主菜单的显示放入到 while
  2. 用户可以根据输入,选择自己的操作
  3. 如果输入5退出
CustomerView.scala

package com.atguigu.chapter15.customercrm.view

import scala.io.StdIn

class CustomerView {
   
  // 定义一个循环变量,控制是否退出
  var loop = true
  // 定义一个 key 用于接收用户输入的选项
  var key = ' '

  def mainMenu(): Unit = {
   
    do {
   
      println("-----------------客户信息管理软件-----------------")
      println("                  1 添 加 客 户                  ")
      println("                  2 修 改 客 户                  ")
      println("                  3 删 除 客 户                  ")
      println("                  4 客 户 列 表                  ")
      println("                  5 退       出                  ")
      println("                  请选择(1-5):                   ")
      key = StdIn.readChar()
      key match {
   
        case '1' => println("添 加 客 户")
        case '2' => println("修 改 客 户")
        case '3' => println("删 除 客 户")
        case '4' => println("客 户 列 表")
        case '5' => this.loop = false
      }
    } while (loop)
    println("你退出了系统...")
  }
}

示例代码如下:

package com.atguigu.chapter15.customercrm.app

import com.atguigu.chapter15.customercrm.view.CustomerView

object CustomerCrm {
   
  def main(args: Array[String]): Unit = {
   
    new CustomerView().mainMenu()
  }
}
15.5.3 完成显示客户列表的功能

CustomerView.scala 功能分析:
  1. 接收4,显示客户列表
  2. 调用 CustomerService 的方法 list
  3. 需要一个 CustomerService 对象(属性)
CustomerService.sacla 功能分析:
  1. 编写一个方法 list,返回当前系统有哪些客户
  2. 客户放在哪?–> 内存 --> 可变集合 --> ArrayBuffer
1、在 Customer.sacla 中重写 toString 方法

  override def toString: String = {
   
    this.id + "\t\t" + this.name + "\t\t" + this.gender + "\t\t" + this.age + "\t\t" + this.tel + "\t\t" + this.email
  }

2、在 CustomerService.scala 中编写一个方法 list,返回当前系统有哪些客户

class CustomerService {
   
  // customers 是存放客户用的,为了方便测试,我们先进行初始化
  val customers = ArrayBuffer(new Customer(1, "tom", '男', 20, "110", "tom@sohu.com"))
  
  // 查询客户列表的方法
  def list(): ArrayBuffer[Customer] = {
   
    this.customers
  }
}

3、在 CustomerView.scala 中 调用 CustomerService 的方法 list

  val customerService = new CustomerService()

  /*
---------------------------客户列表---------------------------
编号  姓名       性别    年龄   电话            邮箱
 1    张三       男      30     010-56253825   abc@email.com
 2    李四       女      23     010-56253825    lisi@ibm.com
 3    王芳       女      26     010-56253825   wang@163.com
-------------------------客户列表完成-------------------------
   */
  def list(): Unit = {
   
    println()
    println("---------------------------客户列表---------------------------")
    println("编号\t\t姓名\t\t性别\t\t年龄\t\t电话\t\t邮箱")
    // 遍历
    // 调用 CustomerService 的方法 list
    val customers = customerService.list()
    for (customer <- customers) {
   
      // 方式一:输出
      // println(customer.id + "\t\t" + ...)
      // 方式二:重写 Customer 的 toString 方法,返回信息,并且格式化
      println(customer)
    }
    println("-------------------------客户列表完成-------------------------")
  }
15.5.4 完成添加客户的功能

CustomerView.scala 功能分析:
  1. 接收客户的信息,并封装成对应的 Customer 对象
  2. 调用 CustomerService 的方法 add
CustomerService.sacla 功能分析:
  1. 编写一个方法 add,接收一个 Customer 对象
  2. 加入到 ArrayBuffer 中
  3. 规定:以添加客户是第几个作为它的 id
1、在 Customer.sacla 中添加一个新的 辅助构造器(没有id属性)

  // 辅助构造器(没有id属性)
  def this(name: String, gender: Char, age: Short, tel: String, email: String) {
   
    this
    this.name = name
    this.gender = gender
    this.age = age
    this.tel = tel
    this.email = email
  }

2、在 CustomerService.scala 中编写一个方法 add,接收一个 Customer 对象,并设置 id 后再加入到 ArrayBuffer 中

  // 用于设置用户 id
  var customerNum = 1

  // 添加客户的方法
  def add(customer: Customer): Boolean = {
   
    // 设置 id
    customerNum += 1
    customer.id = customerNum
    // 加入到 ArrayBuffer 中
    customers.append(customer)
    true
  }

3、在 CustomerView.scala 中 调用 CustomerService 的方法 add

  /*
---------------------添加客户---------------------
姓名:张三
性别:男
年龄:30
电话:010-56253825
邮箱:zhang@abc.com
---------------------添加完成---------------------
   */
  def add(): Unit = {
   
    println()
    println("---------------------添加客户---------------------")
    println("姓名:")
    val name = StdIn.readLine()
    println("性别:")
    val gender = StdIn.readChar()
    println("年龄:")
    val age = StdIn.readShort()
    println("电话:")
    val tel = StdIn.readLine()
    println("邮箱:")
    val email = StdIn.readLine()
    // 封装对象
    val customer = new Customer(name, gender, age, tel, email)
    // 调用 CustomerService 的方法 add
    customerService.add(customer)
    println("---------------------添加完成---------------------")
  }
15.5.5 完成删除客户的功能

CustomerView.scala 功能分析:
  1. 接收客户 id,准备删除
  2. 调用 CustomerService 的 del(id)
CustomerService.sacla 功能分析:
  1. 编写一个方法 del,接收一个 id,先去调用另一个方法 findIndexById,判断
  2. 编写一个方法 findIndexById(因为我们的 ArrayBuffer 索引和 id 并不是对应的)
  3. 如果发现有,则删除,如果没有就返回 false
1、在 CustomerService.scala 中编写一个方法 del,接收一个 id,先去调用另一个方法 findIndexById,判断

  // 先根据 id 查找 用户的 index
  def findIndexById(id: Int): Int = {
   
    // 先假定一个索引,默认 -1,如果找到就改成对应的,如果没有找到就返回 -1
    var index = -1
    // 遍历 ArrayBuffer
    breakable {
   
      for (i <- 0 until customers.length) {
   
        if (customers(i).id == id) {
   
          index = i
          break()
        }
      }
    }
    index
  }

  // 再根据 id 删除用户
  def del(id: Int): Boolean = {
   
    val index = findIndexById(id)
    if (index != -1) {
   
      customers.remove(index)
      true
    } else {
   
      false
    }
  }

2、在 CustomerView.scala 中接收客户 id,调用 CustomerService 的 del(id)

  /*
---------------------删除客户---------------------
请选择待删除客户编号(-1退出):1
确认是否删除(Y/N):y
---------------------删除完成---------------------
   */
  def del(): Unit = {
   
    println()
    println("---------------------删除客户---------------------")
    println("请选择待删除客户编号(-1退出):")
    val id = StdIn.readInt()
    if (id == -1) {
   
      println("---------------------删除没有完成---------------------")
      return
    }
    println("确认是否删除(Y/N):")
    val choice = StdIn.readChar().toLower
    if (choice == 'y') {
   
      if (customerService.del(id)) {
   
        println(
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
源海客户信息管理软件(Yuanhi CIM)是源海客户关系管理系统简易篇,适用于个人用户及各类小型企业业主及营销人员使用,属于CRM、营销、办公管理类软件。 软件主要特点: 1、电脑记录并管理电话、传真、邮件、互联网络等现代网络营销手段;分类记录各项目客户沟通的记录数据。 2、方便灵活的查询、索引、数据过滤及导入数据到EXCEL,输入数据重复时自动提示所有相同信息资料。 3、三重数据安全处理,设计了权限管理、数据备份、数据加密功能,使数据得到了有效的保密和预防丢失。 4、多功能群发邮件及退订邮件功能,对正式邮件、临时邮件、导入邮件地址进行有针对性多功能分类邮件群发。 5、客户计划、事件提醒功能,可同时进行音乐和文字提醒。 6、免费在线软件自动下载升级包升级。 软件分为五大部分:系统管理、基础数据、客户信息管理、客户沟通管理、辅助功能 系统管理:主要使用对象为系统管理员;主要功能模块:软件注册,软件升级,权限分配,数据备份、修复、邮箱配置、系统选项配置等; 基础数据:主要使用对象为产品管理人员、业务员等;主要功能模块:客户基础资料、客户接触方式、公司信息、员工信息等 客户信息管理:客户信息输入、删除、修改、查询、打印、过滤、数据导入到EXCEL及简便客户邮件等 客户沟通管理:主要功能模块:客户需求、客户投诉、客户联系、客户联系、客户定单记录、邮件群发及邮件退订等; 辅助功能:主要使用对象为本软件的使用人员,它包括工具和帮助两部分,功能是方便使用人员计算、事务音乐提醒,帮助使用人员充分掌握和运用本软件的所有功能。 服务:sale@yuanhi.net
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值