十五、项目-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 项目功能实现-查询客户的功能