概述
文章目录
- 分析
- 项目功能实现效果
- (1)添加客户
- (2)修改客户
- (3)删除客户
- (4)客户列表
- (5)查询客户
- (6)筛选客户
- (7)排序客户
- (8)退出系统
- 代码
分析
(1)在列表中输入没有的选项,会跳出重新输入选修。
(2)输入1时添加客户,会跳出输入客户姓名、性别、年龄、电话和邮箱。
(3)输入2时是修改客户,跳出每个客户信息字段,进行修改,如若不想修改的字段可以直接回车。
(4)输入3时是删除客户,跳出输入要删除客户编号的界面,输入需要删除的编号,会再次让你确定是否要删除。
(5)输入4时是显示客户列表,显示所有的客户信息,并且可以自动统计总共的人数。
(6)输入5时查询客户,有根据id和根据姓名查询,并且在无此人的情况下显示查无此人。
(7)输入6时是筛选客户,可以根据性别和年龄查询,根据性别查询是输入0和1,输入0时筛选出女性,输入1时筛选出男性。根据年龄查询时,第一次跳出输入最小年龄,第二次跳出输入最大年龄。然后会筛选出这个区间的人。
(8)输入7时是排序客户,选择根据按姓名拼音还是按年龄大小,若按姓名拼音,选择按a-z排还是按z-a排。选择按年龄大小排,则可以选择升序排还是选择降序排。
(9)输入8时退出系统。
项目功能实现效果
(1)添加客户
(2)修改客户
(3)删除客户
(4)客户列表
(5)查询客户
(6)筛选客户
(7)排序客户
(8)退出系统
代码
package info.info
object AppStart {
def main(args: Array[String]): Unit = {
(new CustomerView).meau()
}
}
package info.info
class Customer {
//定义客户列表的标签,即所有的变量
var id: Int = _
var name: String = _
var sex: Char = _
var age: Short = _
var tel: String = _
var mail: String = _
def this(id: Int, name: String, sex: Char, age: Short, tel: String, mail: String) {
//调用变量,给其传入值
this
this.id = id
this.name = name
this.sex = sex
this.age = age
this.tel = tel
this.mail = mail
}
override def toString: String = {
//重写方法,排成列表的形式
this.id + "tt" + this.name + "tt" + this.sex + "tt" + this.age + "tt" + this.tel + "tt" + this.mail
}
}
package info.info
import scala.collection.mutable.ListBuffer
import scala.io.StdIn
class CustomerService {
//定义一个可变列表
var customers = new ListBuffer[Customer]()
var id = 0
//用append方法进行添加内容,便于后面的数据测试,但是和控制台操作的数据是没有联系的
customers.append(new Customer(1,"xiaohong",'男',23,"180","www@123.com"))
customers.append(new Customer(2,"dongdong",'女',21,"180","www@123.com"))
customers.append(new Customer(5,"yuyu",'女',21,"180","www@123.com"))
customers.append(new Customer(3,"honghong",'男',3,"180","www@123.com"))
customers.append(new Customer(4,"liuliu",'男',32,"180","www@123.com"))
// 显示客户列表
def showList(customers: ListBuffer[Customer]): Unit = {
//对customers的数据循环传入item,并获取输出
// 查看总共有几个人,即调用获取列表长度的方法
for (item <- customers) {
println(item)
}
println("当前有"+customers.length+"位客户")
}
// 添加客户
def addClient(): Unit = {
id += 1 //定义添加客户时,id都是每次加1的
print("请输入客户姓名:")
val name = StdIn.readLine()//获取控制台输入的内容
print("请输入客户性别:")
val sex = StdIn.readChar()
print("请输入客户年龄:")
val age = StdIn.readShort()
print("请输入客户电话:")
val tel = StdIn.readLine()
print("请输入客户邮箱:")
val mail = StdIn.readLine()
customers.append(new Customer(id, name, sex, age, tel, mail))
//添加到列表的字段下
}
// 查找客户
def findIndexById(id: String): Int = {
var index = 0
//遍历列表
for (item <- customers) {
//判断所输入的id是否和列表遍历出的id相同,如若相同,则返回其值
if (item.id.toString.equals(id)) return index
//或者输入姓名时,判断是否与遍历的姓名相同,如果相同返回其值
else if(item.name.toString.equals(id)) return index
index+=1 //index不断进行循环索引
}
-1//索引出错后进行终止此操作
}
// 删除客户
def deleteCli(index: Int): Unit = {
customers.remove(index)//调用移除方法
}
// 修改客户信息
def updateCli(index: Int) {
//定义按编号的修改
val cus = customers(index)
//引用的是name字段,用来候插入姓名
print(s"姓名(${cus.name}):")
//定义名字的修改,判断如果原来的列表名字不是空的,那么就把控制台的名字覆盖原来的
val name = StdIn.readLine()
if (name != "") cus.name = name
//下面的其他字段的修改和名字的一样
print(s"性别(${cus.sex}):")
val sex = StdIn.readLine()
if (sex != "") cus.sex = sex.toCharArray()(0)
print(s"年龄(${cus.age}):")
val age = StdIn.readLine()
if (age != "") cus.age = age.toShort
print(s"电话(${cus.tel}):")
val tel = StdIn.readLine()
if (tel != "") cus.tel = tel
print(s"邮箱(${cus.mail}):")
val mail = StdIn.readLine()
if (mail != "") cus.mail = mail
//调用update方法,更新成功
customers.update(index, cus)
println("修改成功!")
}
// 查询客户
def serchCli(way: Int) {
// 根据id查询
if (way == 1) {
print("请输入id:")
val id = StdIn.readInt()
for (item <- customers) {
//从列表中遍历,若找出id和输入的相同则输出ta所有字段信息
if (item.id == id) {
println("编号tt" + "姓名tt" + "性别tt" + "年龄tt" + "电话tt" + "邮箱")
println(item)
}
}
} else if (way == 2) {
// 根据姓名查询
print("请输入名字:")
val name = StdIn.readLine()
//从列表中遍历,若找出姓名和输入的姓名相同则输出ta所有字段信息
for (item <- customers) {
if (item.name.contains(name)) {
println("编号tt" + "姓名tt" + "性别tt" + "年龄tt" + "电话tt" + "邮箱")
println(item)
}
}
}
//输入的无关信息则输出有误
else {
println("输入有误!")
}
}
//筛选客户
//通过性别
def filterBySex(): Unit ={
println("请输入需要查询的性别(0/1)")
val sex = StdIn.readLine()
var customersBySex=customers
//定义了0为女性,输入0时时获取女性的信息,女性字段信息没有,则返回没有筛选条件满足
if(sex.equals("0")){
customersBySex=customers.filter(x=> x.sex!='男')
if(customersBySex.length==0){
println("没有筛选满足条件的客户")
return
}
//调用showList方法展现列表
showList(customersBySex)
}else if (sex.equals("1")){
//同理可得,这里选取的是男性的信息
customersBySex=customers.filter(x=> x.sex!='女')
if(customersBySex.length==0){
println("没有筛选满足条件的客户")
return
}
//展现列表
showList(customersBySex)
}else{
//非正常值输出
println("输入有误")
}
}
//通过年龄
def filterByAge(): Unit ={
println("请输入需要查询的年龄区间")
//年龄按区间查询
println("请输入第一个数")
val i1 = StdIn.readInt()
println("请输入第二个数")
val i2 = StdIn.readInt()
var customersByAge=customers
//做出判断,第二次输入年龄必须比第一次输入的大
if(i1<i2){
customersByAge=customers.filter(x=>{
//过滤出此区间要求的年龄
x.age>=i1 && x.age<=i2
})
//判断没有年龄可取时,那么就输出没有此筛选要求的客户
if(customersByAge.length==0){
println("没有筛选满足条件的客户")
return
}
//调用方法展现列表
showList(customersByAge)
}else{
//否则过滤出的时相反的信息
customersByAge=customers.filter(x=>{
x.age<=i1 && x.age>=i2
})
//判断没有年龄可取时,那么就输出没有此筛选要求的客户
if(customersByAge.length==0){
println("没有筛选满足条件的客户")
return
}
showList(customersByAge)
}
}
//排序客户
//根据姓名拼音排序
def sortByName(): Unit ={
println("请输入拼音排序方式,1为a-z,2为z-a")
val id = StdIn.readLine()
var customers1 = customers
//定义1为a-z排序,2为z-a排序
if(id.equals("1")){
//利用sortWith制定规则排序,内部发送了一个ajax请求,
// success:function(_){},表示返回数据成功后执行的函数,_表示服务器返回的字符数据
//表示返回一个新字符串,它是此字符串的一个子字符串
customers1=customers.sortWith(_.name.substring(0,1)<_.name.substring(0,1))
showList(customers1)
}else if(id.equals("2")){
//同理可得
customers1=customers.sortWith(_.name.substring(0,1)>_.name.substring(0,1))
showList(customers1)
}else{
println("输入错误")
}
}
//根据年龄大小展示客户信息
def sortByAge(): Unit ={
println("请输入年龄排序方式,1为升序,2为降序")
val id = StdIn.readLine()
var customers1 = customers
//定义输入为1时是升序排序
if(id.equals("1")){
//与上思想同理
customers1=customers.sortWith(_.age<_.age)
showList(customers1)
//定义输入2时是降序
}else if(id.equals("2")){
customers1=customers.sortWith(_.age>_.age)
showList(customers1)
}else{
println("输入错误")
}
}
}
package info.info
import scala.io.StdIn
class CustomerView {
var customerService = new CustomerService()
def meau(): Unit = {
var flag = true
do {
println("-----------------客户信息管理软件-----------------")
println(" 1 添 加 客 户 ")
println(" 2 修 改 客 户 ")
println(" 3 删 除 客 户 ")
println(" 4 客 户 列 表 ")
println(" 5 查 询 客 户 ")
println(" 6 筛 选 客 户 ")
println(" 7 排 序 客 户 ")
println(" 8 退 出 ")
println("请选择(1-8): ")
var num = StdIn.readLine()
//定义输入的每一个数字调用的功能
num match {
case "1" => addClient()
case "2" => updateCli()
case "3" => deleteCli()
case "4" => showList()
case "5" => searchCli()
case "6" => filterCli()
case "7" => sortCli()
case "8" => exitApp()
//若都不是上面的情况,弹出重新选择的语句
case _ =>println("请重新输入选择:")
}
} while (flag)
// 退出程序
def exitApp(): Unit = {
print("确认是否退出Y/N:")
val r = StdIn.readLine()
if (r.equals("Y") || r.equals("y")) {
flag = false
println("成功退出系统")
}else if(r.equals("N")|| r.equals("n")){
flag = true
//若非以上两种输入的情况,重新返回确认是否退出的语句
}else{
exitApp()
}
}
}
// 显示客户列表
def showList(): Unit = {
println("编号tt" + "姓名tt" + "性别tt" + "年龄tt" + "电话tt" + "邮箱")
customerService.showList(customerService.customers)
}
// 添加客户
def addClient(): Unit = {
customerService.addClient()
//调用上面addClient方法,使其选择1时才能用此功能
}
// 删除客户
def deleteCli() {
//获取列表长度,并判断是否为0,若为0,即列表无任何内容
if(customerService.customers.length==0) println("没有可修改客户")
else{
print("请输入要删除的客户编号(-1退出):")
val id = StdIn.readLine()
//如果输入的其他字符,则会重新返回列表,不会出现报错退出
if (id == -1) {
return
}
//调用上一个查询的方法,并判断这个是存在的,才会弹出确认是否删除的字段
val index = customerService.findIndexById(id)
if (index != -1) {
print("确认是否删除Y/N:")
//在控制台输入Y或y,并判断是不是和Y或者y是一样的
// 是则进行删除,并输出删除成功字段,否则就是删除失败
val r = StdIn.readLine()
if (r.equals("Y") || r.equals("y")) {
customerService.deleteCli(index)
println("删除成功!")
return
//与上类似
}else if(r.equals("N") || r.equals("n")){
println("删除失败!")
return;
}else{
//定义变量为真值,当输入的值是可行的,做出一个再次确认窗口
//可行的代表就是:以下内容判断输入的Y或y还是N或n
//最后定义Y或y表示删除,N或n表示不删除
var flag=true
while (flag){
println("确认是否删除退出(y/n)")
val r2 = StdIn.readLine()
if(r2.equals("y") || r2.equals("Y")) {
customerService.deleteCli(index)
println("删除成功!")
flag = false;
}else if(r2.equals("n") || r2.equals("N")) {
flag = false
println("删除失败!")
}
}
}
}else{
println("该客户不存在")
}
}
}
// 修改客户信息
def updateCli(): Unit = {
//判断其列表是否为空,如果空,那么另外输出没有可修改客户
if(customerService.customers.length==0) println("没有可修改客户")
else{
print("请输入要修改的客户的编号或姓名:")
val id = StdIn.readLine()
//获取其编号id
val index = customerService.findIndexById(id)
//若不存在此id或者名字的则输出查无此人
if (index == -1) {
println("查无此人!")
return
}
customerService.updateCli(index)
}
}
// 查询客户
def searchCli(): Unit = {
print("请选择查询方式(1:根据id , 2:根据名字)")
val way = StdIn.readInt()
customerService.serchCli(way)//调用上面的方法,使输入的5可以调用这个功能
}
//筛选客户
def filterCli(): Unit ={
println("请选择筛选方式(1:根据性别,2:根据年龄)")
val id = StdIn.readLine()
//判断是1时获取性别信息,否则获取年龄信息,若是无相关内容则重新输入或者输入y/n退出
if(id.equals("1")){
customerService.filterBySex()
}else if(id.equals("2")){
customerService.filterByAge()
}else{
println("输入有误,请重新输入,或退出(y/n)")
val id2 = StdIn.readLine()
if(id2.equals("y")||id2.equals("Y")) return
else filterCli()
}
}
//排序客户
def sortCli(): Unit ={
println("请输入您要排序的方式,1:根据姓名拼音,2:根据年龄大小")
val id = StdIn.readLine()
//定义1为按名字拼音查询,2是按年龄大小
if(id.equals("1")){
customerService.sortByName()
}else if(id.equals("2")){
customerService.sortByAge()
}else{
//输入非正常值时,报出以下内容
println("输入有误,请重新输入,或退出(y/n)")
val id2 = StdIn.readLine()
if(id2.equals("y")||id2.equals("Y")) return
else sortCli()
}
}
}
最后
以上就是俊秀板凳为你收集整理的scala实现客户信息管理系统的全部内容,希望文章能够帮你解决scala实现客户信息管理系统所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复