概述
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性,以Scala语言来设计一个简易的系统来进一步巩固和学习其特性。
import scala.io.StdIn
import scala.collection.mutable.{Map, Set}
// 可以在任何地方引入 可变集合
class root {
var map1 =Map("Root"->0)
var map2 =Map("Root"->"超级用户")
val user_ac_numbers=Set("Root@163.com")
def get_ac_numbers_Email: Unit ={//因为这边我在运行的时候发现集合的内容在add之后,并没更新到调用filter函数的对象,所以就多此一举
var ac_numbers_Email=user_ac_numbers.filter(x => x.contains("@"))//利用filter过滤出所有以邮箱注册的账号
println(s"系统存在的账号<以邮箱注册>:${ac_numbers_Email}")
}
def total_account_quota(p:user):Unit={
map1=map1+(p.name->p.Account_balance)
println(map1)
}
def set_account_level(p:user): Unit ={
total_account_quota(p)
map1.keys.foreach(i=>{//使用foreach函数定义用户类型的映射
if(map1(i)<0) map2+=i->"欠费用户" else if(map1(i)<100000) map2+=i->"普通用户" else map2+=i->"VIP用户"
})//根据账户金额的大小设置等级,因为本项目有类似于信用卡的存储及提取,如果充值则类似于信用卡的溢缴款,若提取则类似消费信用卡
println(map2)
}
def get_user_level(): Array[String]= {//flatMap函数及映射的相关内容查询输入用户的等级
print("请输入您要查询的用户(并以空格隔开):")
val name:String = StdIn.readLine().toString
val names=name.split(" ")
names.flatMap(map2.get(_))
}
}
import scala.io.StdIn
//用户可以选择使用姓名加电话号码注册,系统将会把电话号码当成账号
//选择姓名加邮箱信息注册,系统则将会把邮箱信息作为账号
//如果姓名加电话号码加邮箱信息注册,系统则优先将电话号码作为账号
//用户在注册时若不设置密码,则系统会给予账号默认密码123456
class user (val name:String,val telnumber:String="NULL",val email_number:String="NULL"){
var ac_number="NULL"
var passwd: String="123456"
var Account_balance=0
def this (name: String, telnumber:String,email_number:String,passwd:String) {
this(name,telnumber,email_number)
this.passwd=passwd
}
ac_number=if(this.telnumber=="NULL") email_number else telnumber
def select_self_information: Unit = {
println(s"您的姓名为:${name}//您的账号为:${ac_number}//您的密码为:${passwd}")
}
def select_Account_balance: Unit = {//查询账户所剩金额
println(s"尊敬的 ${name} 用户,您的账号:${ac_number},当前账户所剩金额为:${Account_balance}元")
}
def Recharge: Unit = {//充值操作
println("-------------------------------------------------------------")
select_Account_balance
print("请输入您要充值的金额:")
val v1:Int = StdIn.readLine().toInt//通过使用闭包的知识内容实现账户余额的变化操作
val Account_balance_recharge = (a: Int) =>Account_balance=Account_balance+a
Account_balance_recharge(v1)
select_Account_balance
}
def Withdrawal: Unit = {//提现操作
select_Account_balance
print("请输入您要提现的金额:")
val v2:Int = StdIn.readLine().toInt
val Account_balance_Withdrawal = (b: Int) =>Account_balance=Account_balance-b
Account_balance_Withdrawal(v2)
select_Account_balance
println("-------------------------------------------------------------")
}
}
import scala.collection.mutable.Map
import scala.io.StdIn
object run {
def main(args: Array[String]): Unit = {
println(" -----------------------------欢迎进入------------------------------------------")
println("| 1、进入项目 |")
println("| 2、退出项目 |")
println(" -----------------------------欢迎进入------------------------------------------")
println("-------------------------显示部分已注册的用户-------------------------------------")
val r = new root
var p1=new user("Nico","17396583307")//以姓名+电话方式注册用户
p1.select_self_information//用户注册完可以查询自己的信息
r.user_ac_numbers.add(p1.ac_number)//利用集合的不重复性,来获取系统中所有用户的账号信息
var p2=new user("YOYO",email_number="198400742@qq.com")//以姓名+邮箱方式注册用户
r.user_ac_numbers.add(p2.ac_number)
var p3=new user("Alex","13459562539","1776717614@qq.com","demodemo")//姓名+电话+邮箱方式注册用户
r.user_ac_numbers.add(p3.ac_number)
p3.select_self_information
println("请选择你要操作的板块:")
val e:String = StdIn.readLine()
e match{//模式匹配进行模块选择
case "1"=>
println("-----------------------------用户操作板块---------------------------------------")
p3.Recharge//用户的充值操作
p3.Withdrawal//用户的提现操作
p1.Recharge
p2.Recharge
p3.Recharge
println("-----------------------------后台操作板块---------------------------------------")
println(s"系统存在的账号:${r.user_ac_numbers}")//获取系统中已注册的账户
r.get_ac_numbers_Email//获取系统中已注册的账户(以邮箱为账号)
r.set_account_level(p1)//根据用户目前账户金额进行设置用户类型
r.set_account_level(p2)
r.set_account_level(p3)
println(r.get_user_level().mkString(","))//根据输入所要查询的用户,显示其的用户类型
case "2"=>
println("再见!感谢您的使用!")
System.exit(-1)
}
}
}}
运行结果截图:
本次项目所用到的知识点包括构建多个辅助构造器、闭包、集合、高阶函数、映射等等,利用其各自的特性来最有效地实现目标功能,特别是在使用高阶函数的相关内容来解决目标功能实现的过程,通过不断利用多种高阶函数,不仅降低了整体项目的代码量,而且在调用时更加地方便。例如foreach、flatMap、filter这三个常见的高阶函数,对于数据的遍历及数据的筛选过滤都十分地快捷简便,对于该系统的不足点,我个人认为缺少抽象类及抽象方法、隐式转换等的相关内容,虽然整个项目大体流程并没有太大的错误,但是对于整个系统细节的把控还是不够到位,给予人一种不能自己灵活运用系统各个功能的感觉,系统的功能缺少“灵活性”。
最后
以上就是文静星星为你收集整理的基于Scala设计简易的会员卡管理系统的全部内容,希望文章能够帮你解决基于Scala设计简易的会员卡管理系统所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复