文档章节

scala crm简单示例

hexiaoming123
 hexiaoming123
发布于 07/05 13:20
字数 795
阅读 10
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

环境:jdk1.8、 scala sdk 2.12.10 、maven 3.5.4

项目目录结构

代码

CustomerCrm.scala

package com.customercrm.app

import com.customercrm.view.CustomerView

/**
  * 启动类
  */
object CustomerCrm {
  def main(args: Array[String]): Unit = {
    new CustomerView().mainMenu()
  }
}

Customer.scala

package com.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
  }

  //Customer.scala //在写一个构造器
  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
  }

  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
  }
}

CustomerService.scala

package com.customercrm.service

import com.customercrm.bean.Customer

import scala.collection.mutable.ArrayBuffer
import scala.util.control.Breaks._

/**
  * 业务层
  */
class CustomerService {
  var customerNum = 1
  //customers 是存放客户的,这里我们先初始化,为了测试
  val customers = ArrayBuffer(new Customer(1, "tom", '男', 10, "110", "tom@sohu.com"))


  def list(): ArrayBuffer[Customer] = {
    this.customers
  }

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

  //在 CustomerView.scala 中写的
  def del(id: Int): Boolean = {
    val index = findIndexById(id)
    if (index != -1) {
      //删除
      customers.remove(index)
      true
    } else {
      false
    }
  }

  //根据 id 找到 index
  def findIndexById(id: Int) = {
    var index = -1 //默认-1,如果找到就改成对应,如果没有找到,就返回-1 //遍历 customers
    breakable {
      for (i <- 0 until customers.length) {
        if (customers(i).id == id) { //找到
          index = i
          break()
        }
      }
    }
    index
  }

}

CustomerView.scala

package com.customercrm.view

import com.customercrm.bean.Customer
import com.customercrm.service.CustomerService

import scala.io.StdIn


/**
  * 展示层 ,修改就是查询到id去把这条数据填充成客户刚添加的信息,没有写。
  */
class CustomerView {
  //定义一个循环变量,控制是否退出 while
  var loop = true
  //定义一个 key 用于接收用户输入的选项
  var key = ' '
  val customerService = new CustomerService()

  /* -----------------客户信息管理软件-----------------
  1添加客户
  2修改客户
  3删除客户
  4客户列表
  5退出
  请选择(1-5):_
  */
  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' => add()
        case '2' => println(" 修 改 客 户")
        case '3' => del()
        case '4' => list()
        case '5' => this.loop = false
      }
    } while (loop)
    println("你退出了软件系统...")

  }

  //在 CustomerView.scala 增加了 list 方法,并调用
  def list(): Unit = {
    println()
    println("---------------------------客户列表---------------------------")
    println("编号\t\t 姓名\t\t 性别\t\t 年龄\t\t 电话\t\t 邮箱")
    //for 遍历
    //1.获取到 CustomerSerivce 的 customers ArrayBuffer
    val customers = customerService.list()
    for (cutomer <- customers) {
      //重写 Customer 的 toString 方法,返回信息(并且格式化)
      println(cutomer)
    }
    println("-------------------------客户列表完成-------------------------")
  }

  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(customer)
    println("---------------------添加完成---------------------")
  }


  def del(): Unit = {
    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("---------------------删除完成---------------------")
        return
      } }
    println("---------------------删除没有完成---------------------") }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>scalademo1</groupId>
    <artifactId>scalademo1</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>
hexiaoming123

hexiaoming123

粉丝 8
博文 153
码字总数 139133
作品 0
东城
程序员
私信 提问
加载中
请先登录后再评论。
在多个浏览器上运行脚本--Queen

假设你想和朋友们玩这么个游戏:你写下某个数字,然后让朋友们猜你写的是什么数字。你的朋友们将不断的给你一些猜测的数字,直到猜中为止。 现在想象你的朋友都是使用的浏览器,这个游戏就相...

匿名
2013/01/24
4.7K
1
Javascript图元绘制库--ternlight

基于HTML CANVAS API的Javascript库,提供在HTML页面上绘制图元——如流程图的能力。 目前已支持简单的矩形图元和图元间的连线(直线、直角连线两种),拖拽图元等能力。 该javascript librar...

fancimage1
2013/02/07
6.3K
1
JavaScript 声效库--SFX.js

sfx.js 是一个简单的声效封装 JavaScript 包。示例: var sfxObject = new SFX( 'sound_effects/{{type}}' ); 支持: Chrome: OGG + MP3 Opera: OGG Firefox: OGG Safari: MP3 IE9: MP3......

匿名
2013/02/18
1.1K
0
REST/HTTP 工具包--Spray

Spray 是一个开源的 REST/HTTP 工具包和底层网络 IO 包,基于 Scala 和 Akka 构建。轻量级、异步、非堵塞、基于 actor 模式、模块化和可测试是 spray 的特点。 示例代码: val responses: F...

匿名
2013/02/20
7.2K
0
N简单CMS

N简单CMS能够让网站开发者更快速、灵活、简单的开发网站。 N简单CMS有以下特点: 更简单和自由的模板标签调用 专注于人性化的管理和操作 基于完全php5框架Kohana2.3.4开发 资源调用和消耗更低...

匿名
2013/02/26
3.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

DCASE2020之声学场景分类优秀方案总结 - 知乎

DCASE(Challenge on Detection and Classification of Acoustic Scenes and Events),即声学场景和事件检测及分类竞赛,是世界范围内权威的声学比赛,从2013年至今已经成功举办了六届,随着越...

osc_sb30h1xb
11分钟前
0
0
百度资深JAVA程序员开源5000 页 Java 人必备学习手册开发下载!

今天给大家分享一套百度资深JAVA程序员开源在github的 5000 页的 Java 学习手册,新鲜出炉!此手册内容专注 Java技术,包括 JavaWeb,SSM,Linux,Spring Boot,MyBatis,MySQL,Nginx,Git...

倪升武
今天
0
0
自媒体多平台管理工具,管理多个账号一键发布

现在绝大多数人都认为自媒体账号运营操作起来很麻烦,尤其是对那些做收益的工作室来说,一个人管理那么多账号,登陆起来也很麻烦,在你认为很麻烦的时候,其实我们可以借助一些工具来帮助我们...

osc_e4tx8h6g
12分钟前
0
0
CVE-2017-0261及利用样本分析

CVE-2017-0261及利用样本分析 注意事项:1.本篇文章由Gcow安全团队复眼小组的ERFZE师傅原创,未经许可禁止转载2.本篇文章一共2313字,39张图,预计用时20分钟3.文中提及的方法仅供参考学习,若用在...

辞令_WhITECat安全团队
今天
0
0
fatal error: openssl/evp.h: 没有那个文件或目录

在陆佳华《嵌入式系统软硬件协同设计实战指南 第2版》一书的第13章节 编译U-boot时会遇到2个错误。原因很简单,就从一开始的错误提示着手: fatal error: openssl/evp.h: 没有那个文件或目录...

osc_8nnvoyb1
14分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部