我是靠谱客的博主 文静星星,最近开发中收集的这篇文章主要介绍基于Scala设计简易的会员卡管理系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 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设计简易的会员卡管理系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部