尚硅谷Scala (15)

该项目是一个基于文本界面的客户信息管理软件,使用Scala语言实现,包括客户对象的增删改查功能,以及主菜单交互。Customer类包含关键属性如id,name,gender等。项目通过循环结构实现主菜单,允许用户选择不同操作,提供添加、删除、修改客户和查看客户列表的功能。
摘要由CSDN通过智能技术生成

十五、项目-scala 客户信息管理系统

15.1 项目开发流程

 15.2 项目需求分析

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

15.3 项目界面

主界面

添加客户

修改客户

删除

客户列表

15.4 项目设计-程序框架图

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

15.5 项目功能实现

15.5.1 项目功能实现-完成 Customer

根据需求文档或者页面,我们写出了 Customer
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 项目功能实现-显示主菜单和完成退出软件功能

功能说明

思路分析
完成显示主菜单 , 退出
1. 将主菜单的显示放入到 while
2. 用户可以根据输入,选择自己的操作
3. 如果输入 5 退出
代码实现
class CustomerView {
  //定义一个循环变量,控制是否退出while
  var loop =true
  //定义一个key用于接收用户输入的选项
  var key= ' '

  def mainMenu()= {
    do {
      println("-----------------客户信息管理软件-----------------")
      println("                 1 添 加 客 户")
      println("                 2 修 改 客 户")
      println("                 3 删 除 客 户")
      println("                 4 客 户 列 表")
      println("                 5 退       出")
      print("请选择(1-5):")
      key = StdIn.readChar()

      key match {
        case '1' => println(" 添 加 客 户 ")
        case '2' => println(" 修 改 客 户 ")
        case '3' => println(" 删 除 客 户 ")
        case '4' => println(" 客 户 列 表 ")
        case '5' => println(" 退       出 ")
        case _ => println("输入错误,请重新输入")
      }
    } while (loop)
    {
      println("你退出了软件系统...")
    }
  }
}

主函数 

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

15.5.3 项目功能实现-完成显示客户列表的功能

功能分析

分析思路

 

 代码实现

  override def toString: String = {
    this.id+"\t\t\t"+this.name+"\t\t\t"+this.gender+"\t\t\t"+this.age+"\t\t\t"+this.tel+"\t"+this.email
  }
class CustomerService {
  //customers时存放客户的,这里我们先初始化,为例测试
  val customers =ArrayBuffer(new Customer(1,"tom",'男',18,"12345678","12345678@qq.com"))

  def list():ArrayBuffer[Customer]={
    this.customers
  }
}
在CustomerView中写
 def list()= {
    println("---------------------------客户列表---------------------------")
    println("编号\t\t姓名\t\t性别\t\t年龄\t\t电话\t\t邮箱")
    //for遍历
    //1.获取到CustomerService 的customers ArrayBuffer
    val customers = customerService.list()
    for (customer <- customers) {
      println(customer)
    }
  }

15.5.4 项目功能实现-添加客户的功能

功能说明

 思路分析

代码实现 

  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
  }
在CustomerService类中写  
var customerNum=1
  //添加客户
  def add(customer: Customer):Boolean={
    //设置id
    customerNum+=1
    customer.id=customerNum
    //加入到customers
    customers.append(customer)
    true
  }
在CustomerView中写
 //添加用户
  def add()={
    println()
    println("---------------------添加客户---------------------")
    print("姓名:")
    val name =StdIn.readLine()
    print("性别:")
    val gender =StdIn.readChar()
    print("年龄:")
    val age =StdIn.readShort()
    print("电话:")
    val tel =StdIn.readLine()
    print("邮件:")
    val email =StdIn.readLine()

    //构建一个对象
    val customer = new Customer(name, gender, age, tel, email)
    customerService.add(customer)
    println()
  }

15.5.5 项目功能实现-完成删除客户的功能

功能说明

 思路分析

代码实现

在CustomerService类中
  //根据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
  }

  //删除操作
  def del(id:Int):Boolean={
    val index = findIndexById(id)
    if(index!= -1){
      customers.remove(index)
      true
    }else{
      false
    }
  }
在CustomerView类中  
  //删除操作
  def del():Unit = {
    println()
    println("---------------------删除客户---------------------")
    println("请选择待删除客户编号(-1退出):")
    val id = StdIn.readInt()
    if (id == -1) {
      println("---------------------删除没有完成---------------------")
      return
    }
    println("确认是否删除(Y/N):")

    //要求用户在退出时提示 " 确认是否删除(Y/N):", 用户必须输入y/n,否则循环提示
    var choice=' '
    breakable{
      do{
        choice=StdIn.readChar().toLower
        if(choice == 'y' || choice == 'n'){
          break()
        }
        println("确认是否删除(Y/N):")
      }while(true)
    }
    if(choice== 'y'){
      if(customerService.del(id)){
        println("---------------------删除完成---------------------");
        return
      }
    }
    println("---------------------删除没有完成---------------------");
  }

 15.5.6 项目功能实现-完善退出确认功能

def quit(): Unit = {
    println("确认是否退出(Y/N):")
    var choice = ' '
    breakable {
      do {
        choice = StdIn.readChar().toLower
        if (choice == 'y' || choice == 'n') {
          break()
        }
        println("你的输入有误,请确认是否退出(Y/N):")
      } while (true)
    }
    if(choice=='y') this.loop=false  else this.loop=true
  }

15.5.7 项目功能实现-完成修改客户的功能

15.5.8 项目功能实现-查询客户的功能

源海客户信息管理软件(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、付费专栏及课程。

余额充值